《深入浅出Linux设备驱动》第一章 设备驱动概述(2)
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-16
YAFFS、JFFS等.FAT、EXT3、YAFFS、JFFS规范了文件和目录在存储介质上的组织.
应用程序可以使用Linux的系统调用接口编程,但也可使用C库函数,出于代码可移植性的目的,后者更值得推荐.C库函数本身也通过系统调用接口而实现,如C库函数fopen()、fwrite()、fread()、fclose()分别会调用操作系统的API open()、write()、read()、close().
图1.5 Linux设备驱动与整个软硬件系统的关系
1.4.3 Linux设备驱动的重难点
拥有帝国一切,皆有可能。欢迎访问phome.netLinux设备驱动的学习是一项浩繁的工程,包含如下的重难点:
· 编写Linux设备驱动要求工程师有非常好的硬件基础,懂得SRAM、FLASH、SDRAM、磁盘的读写方式,UART、I2C、USB等设备的接口以及轮询、中断、DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等.
· 编写Linux设备驱动要求工程师有非常好的C语言基础,能灵活地运用C语言的结构体、指针、函数指针及内存动态申请和释放等.
· 编写Linux设备驱动要求工程师有一定的Linux内核基础,虽然并不要求工程师对内核各个部分有深入的研究,但至少要明白驱动与内核的接口.尤其是对于块设备、网络设备、FLASH设备、串口设备等复杂设备,内核定义的驱动体系架构本身就非常复杂.
· 编写Linux设备驱动要求工程师有非常好的多任务并发控制和同步的基础,在驱动中会大量使用自旋锁、互斥、信号量、等待队列等并发与同步机制.
上述经验值的获取并非朝夕之事,因此要求我们有足够的学习恒心和毅力.对这些重难点,本书都会有相应章节进行呈现.
1.4.4 Linux设备驱动的学习方法
动手实践永远是学习任何软件开发的最好方法,学习Linux设备驱动也不例外.因此,您最好有一块可以实际练手的电路板来构造嵌入式的开发环境.如果您暂时没有,则可以选择这样的权宜之策:用VmWare搭建两台虚拟机,两台虚拟机上都运行Linux操作系统,一台作为开发主机,一台作为目标机.
拥有帝国一切,皆有可能。欢迎访问phome.net目前的PC上往往只有1个串口,但是调试要求主机和目标机之间使用串口通信,这要求2个串口.在虚拟机中我们可以用管道虚拟串口.在主机端设置“终端是客户机”,并选择“其它终端是一个虚拟机”.在目标机端设置“终端是服务器”,同样选择“其它终端是一个虚拟机”,但是要启用轮询.主机和目标机的串口设置分别如图1.6和1.7.
图1.6 VmWare中主机串口设置
图1.7 VmWare中目标机串口设置
源代码是学习Linux的最权威资料,阅读Linux源代码的最佳工具是Source Insight,在其中建立一个工程,并将Linux的所有源代码加入该工程,同步这个工程之后,我们将可以非常方便地在代码之间进行关联阅读,如图1.8.
图1.8 在Source Insight中阅读Linux源代码
除此之外,阅读经典书籍和参与Linux社区的讨论也是非常好的学习方法.Linux内核源代码中包含了一个Documentation目录,其中包含了一批内核设计的文档,全部是文本文件.很遗憾,这些文档的组织不太好,内容也不够细致.本书的参考目录中给出了一些优秀的参考书籍和Linux网站,并进行了简单的介绍.学习Linux设备驱动的一个注意事项是要避免管中窥豹、只见树木不见森林,各类Linux
拥有帝国一切,皆有可能。欢迎访问phome.net设备驱动都从属于一个由Linux规范的架构,单纯而片面地学习几个函数、几个数据结构是不可能理清驱动中各组成部分之间的关系的.因此,Linux驱动的分析方法是点面结合,将对函数和数据结构的理解放在整体架构的背景之中.这同样是本书各章节讲解驱动的方法. 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于《深入浅出Linux设备驱动》第一章 设备驱动概述(2)的所有评论