繁体   English   中英

如何从u-boot内部为Linux内核选择不同的设备树

[英]How can I choose different device trees from inside u-boot for the Linux kernel

我需要将不同的设备树变体传递给我的linux内核,这取决于只能在运行时确定的电路板修订版。

设置内核启动以处理只能在启动时从u-boot中确定的各种硬件布局的已建立方法是什么?

答案较晚,但我最近添加了处理相同问题的方法。

使用u-boot,您实际上可以为此编写一个宏。

设备树文件的u-boot环境变量是“ fdtfile ”。

从那里,您可以定义一个宏,该宏根据您的特定需要设置此变量,例如:

setenv findfdt '
if test $mycondition = value1; then setenv fdtfile devicetree1.dtb; fi;
if test $mycondition = value2; then setenv fdtfile devicetree2.dtb; fi;
..'

然后,您可以只创建一个.txt文件来注册此宏,然后使用mkimage工具创建一个二进制映像.img以供u-boot加载:

mkimage -T script -d macros.txt macros.img

您当然可以用一个更复杂的宏来包装该宏,该宏将在每次引导时执行。

bootm命令采用三个参数:

bootm ${kernel_addr} ${ramdisk_addr} ${fdt_addr}

第三个是内存中展平的设备树blob的地址。 因此,如果您具有不同的设备树,则将它们加载到不同的内存地址中并将它们传递给bootm ,或使用不同的blob加载该内存地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM