Linux驱动_驱动设计的思想(面向对象、设备树)

一、Linux驱动_驱动设计的思想(面向对象_分层_分离)

总则:Linux驱动=驱动框架+硬件操作

=驱动框架+单片机

1、面向对象就是用结构体表示某个对象

2、分层

3、分离

事实上,每一款芯片它的GPIO操作都是类似的,并且这跟主芯片相关,因此就可以针对该芯片写出比较通用的硬件操作代码。

具体见代码。

三、总线设备驱动模型

如果硬件很多,导致相对应的.c文件很多,造成内核臃肿。因此引入设备树,将硬件的设置文件不放在内核的.c文件中。

bus:device 和 drv一一对应。

device 和 drv是怎么挂钩的:

如下图划红线部分,如果device和drv都是

先后比较1、2、3。如果1不行,就比较2,2不行就比较3.一般2、3用得比较多。

具体参见文件:09.驱动进化之路_总线设备驱动模型

怎么启动的呢?

启动时drv和dev分别调入各自的链表,然后再把各自链表放入第三个链表进行比较。

四、LED模板驱动程序的改造_总线设备驱动模型

新框架关系如下图,驱动和硬件按新框架,原始的drv按原来的方法进行注册:

具体见代码。

五、设备树的引入及简明教程

1、传统方法的缺点如下,于是引用了设备树,使用配置文件。

2、设备树:

设备树的表示如下:

具体见文档:包括常见的节点、属性等

status的讲解:

reg在CPU上的用法:

dtb:dts对应的二进制文件 dts:文本格式汇编文件 fdt:设备树文件

六、内核对设备树的处理与使用

处理过程:

哪些设备树节点会被转换为platform_device:

例子:

添加设备树后,Dev与drv怎么进行匹配的:

1、2、3、4部比较过程具体见文件说明。

七:LED模板驱动程序的改造_设备树

见源码。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值