驱动模型被称为Driver Model,简称DM。这种驱动模型为uboot中的各类驱动提供了统一的接口。
1. 模型
DM模型主要依赖于下面四种数据结构:
- struct udevice,具有硬件设备的抽象, 和driver实例相关
- struct driver 特定udevice的硬件驱动,包含了驱动的绑定、初始化、probe和卸载等函数。使用U_BOOT_DRIVER来注册。需要声明所属的uclass。
- uclass,维护一类驱动,例如显示部分有lcdif驱动,display controller驱动,他们都在驱动中声明自己属于UCLASS_VIDEO类。又例如所有的MIPI驱动都属于UCLASS_DSI_HOST类。
- struct uclass_driver,在我们写的驱动中,我们会使用UCLASS_DRIVER来注册一个uclass_driver对象。这个uclass驱动维护了这一类硬件驱动的接口,为上层的调用提供了统一的接口。