无设备树platform设备驱动实验:platform驱动注册代码框架测试

一.  简介

前面两篇文章中,一篇实现 platform设备注册代码实现,文章如下:

无设备树platform设备驱动实验:platform设备注册代码实现-CSDN博客

一篇文章实现了 platform驱动注册代码框架,文章如下:

无设备树platform设备驱动实验:platform驱动注册代码框架实现-CSDN博客

本文测试设备与驱动是否匹配成功。

验证匹配成功的方法:当都加载了设备注册模块与驱动注册模块后,是否会执行 platform_driver的 probe 函数

二. 无设备树platform设备驱动实验:platform驱动注册代码框架测试

1. 拷贝设备注册模块与驱动注册模块

注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统文件存放在 ubuntu系统所设置的 nfs目录下!而开发板通过 nfs服务加载系统文件。

打开ubuntu系统,进入 16_platform工程目录下,拷贝 设备注册模块与驱动注册模块到开发板系统文件目录下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/16_platform$ sudo cp platform_leddevice.ko platform_leddriver.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

2.  开发板加载测试

开发板上电后进入系统 /lib/modules/4.1.15/目录下,确认 驱动文件是否已经存在:

可以看出,设备注册模块 platform_leddevice.ko 与 驱动注册模块 platform_leddriver.ko都已经存在。

(1)  加载测试驱动模块

注意:如果选择使用 "modprobe" 命令加载驱动模块,则在驱动程序第一次加载时首先运行 "depmod" 命令!

这里因为 platform_leddevice.ko 前面已经加载过一次,而 platform_leddriver.ko没加载过。

所以,需要运行 "depmod"命令(为了platform_leddriver.ko):

首先,加载platform_leddevice.ko 设备注册模块,然后,再加载platform_leddriver.ko驱动注册模块:

可以看出,当在继加载platform_leddevice.ko 后,再加载 platform_leddriver.ko后,打印了 probe函数的内部打印信息,说明开发板上已加载的设备与后面的驱动匹配成功。

注意:这里也可以先加载 platform_leddriver.ko后,再加载 platform_leddevice.ko ,也是会打印 probe函数的打印信息的。说明后来加载的驱动模块匹配了已加载的设备。

(2)  查看  /sys/bus/platform/devices目录与 /sys/bus/platform/drivers目录

查看 /sys/bus/platform/devices:

进入/sys/bus/platform/devices目录下,查看是否存在加载的 platform设备:

可以看出,已经存在所加载的 platform设备,设备名为 imx6ull_led,正是我在platform设备注册时 platform_device的成员 name值。

查看 /sys/bus/platform/drivers:

进入/sys/bus/platform/devices目录下,查看是否存在加载的 platform驱动:

可以看出,已经存在所加载的 platform驱动,驱动名为 imx6ull_led,正是我在platform驱动注册时 platform_driver的成员 .driver的 name值。

(3) 卸载驱动模块

卸载驱动模块时,可以确定在卸载驱动模块时,相应的释放资源函数 是否执行。

可以看出,卸载设备注册驱动与 驱动注册驱动都不存在问题。

注意:可以进行反复多次的加载与卸载驱动模块测试,确保驱动代码真正不存在问题。

接下来继续 向 platform_driver驱动注册框架中加入 Led灯操作部分(包括 IO初始化以及led灯亮灭,字符设备驱动框架)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/465378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Google云计算原理与应用(三)

目录 五、分布式存储系统Megastore(一)设计目标及方案选择(二)Megastore数据模型(三)Megastore中的事务及并发控制(四)Megastore基本架构(五)核心技术——复制…

Mac屏幕录制编辑软件

以下是一些Mac平台上受到推荐和好评的屏幕录制编辑软件: OBS Studio(免费且开源): OBS 是一款功能强大的免费屏幕录制工具,不仅限于游戏直播,也适用于各种屏幕录制需求。它允许用户捕获屏幕、摄像头、音频&…

Python常见报错疑难杂症的解决思路解决方案

目录快速跳转 一、TypeError:类型错误,对象用来表示值的类型非预期类型时发生的错误 二、AttributeError:属性错误,特性引用和赋值失败时会引发属性错误 三、NameError:试图访问的变量名不存在。 四、错误使用标点符…

设计模式:智能合约的经典设计模式及解析

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 总而言之,智能合约实现上要达到的目标是:完备的业务功能、精悍的代码逻辑、良好的模块抽象…

JavaSE、JavaEE和Jakarta EE的历史、区别与联系

JavaSE、JavaEE和Jakarta EE是Java平台中的三个重要组成部分,它们各自承担着不同的角色,同时也有着密切的联系。在理解它们之间的历史、区别和联系之前,我们首先需要了解它们的基本概念。 JavaSE(Java Standard Edition&#xff…

论文阅读_时序模型_iTransformer

1 2 3 4 5 6 7 8英文名称: ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING 中文名称: ITRANSFORMER:倒置Transformers在时间序列预测中的有效性 链接: https://openreview.net/forum?idX6ZmOsTYVs 代码: https://github.com/thum…

ARM Cortex R52内核 01 概述

ARM Cortex R52内核 01 Introduction 1.1 Cortex-R52介绍 Cortex-R52处理器是一种中等性能、有序、超标量处理器,主要用于汽车和工业应用。它还适用于各种其他嵌入式应用,如通信和存储设备。 Cortex-R52处理器具有一到四个核心,每个核心实…

CCD视觉检测:揭开未来质量检测新篇章——康耐德智能

随着科技的不断进步,传统的人工检测方式已经无法满足现代工业生产对效率和精度的双重需求。而CCD视觉检测技术的出现,正为我们提供了一种全新的解决方案。那么,什么是CCD视觉检测?它又能为我们检测哪些方面的内容呢?今…

爬虫UnicodeEncodeError错误解决

代码演示: import requests # 程序入口 if __name__ __main__:# 1.确定哦urlurl_ https://www.baidu.com/ # 以字符串的形式呈现# 2.发送网络请求response_ requests.get(url_)# 保存with open(baidu.html, w) as f:f.write(response_.text)这里会出现报错&…

微调大型语言模型进行命名实体识别

大型语言模型的目标是理解和生成与人类语言类似的文本。它们经过大规模的训练,能够对输入的文本进行分析,并生成符合语法和语境的回复。这种模型可以用于各种任务,包括问答系统、对话机器人、文本生成、翻译等。 命名实体识别(Na…

Vue 3响应式系统详解:ref、toRefs、reactive及更多

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

图解Kafka架构学习笔记(一)

本文参考尚硅谷大数据技术之Kafka。 消息队列 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息…

【JS】html字符转义

需求 将html转为字符串将html字符串转义&#xff0c;比如<div>转为<div> 码 /*** html标签字符转义* param {Stirng} str 要转换的html字符* returns String 返回转义的html字符串*/ const elToStr str > str.replaceAll(<, <).replaceAll(>, >)…

sadtalker-api/

———— 下载sadtalker工程文件&#xff0c;包括844个模型 。。。。。。。。。。。。。。。。 配置环境&#xff1a; pip源&#xff0c;设置&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple anaconda prompt, 进入命令行 how在 …

8-图像缩放

其实&#xff0c;就是开辟一个zoomwidth&#xff0c;zoomheight的内存&#xff0c;再分别赋值即可。 void CDib::Scale(float xZoom, float yZoom) { //指向原图像指针 LPBYTE p_data GetData(); //指向原像素的指针 LPBYTE lpSrc; //指向缩放图像对应像素的指针 LPBYTE lpDs…

【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性

《Flink SQL 基础概念》系列&#xff0c;共包含以下 5 篇文章&#xff1a; Flink SQL 基础概念&#xff08;一&#xff09;&#xff1a;SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念&#xff08;二&#xff09;&#xff1a;数据类型Flink SQL 基础概念&am…

算法练习:前缀和

目录 1. 一维前缀和2. 二维前缀和3. 寻找数组中心下标4. 除自身以外数组的乘积5. !和为k的子数字6. !和可被k整除的子数组7. !连续数组8. 矩阵区域和 1. 一维前缀和 题目信息&#xff1a; 题目链接&#xff1a; 一维前缀和思路&#xff1a;求前缀和数组&#xff0c;sum dp[r] …

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第六:trans_nullmodel class

近几十年来&#xff0c;系统发育分析和零模型的整合通过增加系统发育维度&#xff0c;更有力地促进了生态位和中性影响对群落聚集的推断。trans_nullmodel类提供了一个封装&#xff0c;包括系统发育信号、beta平均成对系统发育距离(betaMPD)、beta平均最近分类单元距离(betaMNT…

解决后端传给前端的日期问题

解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式化 但这种方式&#xff0c;需要在每个时间属性上都要加上该注解&#xff0c;使用较麻烦&#xff0c;不能全局处理。 2). 方式二&#xff08;推荐 ) 在WebMvcConfiguration中扩展SpringMVC的消息转…

专业120+总400+北京理工大学826信号处理导论考研经验北理工电子信息与通信工程,真题,大纲,参考书。

**今年专业课826信号处理导论&#xff08;信号系统和数字信号处理&#xff09;120&#xff0c;总分400&#xff0c;应群里同学需要&#xff0c;自己总结一下去年的复习经历&#xff0c;希望对大家复习有帮助。**专业课&#xff1a; 北京理工大学专业826是两门合一&#xff0c;…