Uboot - DM框架

DM(Driver Model)的作用就是把"设备"和"驱动"解耦,并提供统一的设备管理框架,如而 CLK、GPIO、SPI、I2C、MMC、USB 都只是运行在 DM 框架上的一个UCLASS。

DM 初始化入口:

scss 复制代码
dm_init()
dm_uninit()
dm_init_and_scan()
dm_scan_plat()
dm_scan_fdt()
dm_scan_other()
作用:
初始化 DM 根结构  
初始化 uclass_root  
扫描平台设备  
扫描设备树  
开始 bind 设备

UCLASS 管理函数:

uclass_get() 复制代码
uclass_find()
uclass_destroy()
uclass_add()
uclass_bind_device()
uclass_unbind_device()
uclass_find_device()
uclass_get_device()
uclass_first_device()
uclass_next_device()
uclass_first_device_err()
uclass_next_device_err()
作用:
根据 UCLASS_ID 找 struct uclass
创建 struct uclass
把 udevice 挂到 uc->dev_head
遍历某个 uclass 下的所有设备

DEVICE 绑定和 Probe 函数

device_bind() 复制代码
device_bind_driver()
device_bind_driver_to_node()
device_bind_by_name()
device_bind_common()

device_probe()
device_remove()
device_unbind()

device_get_child()
device_find_child()
device_find_first_child()
device_find_next_child()
device_find_global_by_ofnode()
作用:
创建 struct udevice
设置 dev->driver
设置 dev->uclass
设置 dev->parent
挂到父设备 child_head
挂到 uclass->dev_head
执行 probe/remove/unbind

Linker List / Driver 查找函数

lists_uclass_lookup() 复制代码
lists_driver_lookup_name()
lists_bind_fdt()
lists_bind_drivers()
作用:
从 __u_boot_list_2_uclass_driver 找 uclass_driver
从 __u_boot_list_2_driver 找 driver
根据 compatible 匹配 U_BOOT_DRIVER
绑定设备树节点

udevice 私有数据函数

dev_get_priv() 复制代码
dev_get_plat()
dev_get_uclass_priv()
dev_get_parent_priv()
dev_get_parent_plat()
dev_get_driver_data()
作用:
获取 driver 私有数据
获取 plat 数据
获取 uclass 私有数据
获取父设备私有数据
获取 of_match.data
相关推荐
GeW43 分钟前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by209991 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
cq林志炫2 小时前
两个Linux服务器之间同步文件
linux·运维·服务器
无人生还别怕3 小时前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos
企鹅侠客4 小时前
Linux CPU 负载平均值(Load Average)详解:从原理到实践
linux·运维·服务器·服务器负载
易点云徐源4 小时前
HP 暗影精灵 PRO 16 安装双系统后,开机直接进入 Windows,按 F9 才能进入 Ubuntu:GRUB 菜单不显示的处理方法
linux·运维·ubuntu
第404号工位4 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构
就像楞次定律4 小时前
【Linux 学习记之二】C++ 构建体系与底层链接机制的深度透视(1)
linux·后端
米优4 小时前
linux下获取崩溃程序的core文件
linux·运维·服务器
qeen875 小时前
【Linux】动静态库的制作使用及ELF文件的宏观理解
linux·运维·库