电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

电子科技大学,嵌入式linux设备驱动程序的开发

电子科技大学,嵌入式linux设备驱动程序的开发_第1页
1/28
电子科技大学,嵌入式linux设备驱动程序的开发_第2页
2/28
电子科技大学,嵌入式linux设备驱动程序的开发_第3页
3/28
Lin u x 将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Lin u x 内核和应用程序之间的接口,那么设备驱动程序则可以看成是Lin u x 内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。 1 . 字符设备和块设备 Lin u x 抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:它们可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和I/O 控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。Lin u x 系统中的所有硬件设备都使用一个特殊的设备文件来表示,例如,系统中的第一个 IDE 硬盘使用/dev /hda表示。每个设备文件对应有两个设备号:一个是主设备号,标识该设备的种类,也标识了该设备所使用的驱动程序;另一个是次设备号,标识使用同一设备驱动程序的不同硬件设备。设备文件的主设备号必须与设备驱动程序在登录该设备时申请的主设备号一致,否则用户进程将无法访问到设备驱动程序。 在Lin u x 操作系统下有两类主要的设备文件:一类是字符设备,另一类则是块设备。字符设备是以字节为单位逐个进行 I/O 操作的设备,在对字符设备发出读写请求时,实际的硬件I/O 紧接着就发生了,一般来说字符设备中的缓存是可有可无的,而且也不支持随机访问。块设备则是利用一块系统内存作为缓冲区,当用户进程对设备进行读写请求时,驱动程序先查看缓冲区中的内容,如果缓冲区中的数据能满足用户的要求就返回相应的数据,否则就调用相应的请求函数来进行实际的I/O 操作。块设备主要是针对磁盘等慢速设备设计的,其目的是避免耗费过多的CPU 时间来等待操作的完成。一般说来,PCI 卡通常都属于字符设备。 所有已经注册(即已经加载了驱动程序)的硬件设备的主设备号可以从/proc/devices 文件中得到。使用 mknod 命令可以创建指定类型的设备文件,同时为其分配相应的主设备号和次设备号。例如,下面的命令: [root@gary root]# mknod /dev/lp0 c 6 0 将建立一个主设备号为 6,次设备号为 0 的字符设备文件/dev/lp0。当应用程序对某个设备文件进行系统调用时,Linux 内核会根据该设备文件的设备类型和主设备号调用相应的驱动程序,并从用户态进入到核心态,再由驱动程序判断该设备的次设备号,最终完成对相应硬件的操作。 2 . 设备驱动程序接口 Linu x 中...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

电子科技大学,嵌入式linux设备驱动程序的开发

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部