当前位置: 技术问答>linux和unix
再问: linux驱动从open到最后设置寄存器过程
来源: 互联网 发布时间:2016-05-09
本文导语: 如题: 还是没搞清这个问题:linux驱动从open到最后设置寄存器过程 从open /dev/device开始经过文件系统到最终去设置外设上的寄存器这个过程是怎样的? 请详细说明从open开始文件系统中都走了哪些函数,做...
如题:
还是没搞清这个问题:linux驱动从open到最后设置寄存器过程
从open /dev/device开始经过文件系统到最终去设置外设上的寄存器这个过程是怎样的?
请详细说明从open开始文件系统中都走了哪些函数,做了哪些工作,到驱动中的file operations。最后到寄存器。
谢谢
还是没搞清这个问题:linux驱动从open到最后设置寄存器过程
从open /dev/device开始经过文件系统到最终去设置外设上的寄存器这个过程是怎样的?
请详细说明从open开始文件系统中都走了哪些函数,做了哪些工作,到驱动中的file operations。最后到寄存器。
谢谢
|
当然最后说一下,设置寄存器其实跟上面的open,没多大联系。
|
这其中有两个过程,下面的说明都只是示意,不是准确的名称,但是处理过程类似的
1,首先是设备驱动程序在初始化的时候会把自己注册到设备列表dev_list中。设备列表可以理解为一个二维表格
设备名称A, 回调函数集A(dev_open,dev_close,dev_write,dev_read,.....)
设备名称B, 回调函数集B(dev_open,dev_close,dev_write,dev_read,.....)
..........
2. 当我们去open一个设备的时候,系统会根据open时候带的参数中分离出来的设备名称去上面的列表中查找相关条目,找到后用对应的回调函数集中的dev_open去处理,这样不就到到了具体的设备驱动中了??
3. 至于具体设备的寄存器,只会在驱动程序中被访问到。
其实上面就是一个系统实现的通用做法,我不知道是不是所有的操作系统都这么处理,但是我知道有不少操作系统是这么处理的。我觉得楼主有点盲人摸象的感觉,其实一开始不需要急急忙忙去摸的,先看清楚全貌再说,知道怎么去想问题的才再去摸吧。
1,首先是设备驱动程序在初始化的时候会把自己注册到设备列表dev_list中。设备列表可以理解为一个二维表格
设备名称A, 回调函数集A(dev_open,dev_close,dev_write,dev_read,.....)
设备名称B, 回调函数集B(dev_open,dev_close,dev_write,dev_read,.....)
..........
2. 当我们去open一个设备的时候,系统会根据open时候带的参数中分离出来的设备名称去上面的列表中查找相关条目,找到后用对应的回调函数集中的dev_open去处理,这样不就到到了具体的设备驱动中了??
3. 至于具体设备的寄存器,只会在驱动程序中被访问到。
其实上面就是一个系统实现的通用做法,我不知道是不是所有的操作系统都这么处理,但是我知道有不少操作系统是这么处理的。我觉得楼主有点盲人摸象的感觉,其实一开始不需要急急忙忙去摸的,先看清楚全貌再说,知道怎么去想问题的才再去摸吧。