摘要:计算机软件和集成电路技术的发展,为嵌入式产业带来了巨大的机遇和挑战,Linux以其稳定、高效、易定制、硬件广泛支持等特点,迅速崛起为当今计算机领域的一匹黑马。文章通过对与嵌入式Linux设备驱动程序相关内核源码进行分析,从设备驱动的体系结构和内核环境两方面入手,对嵌入式Linux设备驱动程序的工作原理进行剖析和阐述。
关键词: Linux;嵌入式系统;设备驱动;内核环境
0. 引 言
设备驱动程序在Linux内核中占有极其重要的位置,它是内核用于完成对物理设备的控制 *** 作的功能模块。除了CPU、内存以及其他很少的几个部分以外,所有的设备控制 *** 作都必须由与被控设备相关代码——驱动程序来完成。否则设备就无法在Linux下正常工作,这就是驱动程序开发成为Linux内核开发的主要工作的原因。
然而,在嵌入式Linux 系统中,内核提供保护机制,用户空间的进程一般不能直接访问硬件。进行嵌入式系统的开发,很大的工作量是为各种设备编写驱动程序,Linux 设备驱动程序在Linux 内核源代码中占有60%以上,从2.0、2.2 到2.4 版本的内核,源代码的长度日益增加,其实主要是设备驱动程序在增加。
文章通过对与设备驱动相关内核源码进行分析,从设备驱动的内部结构和内核环境两方面入手,对设备驱动程序的工作原理进行深入地剖析和阐述。
1.1 I/O子系统的层次结构
Linux的I/O子系统分为上下两个层次:其下层是与设备有关的,即设备驱动程序,它直接控制设备完成具体的I/O *** 作,并且向上层提供一组访问接口;上层部分是与设备无关的,它根据进程的I/O请求设备驱动程序接口与设备进行通信。由于Linux把设备作为文件管理,所以I/O子系统的上层实际上就是实现文件管理功能的虚拟文件系统VFS,进程的I/O请求经过VFS的转换完成对设备的各种 *** 作,而这些 *** 作的具体实现是由设备驱动来完成的。(如图1所示)
1.2 I/O驱动软件的总体目标
I/O驱动软件的总体目标是将软件组织成一种层次结构,底层软件用来屏蔽具体设备硬件的细节;高层软件则为用户提供一个简洁的界面,从而实现I/O设计的设备无关性。(如图1所示)
2. 文件 *** 作例程登记表
2.1 文件系统调用接口
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)