当前位置:  技术问答>linux和unix

求助!linux字符设备驱动开发

    来源: 互联网  发布时间:2017-04-06

    本文导语:  刚接触linux驱动开发,看了宋宝华老师的《linux设备驱动开发详解》,关于内核模块的加载、驱动注册等流程都基本清楚了,也知道设备驱动和设备文件是通过设备号关联起来的,但是有一点很困惑的,那就是设备驱...

刚接触linux驱动开发,看了宋宝华老师的《linux设备驱动开发详解》,关于内核模块的加载、驱动注册等流程都基本清楚了,也知道设备驱动和设备文件是通过设备号关联起来的,但是有一点很困惑的,那就是设备驱动程序是如何跟硬件设备关联起来的,驱动程序如何让操作系统知道自己是适合哪个硬件设备的驱动呢?
我知道windows下的驱动程序会有一个表,表里包含硬件厂商、设备类型等信息,操作系统会根据这些信息去匹配相关硬件,但是linux下的字符驱动里面我没找到相似的信息,书上也到处找不到,希望高手可以帮忙解答一下。

|
应用层和驱动层是通过设备文件这个东西来联系的。你打开对应的设备文件,由于之前驱动程序注册时也和这个设备文件建立了联系,所以你在打开这个对应的设备文件时,Linux的文件系统会把相应的驱动程序和你的应用层建立联系。不会说你要打开串口的,结果成了打开键盘的。

如果要问驱动程序怎么和硬件设备怎么联系的,这个就有些难了。有的驱动简单,能比较容易懂,有的复杂了,文件系统就可能会参与。这块我也没有深究,不敢瞎说,但是对于初学者,建议不要纠缠这块,先学会用再说,不要管原理(不会原理也不会影响你的学习流程),用多了,再看看内核源代码就清楚了。

|
字符设备需要先建立访问的设备文件,可利用mknod或者MAKEDEV工具创建设备文件,而每个设备文件拥有主设备号和从设备号。二者共同形成一个唯一的号码,内核可由此查找对应的设备驱动程序。内核采用主从设备号来标识匹配的驱动程序,即主设备号相同的字符设备是同类设备(使用同一驱动程序)。你可以在内核代码里找/drivers/char/目录下的源码来看看就明白了。

|
你说的windows下的驱动里的表是指设备的DeviceId和VenderId表吧,这些Id是对应实际硬件的Id的,Linux如果要驱动这些设备,也要写入这些信息的,不同的是windows驱动可以写在ini文件里,但是linux驱动是写在源程序里的。你说的linux驱动里找不到对应的表是因为那些例子驱动的设备都是虚拟设备,不是真实的设备,没有真实的id,所以没有。

    
 
 

您可能感兴趣的文章:

  • 关于字符设备驱动读写的问题,求助
  • 求助:如何通过驱动程序来操作设备?
  • 读<<linux设备驱动程序〉〉,求助!!!
  • [求助] 字符设备驱动,写数据和读数据都有问题,望大家帮忙[已解决,来人接分结贴]。
  • 关于bash 字符串操作(求助)
  • 求助:对批量文件中的指定字符串进行替换:(批量替换)
  • 新手求助,编译时说不能解析字符是怎么回事?
  • [求助]vi中想把所有的换成/,这种特殊字符如何搞?
  • 求助 简单测试字符驱动 Cannot allocate memory
  • 求助! telnet到远程服务器后,如何访问服务器端字符设备
  • 求助:在Linux下的一个字符串转换
  • 求助,如何用换行符替换文本中的指定字符串
  • sed 脚本求助:变量中含有转义字符处理
  • 求助:有关串口发送字符串问题
  • socket通信中的中文字符问题(菜鸟求助)
  • 在笔记本上安装linux转换字符界面求助
  • 在c++中,是否用方法可以将使用cout输出到屏幕上的字符给清除掉?请高手指点(高分求助)
  • 菜鸟求助:在 JAVA APPLET 里如何旋转 90 度显示一个字符?
  • 求助!我怎样才能使得我的Linux的字符界面tty都是显示纯英文,而图形界面就显示成中文呢?
  • 求助,一个获取字符及输出问题
  • 高分求助gtk_text_buffer_set_text参数中字符编码问题
  • [求助] linux字符文件设备访问的阻塞与非阻塞
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [求助]linux下的usb驱动开发的书籍
  • 高分求助foxpro的jdbc驱动程序!!!!
  • 求助:Linux下USB驱动的问题
  • 求助 !!ALSA声卡驱动错误!
  • 求助:makefile,驱动与linux内核的关系?
  • 求助:一个简单的驱动
  • 【求助】:如何用ioctl()函数调用一个驱动程序
  • 求助!驱动如何触发程序?
  • 关于JDBC for Oracle驱动的问题?紧急求助?
  • 求助,关于显卡驱动的安装,高手请进,谢谢
  • 求助````我该用哪个驱动啊?
  • 求助!声卡驱动怎么上!!!
  • 求助:如何移植DM9000网卡驱动到linux2.6内核?
  • 罗技快看畅想版UVC 摄像头驱动求助??????
  • 求助,关于编译驱动进内核的一个问题,实在找不到资料了!
  • [求助]请问Linux下怎么打开exe文件啊,小弟想安装网卡驱动啊
  • 求助 82576驱动
  • 求助啊,Linux 系统怎么看装了哪些驱动
  • [求助]关于驱动静态编译进内核的问题!
  • 求助一个关于LINUX中网卡驱动的问题
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,