免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 776 | 回复: 0
打印 上一主题 下一主题

[原]学习编写linux设备驱动之前应该明白的一些问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-29 15:54 |只看该作者 |倒序浏览
我们在什么时候用到设备驱动?
在linux中所有设备都是以文件的形式出现的,称为设备文件。当要调用设备时就会调用相应的设备文件。也就是对相应的设备文件进行读写时就会调用到相应的设备驱动。(所谓设备驱动最主要的就是对设备文件的读写。)
程序怎么调用设备驱动?
当我们要进行设备读写时,我们要调用设备驱动,通过应用层的系统调用读写设备文件,具体过程是:
1……找到相应设备的设备文件,准备进行读写。
2……当要进行设备读写是,通过设备的主设备号找到将要调用的驱动。(没有编译进内核的函数会动态的通过一个宏来加载)
3……把应用层的读写等命令转换成设备驱动中相应的读写等命令。
4……进行设备文件的读写等操作,即实现设备的控制。
设备驱动中的函数是如何被调用的?
动态加载的设备驱动是以模块的形式装载在内核当中的。
模块初始化之后该模块才可应用。
模块初始化时也要向系统注册对应的数据结构(不同的驱动模块有不同的数据结构,视具体情况而定)
只有把函数的指针传递给对应的数据结构才会被系统识别,才可能被系统调用。(试验时数据结构的其他位置可以为空)
这是分析过程,函数是如何被系统识别的?
1……把写好的函数指针传递给模块中相应的数据结构;
2……把数据结构的指针再传递给注册函数。
3……注册函数向系统注册,注册之后就可以用了该数据结构中的函数了。(当然必须是所在的模块必须进行了初始化)
4……当该模块被调用时,进行模块的初始化(module_init();)这时才进行函数向系统的注册。
这样就可以调用驱动中相应的函数了!
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104384/showart_2062645.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP