简单字符设备驱动程序 .
Blog:doc.docsou.com
linux驱动程序开发步骤
1)查看原理图、数据手册,了解设备的操作方法。
2)在内核中找到相近的驱动程序,以它为模板进行开发,有时候需要从零开始。
3)实现驱动程序的初始化:比如向内核注册驱动程序,这样应用程序传入文件名时,内核才能找到相应的驱动程序。
4)设计所要实现的操作,比如open,read,write,close。
5)实现中断服务(不是必需的)
6)编译该驱动程序到中,或者用insmod命令加载。
7)测试驱动程序。
驱动框架
应用程序API接口read,open,write 是对应驱动程序上的
led_read,led_open,led_write的
1)写出驱动函数led_read,led_open,led_write
每个系统调用,驱动程序怎样和它对应起来??
2)定义一个file_operations结构,和应用层API对接,
Linux系统怎么知道去调用哪个驱动程序的file_operations??
3)根据设备类型和主设备号
例如应用层程序open("dev/led");根据打开的文件属性中的根据设备类型和主设备号,找到内核中注册了的file_operations结构来判断是哪个驱动程序。
所以,要将注册函数将主设备号和file_operations一起注册到内核
4)最后把驱动程序加载到内核
如module_init(memdev_init);
加载时,就调用驱动初始化函数,向内核注册
|--------------------------------------------------------------------|
| APP:open("dev/xxx");write();read() |
| 文件属性:设备类型 c 主设备号11 |
|--------------------------------------------------------------------|
| C库
闽公网安备 35021102001881号 
热门文档