加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

驱动设备模型---sys文件系统之最后总结

发布时间:2020-12-15 06:32:13 所属栏目:百科 来源:网络整理
导读:此篇乃写完《驱动设备模型---sys文件系统》后的一些自己的想法,仅供自己参考,可能有错 ? 实际的在操作系统中,很少有像教科书中那样的驱动。 建立一个 字符设备,初始化,注册, 然后就齐活了。这样的写法很少的。当然,如果仅仅像教科书中,使用alloc_chr

此篇乃写完《驱动设备模型---sys文件系统》后的一些自己的想法,仅供自己参考,可能有错

?

实际的在操作系统中,很少有像教科书中那样的驱动。 建立一个 字符设备,初始化,注册, 然后就齐活了。这样的写法很少的。当然,如果仅仅像教科书中,使用alloc_chrdev(),add_chrdev()等函数的话,好像不会和sys文件系统产生什么关系。仅仅在添加了一个字符驱动,要再运行mknod 来建立设备文件进行操作。

?

但是,在实际中,最底层的驱动,并不是直接与用户进行交互的。 例如:nand,nor上面会有mtd层,serial上面有tty层等。。。。真正开放给用户的是mtd和tty。所以在《驱动设备模型---sys文件系统》文章中的讨论的函数(bus,device,drive,bus_register,device_register....)都是最最底层的驱动。nand,Nor,serial这样的底层驱动用的。

?

而到mtd,tty层的时候,可能就不会使用(bus,drive)等这些结构和函数了。mtd,tty这些层一般会使用最底层驱动提供的接口(读,写),再对其进行一次封装,使其更标准更易用。然后同过class_creat等函数,对/sys/class进行操作,所以/sys/class下的那些文件,才是最后面向用户提供的。

?

系统boot成功后,udev会check /sys/class还有/sys/block下的每个文件,然后在/dev目录下建立设备文件。

?

所以说,/sys/device /sys/bus目录都是面向很底层很底层的驱动的。当然哭在用户态通过 观察对/sys/bus下的目录结构来了解很底层的设备,如usb的数量,什么样的flash等。/sys/class 是面向用户的,可以通过/sys/class 查看到鼠标设备,网络等。那么由此可以看出,如果编写很底层的设备的话,那么要做的事,1,调用drive_register,device_register等函数注册,实现probe函数,2,实现对上层子系统的接口。 只需要这两步就可以了,什么主次设备号,什么其他的东西都不用。

当然,如上面例子中,也可以直接编写Nand,Nor的驱动,跳过MTD层,直接让flash的驱动接口开放给用户。那么的话,就需要在flash的驱动中,添加 字符驱动的注册,或者块设备的注册函数等。同时,drive_register,device_register等函数就可以省略了。因为这些函数都是向他上层的子系统来传达信息的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读