
该问题为基础问题,也是大家基本功的表现,下面一起来看一下吧
写一个常见的字符设备外设驱动,主要遵循以下流程:
IIC、SPI、UART等。driver结构体配置:遵循Linux驱动框架,创建外设driver结构体,并设定相应的回调函数,包括probe、remove、外设driver和device的匹配规则id_table,驱动名称等信息。device和driver匹配:通过insmod来将外设驱动加载到总线上,按照定义好的匹配规则,触发probe函数。probe实现:创建字符设备,以供用户层使用。字符设备创建流程如下:ops,创建open、read、write函数profs和sysfsopen、read、write为暴漏在用户层的文件操作接口,我们一般通过该接口实现对外设的功能操作。open函数:一般用于初始化外设read函数:一般用于用户层读取外设信息,通过调用copy_to_user将数据搬运到用户空间write函数:一般用于用户层向外设写入数据,通过调用copy_from_user将用户数据搬运到内核层。rmmod驱动后,会调用remove接口负责卸载驱动,包括:sysfs、profs的节点删除,字符设备结构体的注销,外设驱动结构体的注销。以上就是一个简单的外设驱动的编写流程,示例外设驱动程序以及更多嵌入式知识可以看这里:https://t.zsxq.com/0eUcTOhdO

img
Q:设备编号的分配方式有哪些?
A:设备号的分配方式主要有两种:动态分配和静态分配。
Q:主设备号和次设备号有什么意义?
A:设备号是用来标识设备的关键信息,主设备号用于标识设备的类型,次设备号用于区分同类型的不同设备。
Q:设备树匹配方式有哪些?
A:device和driver匹配方式有4种,如下:
compatible属性匹配ACPI(Advanced Configuration and Power Interface),通过设备ID编号和驱动ID编号来匹配ID Table,设备提供一个ID变量进行匹配嵌入式艺术
MEET SPRING
万物更生,新岁开启