无设备树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灯亮灭,字符设备驱动框架)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于…

Java推荐算法——特征加权推荐算法(以申请学校为例)

加权推荐算法 文章目录 加权推荐算法1.推荐算法的简单介绍2.加权推荐算法详细介绍3.代码实现4.总结 1.推荐算法的简单介绍 众所周知,推荐算法有很多种,例如: 1.加权推荐:分为简单的特征加权,以及复杂的混合加权。主要…

如何让intellij idea支持一个目录多个springtboot或maven项目

一、背景 有的时候,我们希望intellij idea 能像 eclipse 一样有workspace的概念,能在一个workspace目录里面引入多个项目,如: 我们有项目a、项目b,现在的项目几乎都是springboot项目(即maven项目&#xf…

MapReduce面试重点

文章目录 1. 简述MapReduce整个流程 1. 简述MapReduce整个流程 数据划分(Input Splitting):开始时,输入数据被分割成逻辑上的小块,每个块被称为Input Split。 映射(Map):每个Input Split 由一个或多个Map任务处理,这些…

论文阅读——RSGPT

RSGPT: A Remote Sensing Vision Language Model and Benchmark 贡献:构建了一个高质量的遥感图像描述数据集(RSICap)和一个名为RSIEval的基准评估数据集,并在新创建的RSICap数据集上开发了基于微调InstructBLIP的遥感生成预训练…

云计算基础(一)

云计算是什么?云:采用看得见摸不着的含义,计算:即处理任务。所以,在看的见摸不着的计算机上进行任务的处理即为云计算。云计算具备了较多的一些特性,比如:代价低、稳定性高、灵活性强、资源使用率高。计算机…

Python学习01 python开发的准备工作 1.Python解释器的下载 2.Pycharm集成开发环境的安装

0.按照步骤,快速进行python的开发准备工作 1. Python解释器的下载 下载地址 https://www.python.org/ 选择对应你的系统的安装包 2.记得勾选这里将python加入你的路径中 3.有如下四个程序表明安装成功 4.点击上图中的第二个程序打开窗口检查解释器能否正常工作 输…

基于OrangePi的智能垃圾桶(全程可实现)

目录 一、阿里云平台垃圾分类接入 二、用C语言调用阿里云Python的接口 1.首先将阿里云自启动 2.封装函数,方便C语言调用 3、用C语言调用 三、香橙派调用摄像头 1) 首先将 USB 摄像头插入到 Orange Pi 开发板的 USB 接口中 2) 然后通过 lsmod 命令可以看到内核自动加载了…

【学习笔记】云原生初步

一、云原生的概念 云原生(Cloud Native)是一种基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。它是一种新型技术体系,是云计算未来的发展方向。云原生应用程序是针对云平台设计…

uniapp修改头像,选择图片

一、页面效果 二、手机上的效果 使用过的实例&#xff1a; 手机上就会显示类似如下&#xff1a; 三、代码 <view class"cleaner-top" click"chooseImg"><view class"cleaner-avatar"><image :src"imgArr" mode"…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FlowItem)

瀑布流组件的子组件&#xff0c;用来展示瀑布流具体item。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。仅支持作为Waterflow组件的子组件使用。 子组件 支持单个子组件。 接口 FlowItem() 使…

挑战杯 机器视觉目标检测 - opencv 深度学习

文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 &#x1f5…

常用芯片学习——DS3231M芯片

DS3231M RTC实时时钟 芯片介绍 DS3231M是一款低成本、极其精确的 I2C 实时时钟 &#xff08;RTC&#xff09;。该设备集成了电池输入&#xff0c;并在设备主电源中断时保持准确的计时。微型电子机械系统 &#xff08;MEMS&#xff09; 谐振器的集成提高了器件的长期精度&…

Linux常用操作命令(工具)

Linux是一种自由和开放源代码的类UNIX操作系统&#xff0c;其内核由林纳斯托瓦兹在1991年首次发布。Linux操作系统的核心是内核&#xff0c;它负责管理系统的进程、内存、设备驱动程序、文件和网络系统&#xff0c;决定着系统的性能和稳定性。Linux内核由许多组件组成&#xff…

Tomcat Seeion 集群

部署&#xff1a;nginx服务器&#xff1a;11-11&#xff1b;tomcat1:11-3; tomcat2:11-6 nginx服务器11-11做搭建&#xff1a; [rootmcb-11 ~]# systemctl stop firewalld [rootmcb-11 ~]# setenforce 0 [rootmcb-11 ~]# yum install epel-release.noarch -y [rootmcb…

关于 NXP PCA85073A 实时时钟读取数据时出现 IIC 传输失败的原因解析和解决方法

一、前言 对使用 I2C 传输的 RTC 外设 PCA85073&#xff0c;在 I2C 传输过程中若有复位信号输入&#xff0c;则有概率出现 I2C 死锁的状态&#xff0c;即 SCL为高&#xff0c;SDA一直为低的现象。 二、I2C 基本协议 在分析问题出现的原因之前&#xff0c;我…

前端基础篇-深入了解 JavaScript(JSON、BOM、DOM 和事件监听)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 JS - JSON 2.0 JS - BOM 2.1 Window 浏览器窗口对象 2.2 Location 地址栏对象 3.0 JS - DOM 3.1 获取 HTML 元素对象 3.2 调用 Element 对象的属性、方法 4.0 事件…

威联通(QNAP) TS-466C NAS 开箱评测,4盘位NAS,N6005,存储服务器

威联通(QNAP) TS-466C 四盘位NAS (Network Attached Storage:网络附属存储) 开箱评测 之前用的TS-551经过几轮系统升级后明显感觉性能跟不上了&#xff0c;变卡了&#xff0c;所以升级一下&#xff0c;换了TS-466C。 威联通迁移NAS还挺方便的&#xff0c;只有将原先NAS里的硬…

Spring Boot项目怎么从Nacos注册中心上获取其他服务列表信息?

一、前言 在spring boot项目开发过程中&#xff0c;为了进行微服务之间的调用&#xff0c;我们一般会使用注册中心&#xff0c;比如Nacos。假设我们有一个业务需求&#xff0c;应用A需要从Nacos注册中心上获取服务信息进行分析&#xff0c;需要怎么实现呢&#xff1f; 二、开…

数据结构(四)——串的定义和基本操作

四、串 4.1 串的定义和实现 4.1.2 串的定义 串&#xff1a;即字符串&#xff08;String&#xff09;是由零个或多个字符组成的有限序列。例&#xff1a;T‘iPhone 11 Pro Max?’子串&#xff1a;串中任意个连续的字符组成的子序列。 Eg&#xff1a;’iPhon…