彩妆做推广的网站,网页升级重要通知请拿好笔记本,网站网上预定功能怎么做,自己做首饰的好网站我的圈子#xff1a; 高级工程师聚集地 我是董哥#xff0c;高级嵌入式软件开发工程师#xff0c;从事嵌入式Linux驱动开发和系统开发#xff0c;曾就职于世界500强企业#xff01; 创作理念#xff1a;专注分享高质量嵌入式文章#xff0c;让大家读有所得#xff01; … 我的圈子 高级工程师聚集地 我是董哥高级嵌入式软件开发工程师从事嵌入式Linux驱动开发和系统开发曾就职于世界500强企业 创作理念专注分享高质量嵌入式文章让大家读有所得 文章目录 1、编写外设驱动流程2、常见问题 1、编写外设驱动流程 该问题为基础问题也是大家基本功的表现下面一起来看一下吧 写一个常见的字符设备外设驱动主要遵循以下流程
了解硬件和接口查看外设用户手册了解该外设使用的是什么通信接口IIC、SPI、UART等。设备树配置遵循设备树语法在设备树中添加该外设的设备属性信息。外设driver结构体配置遵循Linux驱动框架创建外设driver结构体并设定相应的回调函数包括probe、remove、外设driver和device的匹配规则id_table驱动名称等信息。device和driver匹配通过insmod来将外设驱动加载到总线上按照定义好的匹配规则触发probe函数。probe实现创建字符设备以供用户层使用。字符设备创建流程如下 分配字符设备的主设备号和次设备号并为字符设备创建内存空间。关联字符设备结构体与文件操作结构体ops创建open、read、write函数添加字符设备到虚拟文件系统中包括profs和sysfs将外设驱动注册进入子系统中实现统一管理。 完善文件操作接口open、read、write为暴漏在用户层的文件操作接口我们一般通过该接口实现对外设的功能操作。 open函数一般用于初始化外设read函数一般用于用户层读取外设信息通过调用copy_to_user将数据搬运到用户空间write函数一般用于用户层向外设写入数据通过调用copy_from_user将用户数据搬运到内核层。 卸载驱动rmmod驱动后会调用remove接口负责卸载驱动包括sysfs、profs的节点删除字符设备结构体的注销外设驱动结构体的注销。 以上就是一个简单的外设驱动的编写流程示例外设驱动程序以及更多嵌入式知识可以看这里传送门 2、常见问题 Q设备编号的分配方式有哪些
A设备号的分配方式主要有两种动态分配和静态分配。
动态分配系统自动为其分配一个未被占用的设备号静态分配自行定义设备号注册进入系统中。 Q主设备号和次设备号有什么意义
A设备号是用来标识设备的关键信息主设备号用于标识设备的类型次设备号用于区分同类型的不同设备。 Q设备树匹配方式有哪些
Adevice和driver匹配方式有4种如下
设备树OF匹配方式通过设备树中的compatible属性匹配ACPI匹配方式ACPIAdvanced Configuration and Power Interface通过设备ID编号和驱动ID编号来匹配ID Table匹配方式驱动提供ID Table设备提供一个ID变量进行匹配Name匹配方式通过比较设备名称和驱动名称来进行匹配。 点赞关注永远不迷路 欢迎关注 公号星球【嵌入式艺术】董哥原创