嵌入式Linux驱动程序开发要点 在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。 嵌入式Linux驱动程序开发要点 在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分 类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。 字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般 紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请 求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作 。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的CPU时间用来等待。网络设 备可以通过BSD套接口访问数据。 每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有2 个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设 备驱动程序的、不同的硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申 请的主设备号一致,否则用户进程将无法访问驱动程序。 系统调用时操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器 硬件之间的接口。设备驱动程序是内核的一部分,它完成以下功能: ●对设备初始化和释放 ●把数据从内核传送到硬件和从硬件读取数据 ●读取应用程序传送给设备文件的数据和回送应用程序请求的数据 ●检测和处理设备出现的错误 MTD(Memory Technology Device)设备是闪存芯片、小型闪存卡、记忆棒之类的设备,它们在嵌入式设备中的使用 正在不断增加。MTD驱动程序是在Linux下专门为嵌入式环境开发的新的一类驱动程序。 相对于常规块设备驱动程序,使用MTD驱动程序的优点在于他们能更好的支持、管理给予 闪存设备,有基于扇区的擦除和读/写操作的更好的接口。 ……