Linux设备驱动概述
以点亮LED为例:包括应用程序、库、操作系统、内核、驱动程序。而开发人员中
只要关注自己的那一层,相邻层只关注接口就可以了
1,应用程序使用库提供的open函数打开LED的设备文件
2,库根据open函数传入的参数执行“SWI”指令,这是软中断,这条指令会引起
CPU异常,进入内核
3,内核异常处理函数就会根据这些参数找到相应的驱动程序,返回一个
句柄给库,进而返回给应用程序
4,应用程序得到句柄后,使用库提供的write和ioctl函数发出控制指令
5,库根据write和ioctl函数传入的参数执行“SWI”指令,再次引起CPU异常
进入内核
6,内核根据异常处理函数根据这些参数调用驱动程序的相关函数,点亮LED
在异常处理函数中,内核会根据传入的参数执行各种操作,比如根据设备文件名
找到对应的驱动程序,调用驱动程序的相关函数
另外,驱动程序从不主动运行,都是被动运行,但也不是绝对的,用户完全可以
写
阅读(591) | 评论(0) | 转发(0) |