龙源期刊网 http://www.qikan.com.cn
基于嵌入式Linux的用户空间驱动开发的研究
作者:于继武 闫应栋
来源:《电脑知识与技术》2012年第14期
在嵌入式Linux系统开发过程中,设备驱动程序的编写涉及到内核空间的众多接口函数、权限分配、线程控制等,是一个难以理解掌握的重要内容[1]。对于Linux内核编程不熟悉的驱动程序学习者来说,是一道难以逾越的障碍,从而影响了对嵌入式Linux驱动开发的学习。 通过研究Linux内核源代码[2-3],设备文件/dev/mem是ARM嵌入式处理器主存的一个映像。通过内存映像的方式,把整个/dev/ mem设备文件或文件的一部分映射到内存中,并在内存中创建一个与Linux内核存储器完全相同的映像,实现嵌入式处理器的物理地址映射到内存中,可以提供给用户程序直接访问设备内存的能力。映射一个设备意味着将用户空间的一段内存与设备内存关联起来,当程序在分配的地址范围内作读写操作时,实际访问的是设备地址。 3结论
用户空间驱动实现由物理内存到用户空间的映射,直接对设备端口进行读写操作,不必关心内核的细节问题,大大降低了编写驱动程序的难度。通过把用户空间的驱动程序加上文件系统接口,使用内核同步机制进行同步,从而把用户空间驱动编译进内核,转变为内核驱动。 但用户空间的驱动程序实现也有缺点,如响应速度慢,不能处理网络设备和块设备等。驱动程序的开发者要根据具体的应用场合进行相应选择。 参考文献:
[1] Corbet J.Linux设备驱动程序[M].魏永明,译.北京:中国电力出版社,2005. [2]董志国,李式巨.嵌入式Linux设备驱动程序开发[J].计算机工程与设计,2006(20). [3]刘春成.基于嵌入式Linux的USB摄像头驱动开发[J].计算机工程与设计,2007(8).