|
构建内核对DOC块设备的支持:
(1)设备的设备名称和主设备号
必须找一个还没有被使用的主设备号,分配给自己的新设备。假设主设备号为30(在2.0.34的内核中还没有以30作为主设备号的块设备),则需要在include/Linux/major.h中加入如下句:
71#define MY_MAJOR 30
这样可以通过MY_MAJOR来确定设备为新设备,保证通用性。
(2)确定编写需要的file_operations中的操作函数

由于使用了高速缓存,块设备驱动程序就不需要包含自己的read(),write()和fsync()函数,但必须使用自己的open(),release()和ioctl()函数,这些函数的作用和字符设备的相应函数类似。
(3)确定编写需要的输入/输出函数
值得注意的是这2个函数和字符设备中的myread(),mywrite()函数不同。
(4)确定编写需要的请求处理函数
在块设备驱动程序中,不带中断服务子程序的请求处理函数是简单的,典型的格式如下:
实际上,一个真正的块设备一般不可能没有中断服务子程序,另外设备驱动程序是在系统调用中被调用的,这时由内核程序控制CPU,因此不能抢占,只能自愿放弃;因此驱动程序必须调用sleep_on()函数,释放对CPU的占用;在中断服务子程序把所需的数据复制到内核内存后,再由他来发出wake_up()调用。
5 结 语
DOC作为一种新型闪存电子盘,以盘体体积小、功耗低和带硬盘仿真功能等特点,在一些对电源功耗要求苛刻、空间狭小的嵌入式场合,有他很独到的优势;加之目前生活自动化(LA)、智能设备终端等领域的技术日趋成熟,在嵌入式操作系统应用日益广泛的今天,嵌入式操作系统对此类电子盘设备的支持日益完善。本文结合嵌入式Linux系统介绍和分析了其下DOC2000的设备驱动和文件系统的支持,可广泛用于工业控制系统、网络视频以及POS机系统储存中,具有实用的价值。
共2页: 上一页 [1] 2 下一页
|