历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2021年12月03日 | 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

2021-12-03 来源:eefocus

视频下载地址:

驱动注册:http://pan.baidu.com/s/1i34HcDB

设备注册:http://pan.baidu.com/s/1kTlGkcR

 

总线_设备_驱动注册流程详解

• 注册流程图



• 设备一般都需要先注册,才能注册驱动

– 现在越来越多的热拔插设备,反过来了。先注册驱动,设备来了再注册

设备

• 本节使用的命令

– 查看总线的命令#ls /sys/bus/

– 查看设备号的命令#cat /proc/devices

• 设备都有主设备号和次设备号,否则255个设备号不够用

– 查看杂项设备号的命令#cat /proc/misc

 

 

 

设备注册

关于注册设备的一点说明

• 早先的Linux会使用单独的文件注册设备,现在大多是使用引入的虚拟

平台,使用虚拟平台来注册设备会容易很多

• 如果大家在网上看到大段的注册设备的代码,可简单了解一下,知道

有这么个东西就成,不用去深究。不要去学习“屠龙技”,现在基本都

是直接在平台文件中注册设备

 

注册设备

注册设备使用结构体platform_device,该结构体在头文件“vim 

include/linux/platform_device.h”中。头文件中也有注册设备和卸载设

备的函数,了解即可。



 

 

• 操作过程

– 注册设备。将设备结构体放到平台文件中,会自动注册设备,不用去调

用注册设备的函数。

– 在Kconfig文件中添加编译HELLO设备的宏定义(前面教程中已经添加)

– 配置menuconfig中的HELLO宏定义,生成新的.config文件

– 生成新的zImage

• 注册完之后在虚拟平台总线下可以查到注册的设备

– ls /sys/devices/platform/

 

 

 

驱动注册

• 驱动注册

– 很重要,牢牢掌握,以后写任何Linux驱动都会用到

• 实验

– 在mini_linux_module的基础上添加驱动注册部分

 

驱动注册——头文件

• 驱动注册使用结构体platform_driver,该结构体在头文件“vim 

include/linux/platform_device.h”中

• 驱动注册platform_driver_register,驱动卸载函数

platform_driver_unregister也在这个头文件中

– 这两个函数的参数都只有结构体platform_driver

 

驱动注册——注册结构体

 

 

驱动注册——注册结构体

• 驱动常见的几种状态,初始化,移除,休眠,复位

– 就像PC一样,有的驱动休眠之后无法使用,有的可以使用;有的系统唤

醒之后,驱动需要重新启动才能正常工作,也有直接就可以使用等等

• probe函数

– platform_match函数匹配之后,驱动调用的初始化函数

• remove函数

– 移除驱动函数

• suspend函数

– 悬挂(休眠)驱动函数

• resume函数

– 休眠后恢复驱动

• device_driver数据结构的两个参数

– name和注册的设备name要一致

– owner一般赋值THIS_MODULE

 

实验

• 在mini_linux_module的基础上添加驱动注册部分

• 编译,在开发板上加载和卸载驱动


推荐阅读

史海拾趣

Dean Technology公司的发展小趣事

在激烈的市场竞争中,Dean Technology公司始终保持对技术创新的追求。他们不断投入研发资金,引进先进技术和设备,提升产品的技术含量和附加值。同时,公司还注重与高校、科研机构的合作,共同开展科研项目,推动行业技术的进步。这些努力使得Dean Technology的高压二极管产品始终保持在行业的领先地位。

Barnbrook Systems Limited公司的发展小趣事

在电子产品行业,产品质量和客户服务是企业生存和发展的关键。Barnbrook深知这一点,因此在发展过程中始终坚持严格的品质管理和优质的客户服务。公司建立了完善的质量管理体系,对每一道工序都进行严格把关,确保产品的稳定性和可靠性。同时,Barnbrook也重视客户反馈和需求,不断优化产品和服务,赢得了客户的信任和好评。

宁波晨翔电子(CONNFLY)公司的发展小趣事

在市场竞争日益激烈的环境下,晨翔电子始终坚持产品创新,不断推出具有市场竞争力的新产品。同时,公司还注重品牌建设,通过提升产品质量、优化服务流程、加强市场营销等方式,不断提高品牌知名度和美誉度。这一时期的努力,使得晨翔电子在电子连接器行业树立了良好的品牌形象。

芯力微(CHI Power)公司的发展小趣事

在电子行业的快速发展中,芯力微公司始终保持着敏锐的市场洞察力。2010年,随着智能手机市场的崛起,公司迅速识别到电源管理芯片的巨大潜力。通过持续的技术研发,芯力微成功推出了具有低压低功耗特点的电源管理芯片,赢得了市场的广泛认可。这一技术突破不仅帮助公司进入了新的市场领域,也为后续的发展奠定了坚实的基础。

台湾美丽微(FMS)公司的发展小趣事

2013年,FTDI推出了最新的嵌入式视频引擎(EVE)技术产品。这项技术将高度先进的图形控制器、显示器、音频和触摸功能集成到单一芯片中,为智能显示器的实施提供了高效、便捷的解决方案。这一创新不仅提升了FTDI在嵌入式系统领域的竞争力,也为公司在智能家居、工业自动化等多个领域的市场拓展提供了有力支持。

Galil Motion Control Inc公司的发展小趣事

随着市场的不断拓展,FTDI也面临着诸多挑战,包括如何吸纳优秀的技术人才、打击假冒芯片以及提供本地化的技术支持等。为了应对这些挑战,FTDI采取了多项措施,包括引进经验丰富的工程师和潜力大学毕业生充实技术团队,加强对本地分销商的培训,以及增加对重点应用市场的技术支持力度。这些措施不仅提升了FTDI的技术实力和市场响应速度,也进一步巩固了其在全球市场的地位。

问答坊 | AI 解惑

请教开关电源变压器

现在开发一款开关电源.输入为美规120V.输出5V/1A.单片开关电源芯片选定为TOP221.高频变压器为3个绕组.120V输入绕组,5V输出绕组和检测电源绕组.请教象这样的变压器的参数是怎样的?谢谢!…

查看全部问答>

基于嵌入式Web的电子交警系统

近年来智能交通系统发展迅速,它力图把先进的信息技术、通信技术、计算机技术、电子控制技术等高新技术有效地集成运用于整个交通运输管理体系,在大范围内建立起一种全方位的实时、准确、高教的交通运输综合管理系统。迄今为止,日本、美国、西欧、 ...…

查看全部问答>

一些元件封装!~也许大家会用到

一些元件封装!~也许大家会用到…

查看全部问答>

开关电源原理分析

开关电源原理分析…

查看全部问答>

怎样看有没有使用ramdisk?

[code] u-boot> setenv bootargs root=/dev/mtdblock2 rw rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200 mem=64M u-boot>setenv bootcmd nand read 30000000 80000 300000\\;bootm 30000000 /code] 从上面的命令中可以看出来有没有 ...…

查看全部问答>

WinCE 保護 Registry

如何保護 wince的registry 不被registry editor修改??…

查看全部问答>

F13X系列信息区读写的问题?

   我在用F135的信息区(1000~10FF)保存系统参数时,按照魏小龙书上去做, 发现几个问题:   1)用例程可以解锁FALSH,并写入测试数据,并执行正常的加锁指令后,     用JTAG再次下载程序代码后,在程序 ...…

查看全部问答>

关于IAR写程序的问题?很奇怪,大家帮我看看!!

我用的是IAR Embedded Workbench IDE 3.42A 今天发现一个奇怪的小问题,程序如下: #include "msp430x16x.h" int main( void ) { int n,m,k,sum; n=2; m=3; sum=n+m; k=sum; } 调试的时候,发现k和sum在Watch窗口, ...…

查看全部问答>

MP3开发制作资料

MP3开发制作资料 [ 本帖最后由 用心思考 于 2012-9-4 14:09 编辑 ]…

查看全部问答>

FPGA程序在线调试与下载运行的区别

最近做一个新系统,仿真时序要求通过,最后通过AS下载到板子上拿到低温箱做低温试验时数据出现重写的问题,于是用JTAG在线调试想看看哪里数据有错误,但只要一接上JTAG,系统就完美运行,想请教一下这两者之间有啥区别吗,这个问题该如何解决呢?…

查看全部问答>