根据图12.4, Linux倾向于将主机端的驱动与外设端的驱动分离, 而通过一个核心层将某种总线的协议进行抽象, 外设端的驱动调用核心层API间接过渡到对主机驱动传输函数的调用。 对于I 2 C、 SPI这类不具备热插拔能力的总线而言, 一般在arch/arm/mach-xxx或者arch/arm/boot/dts中会有相应的板级描述信息, 描述外设与主机的连接情况。Linux的各个子系统都呈现为相同的特点, 表17.1类比了I 2 C、 SPI、 USB驱动架构, 其他的PCI等都是类似的。
                                                    表17.1 I 2 C、 SPI、 USB驱动架构的类比

对于USB、 PCI等总线而言, 由于它们具备热插拔能力, 所以实际上不存在类似I 2 C、 SPI这样的板级描述信息。 换句话说, 即便是有这类
信息, 其实也没有什么用, 因为如果写了板子上有个U盘, 但实际上没有, 其实反而是制造了麻烦; 相反, 如果没有写, U盘一旦插
入, Linux USB子系统会自动探测到一个U盘。
同时我们注意到, I 2 C、 SPI、 USB控制器虽然给别人提供了总线, 但是其实自己也是由它自身依附的总线枚举出来的。 比如, 对于SoC而
言, 这些控制器一般是直接集成在芯片内部, 通过内存访问指令来访问的, 因此它们自身是通过platform_driver、 platform_device这种模型枚举进来的。

最新文章

  1. Matrix4x4矩阵变换、欧拉角转四元数、角度转弧度
  2. 【Win 10应用开发】手动调用WCF服务
  3. oozie调用shell
  4. Nginx反向代理多虚拟主机代理
  5. BZOJ2584 : [Wc2012]memory
  6. ArcGIS API for Silverlight 地图元素点闪烁,线流动显示的处理方式
  7. 如何组织较大项目的MVC文件夹结构
  8. IronPython 设置包路径
  9. OTP【转】
  10. VxWorks 6.9 内核编程指导之读书笔记 -- 多任务(二)
  11. DEDECMS中,友情链接
  12. PLSQL显示乱码-无法进行中文条件查询解决
  13. 以中断方式实现1s定时
  14. Dreamweaver cs6安装破解
  15. hdu3715
  16. JMockit常用操作
  17. JS (全局作用域)
  18. JDBC driver for MySQL连接提示"The connection property 'zeroDateTimeBehavior' acceptable values are: 'CONVERT_TO_NULL', 'EXCEPTION' or 'ROUND'. The value 'convertToNull' is not acceptable."解决方案
  19. inheritCombinedParasitic.js
  20. [Linux]实际操作中命令 su 与 sudo 的区别

热门文章

  1. python 异常类型大全
  2. Python实用笔记 (19)面向对象编程——访问限制
  3. .NET Core 选项模式【Options】的使用
  4. 洛谷 P6145 【[USACO20FEB]Timeline G】
  5. 写出Python中列表、元祖、字典、字符串的至少5种以上的方法
  6. 初步了解JVM
  7. 你还在担心rpc接口超时吗
  8. innobackupex 数据库备份
  9. HTTP协议——详细版
  10. Django2.0.6-Xadmin后台源码安装流程(python 3.8+django 2.0)