发布网友 发布时间:2天前
共1个回答
热心网友 时间:2天前
设备驱动程序,简称驱动程序、驱动,是硬件与操作系统之间的接口,操作系统通过这个接口控制硬件设备的工作。驱动程序被誉为“硬件的灵魂”、“硬件的主宰”和“硬件和系统之间的桥梁”。Linux的体系架构体现着分层的思想,驱动层位于系统调用之上,硬件层之下。
驱动本身也是分层的,内核驱动维护者设计了框架,核心层实现通用功能,具体底层操作留给驱动工程师实现。驱动程序的对象通常为存储器和外部设备,根据设备操作的特征差异,驱动分为三类:字符设备驱动、块设备驱动和网络设备驱动。字符设备驱动是以字节为单位进行操作的设备,如LCD、串口、LED等;块设备驱动是设备以块为单位被软件操作,常见如硬盘、iNand、SD等;网络设备驱动主要支持socket相关函数工作。
驱动程序的安全性要求包括:驱动对内核的影响,如驱动代码崩溃可能导致内核崩溃;常见安全问题如未初始化指针、恶意用户程序、缓冲区溢出和竞争状态。内核及驱动程序开发时有别于应用开发,如不能访问C库、必须使用GNU C、注意同步和并发、有小的定长堆栈、缺乏内存保护机制、浮点数使用困难、考虑可移植性等。
驱动学习方法包括基础积累,如熟悉C语言、掌握芯片手册接口设备、系统编程等;实践驱动编写,培养框架思维,通过简单设备学习Linux驱动框架,总结和记录学习过程。