- 应用程序、库、内核、驱动程序的关系
Linux软件系统的层次关系
示例:
- 应用程序使用库提供的open函数打开代表LED的设备文件
- 库根据open函数传入的参数执行”swi”指令(ARM架构的软件中断指令),引起CPU异常进入内核
- 内核的异常处理函数根据参数找到相应的驱动程序,返回一个文件句柄给库,进而返回给应用程序
- 应用程序得到文件句柄后,使用库提供的write或ioctl函数发出控制命令
- 库根据write或ioctl函数传入的参数执行”swi”指令,引起CPU异常进入内核
- 内核的异常处理函数根据这些参数调用驱动程序的相关函数,点亮LED
- 与应用程序不同,驱动程序从不主动运行
- 驱动程序被动运行:根据应用程序的要求进行初始化、读写
- Linux驱动程序分类
块设备驱动程序特殊之处:
- 驱动程序开发步骤
**