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

请教驱动高手:驱动该如何入门 关于file_operations和Linux设备模型

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

    本文导语:  本帖最后由 laoshizhuce 于 2011-03-17 21:25:41 编辑   Linux驱动开发入门时,基本上市面上的书都会举这么一个例子:LED驱动 书上说编写驱动尤其是字符驱动就是实现struct file_operations中的若干函数,并且确实也是这么做的 但是发现...

本帖最后由 laoshizhuce 于 2011-03-17 21:25:41 编辑
 
Linux驱动开发入门时,基本上市面上的书都会举这么一个例子:LED驱动

书上说编写驱动尤其是字符驱动就是实现struct file_operations中的若干函数,并且确实也是这么做的

但是发现后面的所有驱动都是基于设备模型开发的,即设备、驱动和总线,
如platform总线、USB总线等

是不是linux 2.6中基本抛弃了file_operations这种模型了,
既然抛弃了为什么用file_operations举例,是设备模型太难吗
基本上没有哪本书讲了file_operations到设备模型的转变

驱动用file_operations和用设备模型究竟有哪些区别

在用struct file_operations举例时说什么open read 等系统调用最终都是调用的file_operations中的函数,但设备模型中好像没有哪个函数或参数和file_operations相关联,如果用设备模型,read、open怎么和底层打交道

大家有什么好的驱动提高方法吗,多练多看书吗

书页看了一些,譬如那本经典的LDD3,感觉都是很虚的东西,看来看去提高不大

真诚求助,谢谢大家

|
file_operations 当然不可能被抛弃。它是字符设备的基础结构,
各种设备模型或者说总线,只是对字符设备进行了包装,你只是没看到
本质,没看明白设备模型而已。

LDD 是本好书,但光看一本书是不够的,看一遍两遍也是远远不够的。
至于说方法, 实践就是唯一的方法。

|
恩 , LZ是没真正看懂设备模型的本质 。
   其实就是面向对象封装的思想 。
而且 ,真正实现的驱动 ,就是字符设备驱动程序 ,而那些总线 ,只是套一个框架上去 ,以实现总线,驱动,设备这种模型。

|
我最初看设备模型时,也不明白是怎么回事,不过,通过进一步的学习,这两天终于明白了点东西。
在内核中找一个实际设备的驱动(我看的是iic的驱动,据说是比较简单的),好好看看,一定要耐心,
找相关的书看。刚开始看的时候不一定能马上找到自己想要的东西,不过,不能着急,看多了就明白了。
看代码过程中,如果觉得有哪一部分不理解,就先停止,把这部分不理解的东西弄明白后,再继续往下看。
在这个过程中,你会明白很多东西,当把整个驱动代码看完的时候,就能明白是怎么回事了。
lDD3是本很好的书,其他的很多书不会给你讲那么清楚,并且,很多地方写的很粗糙。
即使这样,也要多看些书,取其精华,去其糟粕。你在一本书中不可能找到所有你想学的东西。

file_operations是驱动中必须的东西,是驱动提供给用户空间的接口。
你说没有是因为你没有找到,还没有看到那个地方,慢慢看吧。。。。

|
个人觉得设备模型应该是为了总线上的设备的同一管理吧,
也就是设备之间存在的关系得到体现,
但设备的驱动程序应该是原来的,或者接口上有所变化吧,

没看到源代码

|


这个赞成。多看看内核源码吧,/Documentation里的文档需要好好看。
《精通linux驱动程序开发》我感觉这本书不错,目前看的是英文版的。

我也是初学,多多交流啊

|
本帖最后由 wenxy1 于 2011-03-31 10:37:47 编辑
LDD, ULK, ELDD都是经典的好书, 特别是ELDD在实际工作中是很好的工具书.
另外,我在X86的网站(http://www.linuxdeveloper.cn/alex/en/category/photo)上看到一本书:, 这里有书评: http://product.china-pub.com/196739#nrjj
应当是不错的.
CSDN也有English版下载: http://download.csdn.net/source/2453825

|
驱动程序在系统中起到承上启下的作用,有2点:
1. 启下:管理硬件,收发硬件相关的数据。
2. 承上:对操作系统和用户空间程序提供API。用户空间的应用程序通过驱动程序访问硬件。这个API就是file_opertions。

UNIX和LINUX(实际上是类UNIX系统)是基于文件的概念构建的。所有的设备都被抽象为文件。对设备的操作被抽象为对文件的操作。为此,类UNIX系统专门定义了一套POSIX系统调用,来规范这些文件操作。《UNIX环境高级编程》就是讲这些系统调用的。这些系统调用被执行的时候,就会到内核里面去寻找支持的代码和库。具体在代码里面,层层调用,最后调用的就是file_operations里面定义的文件操作函数。

在Linux 2.4里面,只要实现了file_operations里面的那些成员函数,驱动就算写完了。到了Linux 2.6里面,把驱动分得更细了,架构更复杂一些,所以有了device ,cdev ,bus,class,这些具体东西。但实际上驱动的2点基本作用是不变的。

-------------------------------------------------
如果你觉得我的回复有价值,请进一步访问我的主页和blog。

|
LLD3只是介绍了最最基本的内核可用的结构,当然也是基础。对于这是想把LED的点亮的家伙,可以跳过这些细节,直接用LED驱动架构中的硬件接口API就可以完成任务。
但是Linux中有诸多的设备,每一类设备的代码中都会看见如xxxx_core.c的文件,这些文件都是驱动架构师在社区讨论,编写而成,这类的文件才会真正涉及LLD3中的内容。
因此,看你想成为什么人

|
如何入门这个,我专门写了一个博客,我直接贴博客的地址吧,楼主一定要好好看!

因为大多数的驱动开发人员也搞不懂 fops及驱动模型,就知道,填写回调函数啥的,针对这个问题,我特意写了个博客,期望能够解决大家的问题,也算是抛砖引玉吧!

http://blog.csdn.net/smilestone322/archive/2011/03/19/6261955.aspx




|
字符设备是用这个file_operations模型的,这几乎是后面其他模型的基础

个人认为学习驱动最好的办法就是不断的积累实践经验,改一些驱动程序或者自己尝试着写写简单的程序都可以让你明白这里面的流程。

LDD3虽然是一本好书,但是你不能只抱着他一本书看,这本书里面涉及到的东西很全,可以说是一本工具书遇到问题再来查找看看里面的东西会让你豁然开朗

|
谁说file_operations被抛弃了,抛弃的是devfs吧

|
对于cdev类型的驱动需要理解几个概念 device ,cdev ,bus,class,这些具体是什么东东。

|
不知道LZ毕业了没,如果还没,那你这样的困惑和当时还在学校的我一样。不过LZ需要注意一下几点:
1,学习linux驱动是个漫长的过程,这需要积累和沉淀
2,LDD3是本好书,现在我在工作了都还经常当工具书翻番,虽然它已经很老了
3,希望LZ能搞块开发板,或者跟着公司的项目走也可以。

LZ可以先自己调,先从稍微简答一点的驱动模型吧,platform比较简单,可以从这个开始,首选的子系统为input子系统,结合板子上的触摸屏驱动一起学习,input子系统网上的资料介绍得多点。一般按基础一般点的1到2个月应该能把input子系统的原理弄明白。

|
建议楼主多看看内核代码!

|
同样的困惑,本质是什么呀?

|
哪位大虾在讲讲,还么懂……

|

就是这样的.不管什么总线,pci也要,usb也好,只是一个框架

|
学习下

|
拉拉好久不出来回答问题了。呵呵

    
 
 

您可能感兴趣的文章:

  • 请教有关linux驱动开发,按关机键关机时,驱动应作哪些结束工作?
  • 请教!关于linux字符驱动程序
  • 请教一下在驱动里怎么调用应用程序
  • 请教!linux设备驱动
  • 请教用户空间编写设备驱动
  • Linux新手请教声卡驱动!!!!!!!!!!!
  • 请教各位大大 怎样编写LINUX触摸屏的驱动程序?
  • 请教Linux设备驱动的具体应用(基于PC)
  • 请教linux驱动复杂,庞大的结构
  • 请教一个关于驱动测试程序的问题
  • 高分相送,请教cs5530芯片组声卡驱动的问题
  • 请教:怎么安装声卡驱动?
  • 请教关于linux开发驱动程序的方向
  • 巨难请教网卡驱动
  • 请教一个显卡问题:我是u5的机器,它的显卡是集成的吗?需要安装驱动吗?
  • 请教单片机驱动程序开发
  • 《DCAD-620U ADSL Modem》linux下没有驱动怎么办?高分请教(是usb的adsl modem)
  • 高分请教一个串口驱动模块加载的问题
  • sql server数据库有没有专门的jdbc驱动程序,若有,请教怎样获得?
  • 请教如何安装内猫的驱动程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Vxworks 嵌入式操作系统入门请教,请多指点!
  • 新手入门请教各位前辈linux
  • jsp入门菜鸟向高手请教
  • C编程入门级问题请教
  • 请教各位:一个UNIX入门者遇到的问题
  • 请教个入门linux编程问题~~
  • linux编程入门级的问题!!! 请教!!
  • 小弟,请教入门问题!!!!!
  • 入门,请教线程编程的问题,请各路高手帮帮忙
  • 小弟刚来,只能给100分!请教一下各位:学习UNIX下的程序设计,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 小弟刚来,只能给100分!请教一下各位:学习UNIX,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!我最想用FREEBSD!
  • 小弟刚来,只能给100分!请教一下各位:学习LINUX,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 我是刚入门的,好多东东不懂,所以还要请教一些问题.是不是在我的本机上不用安装JSWDK?只要在服务器上安装就行了?
  • 入门者小程序请教~~
  • 请教,linux编程怎么入门
  • 请教:新手入门,该怎么学习linux驱动?
  • [初学请教]linux入门
  • 请教入门问题,请各位网友支持,都有分
  • 小弟刚来,只能给100分!请教一下各位:学习LINUX下的程序设计,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 各位前辈,请教如何入门C/C++方向的Linux系统开发?
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)


  • 站内导航:


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

    ©2012-2021,