驱动分层和分离

字符设备驱动之分层和分离:

驱动设备模型:设备总线驱动

  设备树或者是platform设备文件或者是其他什么设备文件负责去描述设备的信息:使用的IO电器属性、信息,中断信息,IIC属性信息等。不过现在基本都是设备树用设备树描述设备信息了。
  驱动就是从设备树获取到信息(有设备树就是从设备树,没有就只能从partform设备文件获取了),再去根据获取的信息去控制硬件操作,中断服务函数啥的。
  用虚拟总线就是将驱动文件和设备树的compatible名字匹配。不用虚拟总线就是直接去获取设备树节点!

分层和分离

软硬分层

  总所周知软硬分层,应用和硬件分层。所以应该是三层:应用层->驱动层->底层硬件操作。驱动层负责一些不涉及硬件操作的动作(负责使能或者配置一类的函数):init,exit等。底层硬件就单纯的提供硬件操作。

通用操作(改变)分离:

  将不变的硬件动作和可变硬件的属性分离出来。这个大概是最初的设计思路。硬件操作很多时候都是固定的。比如打开发送啊。但是硬件信息是多变的。比如这个使用了GPIO1_15,那个使用了GPIO2_10。这个用了串口1那个用了串口2。难道我们每次都去改动驱动文件吗?(这太傻了吧),所以驱动层分离应运而生!用一个文件去控制硬件操作的属性(改变使用的的硬件),根据控制硬件的文件暴露的接口去改变使用的硬件(改变硬件属性),这样就不用每次傻了吧唧该驱动了,就是得手动改底层硬件属性。这就是最初的Platform总线!剥离出的硬件属性后来被人总结打包成了一棵树,就是设备树!

参考:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部