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

设备驱动程序是按照什么顺序执行的

    来源: 互联网  发布时间:2016-10-16

    本文导语:  学习写驱动有段时间了,仿照着别人的,也写了几个简单的驱动程序,一直没弄清楚,驱动是怎么执行的 在insmod后首先应该是到xxx_init()函数里去注册设备号,设备注册后接下来是执行哪个函数? 有没有高手给讲解下...

学习写驱动有段时间了,仿照着别人的,也写了几个简单的驱动程序,一直没弄清楚,驱动是怎么执行的
在insmod后首先应该是到xxx_init()函数里去注册设备号,设备注册后接下来是执行哪个函数?
有没有高手给讲解下,这个顺序是怎么样的啊?

|
驱动程序的初始化完成两方便动作

一是与具体设备的关联,表现在注册设备号

二是与具体设备上的操作所对应的回调函数的关联,表现在注册file_operation上。

这两部就可以把对某个设备的某种动作(read/write/ioctl)对应到具体的执行函数上,驱动程序的任务就完成了。

|
注册各种接口而已,注册之后一般不动,按照需要 被 调用。

驱动只做机制,怎么运行,何时运行是别人做的,比如键盘驱动,只在有键盘中断的时候处理一下

|
这个注册的struct file_operations 结构就是在__init的时候调用 register_chrdev()函数来注册的

|
呵呵,init初始化设备手,驱动程序暂时不执行了。
1. 对于字符设备,块设备,通过标准的文件系统调用来访问这些设备,例如用fopen() API 来打开一个设备,FILE fp=fopen("/dev/mtdblock1", "r_"); /* 打开/dev/mtdblock1这个块设备,以便读和写 */.

2. 对于网络设备,用socket系统调用,send即把数据写入到网络设备里,recv即把设备里的数据读出来。


因此,驱动程序在完成对设备的初始化后,一般需要用户态的程序(最常见的方式),或者内核态的一些模块/内核线程来访问。

|
字符设备的驱动在注册时会注册一个struct file_operations结构体,里同会注册一些读、写、或者是ioctl等函数供你的应用层调用,至于什么时候用,用哪个,就由应用来决定的。

|
驱动 init 完成以后,基本就不干活了,
被动的由应用程序去调用,或者发生中断的时候处理数据,或者有内核线程的话,会自己干些活。。

|
驱动就是一些函数,用哪个就调哪个。

|
驱动程序是等着别人来调用的,注册成功之后,就基本不做事情了,如果上层过来一个请求,比如read请求,则就会调用驱动程序中的read。有点类似基于事件。。

|
   驱动是底层的,对应用层是透明的,只提供接口。 相当于库函数吧。

|
驱动可能会不定时启动一些线程等待请求的发生
如果与io口关联  申请了中断号
那么发生中断 就会进入相关数据处理  如果此时用户进行交互可以得到数据  如果无交互 那么驱动可能继续
去处理中断  
具体跟实现有关

|
驱动的机制类似于回调函数。init就是注册,不过同时会做一些申请资源、检查设备状态的事情。
linux的驱动机制感觉挺简单的,但具体到某一类型的驱动,linux为了提供一个统一的接口,其中的关系还是挺复杂的。
linux的驱动,不同的内核版本,其差异还是挺大的。
这是我的一点理解。

|
按照xxx_init()函数里面的调用顺序执行啊。

    
 
 

您可能感兴趣的文章:

  • 关于设备操作的一点迷惑:计算机如何知道驱动程序要操作的设备正好是指定的设备?
  • linux 启动的时候 可以检查出很多设备 并给设备配以驱动程序
  • linux设备驱动程序 usb-skeleton这个程序,能不能用具体的usb设备测试它的读写功能啊??
  • 网卡驱动程序的设备号问题
  • 关于Linux 2.6平台下,自定义的USB HID设备是系统提供驱动程序还是需要自己完成驱动程序?
  • linux 驱动程序的主设备号问题?
  • 谁有LINUX设备驱动程序第三版的程序代码,发我一份,非常的感谢!
  • 如何把我的硬件设备和我的驱动程序连接起来
  • 在Linux下作设备驱动程序应如何入手
  • 自己编写一个简单的字符设备驱动程序以后,改怎么使用它?
  • 烦恼:看不懂“Linux设备驱动程序(第二版)”!
  • 什么设备的驱动程序便于学习理解?键盘、鼠标?
  • 有好多关于《linux设备驱动程序第三版》的问题,哪里问合适呢?
  • misc类型的驱动程序怎么添加设备文件?也是用mknod么?
  • 有没有linux下USB作为从设备的驱动程序源码
  • linux设备驱动程序看完后,该看什么?
  • 字符设备驱动程序问题
  • Linux设备驱动程序开发
  • 请教高手,有关字符设备驱动程序问题
  • 在哪里可以下载OREILLY的linux设备驱动程序一书的程序源代码?在线送分!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • 弱问:一个设备能不能既是字符设备又是块设备?
  • 字符设备驱动,混杂设备驱动,总线、设备、驱动模型、平台驱动
  • 如何根据主设备号打开设备?
  • 设备与设备文件问题
  • 怎么知道设备节点对应那个设备?
  • MTD字符设备和块设备有着什么样的关系????
  • 关于设备节点,设备文件系统的关系
  • 字符型设备驱动生成的块设备
  • 程序如何open这个设备,如何知道这个设备对应的特殊文件名?
  • 请问cf接口设备一般对应什么设备文件呢?
  • 怎么区分字符设备和块设备???????
  • 混杂 字符型设备 自动创建设备文件的问题
  • linux2.4如何在设备拔出后将无效的设备节点也删除
  • 内存映射设备后,就可以直接访问设备的片内内存 了(比如显卡的显存)?
  • 在哪里可以下载OREILLY的linux设备驱动程序一书的程序源代码?在线送分! iis7站长之家
  • Linux设备驱动(第三版)- 字符设备驱动 - 例子
  • 问一个问题。请问如何在文件系统管理并使用设备,也就是当一个设备装载,下载时。文件系统是如何实现的
  • Linux下写了一个字符设备驱动,找不到设备文件在哪个目录
  • 用户可通过访问设备节点控制设备,是否也可直接读取class或devices里的文件获得设备信息?
  • 有人在Linux下用过1394接口的设备吗?怎么装载一个1394接口的存储设备呢?


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3