2013-04-08 105 views
2

我有一個工作u-boot閃動的板子。現在我想爲bootloader添加一些功能(用於初始化硬件的某些部分),但是如果我犯了一些錯誤,開發過程可能會讓開發板變磚。 是否可以做如下提到的多階段啓動: 1)啓動u-boot 2)u-boot會加載我的二進制文件,它增加了初始化硬件的功能。 3)我的二進制文件會加載並啓動linux內核。多階段啓動

如果有可能,一些指針將不勝感激。謝謝。

+0

工作太多!您已經創建了一個XY問題。使用'go'命令加載「子程序」可能更簡單,並繼續使用U-Boot加載內核。 http://stackoverflow.com/questions/15340089/how-to-run-custom-kernel-on-beaglebone/15375308#15375308最終你應該將這個新的板初始化代碼合併到U-Boot中。 – sawdust 2013-04-09 00:40:21

+0

謝謝!我想我需要使用「去」命令。 – xpankaj 2013-04-09 04:14:34

+0

您可能會將U-Boot'go'命令用於下一級引導加載程序或子程序。 – sawdust 2013-04-09 19:23:52

回答

1

是的。多級引導通常用於ARM SoC。

以TI OMAP設備爲例,使用兩個boot-loader實例。第一種是在沒有任何預期的情況下運行SDRAM初始化,並被複制到 並從48kB的嵌入式SRAM中執行。除了一些基本的硬件初始化(例如,SDRAM,爲某些功能單元啓用電源,啓用時鐘)之外,除了第二階段引導加載程序之外,它並沒有太多的工作。即使這是一個緊身衣。

u-Boot(以及Barebox,也可能是其他引導加載程序)源代碼樹都有構建選項來構建此設置,我相信您可以顛覆它。

修改現有的引導裝載程序可能會更好。我有很好的使用Barebox的經驗。

對於OMAP,第一個引導加載程序通常被稱爲MLO - 這可能有助於查找資源。

+0

感謝您的回答。我目前沒有用於閃存引導程序的工具。所以目前唯一的方法就是開發另一個二進制文件,它將在u-boot之後作爲bootloader的另一個階段工作。 – xpankaj 2013-04-08 11:21:51

+0

第一次閃動引導加載程序時會感到有些緊張不安 - 但是,大多數系統都有一些主要引導選項,因此您通常可以使用無需牢獄之災的卡而不是磚塊板。 – marko 2013-04-08 12:25:25