当前位置: 代码迷 >> 综合 >> 3.4dtb转换为device_node
  详细解决方案

3.4dtb转换为device_node

热度:73   发布时间:2023-10-16 01:28:03.0

 

device_node只是某个结构体而已。
在uboot中把设备树文件随表放入内存中的某个地方就可以使用,为什么内核运行过程中它不会覆盖dtb文件所占用的那块内存呢?
在设备树格式那篇文章中曾经说过,在设备树文件中可以用memreserve指定一块内存,这块内存就是保留下来的内存,内核不会占用它。即使没有指定这块内存,当内核启动的时候,它也会把设备树文件所在的那块内存保留出来。

看一下函数的调用过程:

start_kernel // init/main.csetup_arch(&command_line);  // arch/arm/kernel/setup.carm_memblock_init(mdesc);   // arch/arm/kernel/setup.cearly_init_fdt_reserve_self();/* Reserve the dtb region */// 把DTB所占区域保留下来, 即调用: memblock_reserveearly_init_dt_reserve_memory_arch(__pa(initial_boot_params),fdt_totalsize(initial_boot_params),0);           early_init_fdt_scan_reserved_mem();  // 根据dtb中的memreserve信息, 调用memblock_reserveunflatten_device_tree();    // arch/arm/kerne
  相关解决方案