DM即driver module,也就是驱动模型。
uboot为什么引入驱动模型呢?驱动模型又是一个怎样的一个模型呢?第一个问题很简单,既然uboot要引入驱动模型,那肯定是因为驱动模型要比老旧的驱动方案要好,至于好在哪里,那就必须要先搞清楚第二个问题了。
首先我们先区分两个概念,设备和驱动,也就是device和driver。device持有物理设备的资源信息,而driver实现对设备的管理。
以RTC芯片为例,硬件拓扑如下:
I2C控制器出I2C总线,RTC连在I2C总线上。
RTC对应的device持有RTC的资源信息,包括I2C地址,位宽,这些信息要么是接口相关的,要么是跟硬件设计相关的;而RTC对应的driver则负责对RTC的管理,如将从RTC中读出来的时间值解析为用户可以识别的时间值,以及将时间编码后写入RTC芯片,driver和device结合起来才能实现RTC芯片的访问和管理。
其实RTC的资源信息不止I2C地址和寄存器位宽,还有寄存器定义,那么寄存器定义是否也需要放入device中呢?其实不必,当然放进去也可以。其实硬件设备的资源信息是否要放入device中有一个关键的原则&#