要进行嵌入式linux驱动程序开发,首先要了解大致的框架。
linux的驱动程序通常分为字符设备驱动程序、块设备驱动程序和网络设备驱动程序三个块。 字符设备是最常见的APP应用程序,用于简单的控制、读写、数据传输等。 块设备主要与硬盘、EMMC等存储设备相关,网络设备驱动程序是与以太网、wifi相关的驱动程序。 块设备驱动程序和网络设备驱动程序通常在工厂提供,可以直接使用,所以我们的开发者只要根据特定的APP应用需求编写合适的字符设备驱动程序即可。
linux都是文件,我们开发的是字符设备驱动,实现对该设备的读写操作开放发行版等函数。 通常将3358www.Sina.com/作为目标设备在linux系统中的具体表示形式,然后上层3358www.Sina.com/通过对该设备节点执行读写等操作,对目标设备进行写操作这意味着设备节点充当驱动程序和APP应用程序之间的桥梁,并作为文件驻留在linux系统上。
因此,字符设备驱动程序的开发过程可以总结如下。
1 .分配主、辅设备号,实现字符设备驱动函数读写开放版本等函数。
2 .在linux内核中注册设备
3 .创建设备节点
4 .创建APP应用测试,并对设备节点执行read write等操作
linux具有misc设备驱动程序。 这相当于简化的字符设备驱动程序,缺省设置为10,可动态获取子设备编号并自动生成设备节点。 整个过程封装在misc_register函数中,大大简化了开发过程。
与常规字符设备驱动相关的一些结构:
单元编号结构体dev_t----自动或手动分配单元编号
操作函数结构体file_operations----实现操作函数集合
用字符设备结构cdev----操作函数结构初始化字符设备
在linux中添加该字符设备----用设备编号结构体dev_t、字符设备结构体cdev进行注册
类结构----创建新类
device结构体---依靠class,用设备编号dev_t创建设备节点