簡體   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