Linux 内核中对 DTS (Device Tree Source) 的解析主要发生在内核启动的早期阶段。具体流程如下:
1. 在内核引导过程中,内核会扫描硬件设备并检测到设备树的存在。
2. 接下来内核会调用 early_init_dt_scan() 函数来解析 DTS。这个函数会遍历设备树节点,提取出关键信息并保存到内核数据结构中。
3. 在后续的初始化过程中,内核会根据之前解析的设备树信息来探测和注册设备驱动程序。比如 platform_bus_init() 函数会根据设备树来注册各种 platform 设备。
4. 在内核完全初始化之后,还可以通过 /sys/firmware/devicetree 文件系统来访问解析好的设备树信息。
总的来说,DTS 的解析发生在内核启动的非常早期阶段,为后续的设备驱动注册和配置提供了基础信息。这种基于设备树的硬件描述方式使得内核可以更好地适配不同的硬件平台。