主机驱动与外设驱动的分离思想

主机驱动与外设驱动的分离思想

linux 中的SPI 、I2C、USB等子系统都利用了典型的把主机驱动和外设驱动分离的想法,让主机端只负责产生总线上的传输波形,而外设端只是通过标准的API来让主机端以适当的波形访问自身。因此这里面就涉及了4个模块:

1.主机端的驱动。根据具体的I2C 、SPI、USB等控制器的硬件手册,操作具体的I2C、SPI、USB等控制器,产生总线的各种波形。

2.连接主机和外设的纽带外设不直接调用主机端的驱动来产生波形,而是调用一个标准的API。由这个标准的API把这个波形的传输请求间接“转发”给具体的主机端驱动。当然,这在里,最好把关于波形的描述也以某种数据结构标准化

3.外设端的驱动。外设接在I2C、SPI、USB这样的总线上,但是他们本身可以是触摸屏、网卡、声卡或者任意一种类型的设备。我们在相关的i2c_driver、spi_driver、usb_driver这种xxx_driver的probe()函数中去注册它具体的类型。当这些外设要求I2C、SPI、USB等去访问它的时候,它调用“连接主机和外设的纽带”模块的标准API

4.板级逻辑。板级逻辑用来描述主机和外设是如何互联的,它相当于一个“路由表”。假设板子上有多个SPI控制器和多个SPI外设,那究竟谁接在谁上面?管理互联关系,既不是主机端的责任,也不是外设端的责任,这是属于板级逻辑的责任。这部分通常出现在arch/arm/mach-xxx下面或者arch/arm/boot/dts下面

上文摘抄自《Linux设备驱动开发详解:基于最新的Linux 4.0内核》

说一下自己的理解:

连接主机和外设的纽带
就是 核心层,负责提供标准的API接口,让控制器端的驱动实现这些接口。再提供给外设端的驱动,由外设端的驱动调用,来实现控制器对设备的相互通信

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white_line

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值