2016-02-12 60 views
1

我們如何從U-Boot引導獨立的裸板二進制文件(不是使用U-Boot環境而不是Linux內核運行的獨立二進制文件)。我的要求是使用我的二進制文件重新初始化電路板和驅動程序...如何從U-Boot啓動裸板二進制文件?

我可以使用我的二進制代替啓動介質(這裏是NOR Flash)中的U-Boot,但是我的要求是不從U-Boot中刪除NOR閃存,我應該使用「tftp」命令從LAN網絡加載我的二進制文件。

感謝和問候, Veerendranath

+0

使用U-Boot的'tftpboot'和'go'命令來執行任何類型的獨立程序。見http://stackoverflow.com/questions/15340089/how-to-run-custom-kernel-on-beaglebone/15375308#15375308 – sawdust

+0

@sawdust謝謝你的回覆......我知道這些選項。這裏的問題是,當我使用go命令時,我的程序必須使用U-Boot服務功能(我的意思是獨立的二進制文件將在U-Boot環境中運行)。但是我想從U-Boot中完全控制,因爲我的二進制文件是自我包含內核的二進制文件...但是我無法使用bootm或U-Boot提供的任何其他啓動命令來啓動,因爲我的二進制文件不是內核格式......請讓我知道如果您有任何想法完成它與定製U-Boot .... – veerendranath

回答

3

如何從U-Boot的啓動裸板二進制?

使用U-Boot的go命令來執行任何類型的獨立程序。

我們如何才能啓動獨立的裸板二進制(不是獨立的它運行使用U-Boot的環境,而不是Linux內核二進制)從U-Boot的。

使用U-Boot的go命令來執行任何類型的獨立程序。

...我應該使用「tftp」命令從LAN網絡加載我的二進制文件。

使用U-Boot的tftpbootgo命令來執行任何類型的獨立程序。 (縮寫tftp命令已被現在不提倡使用的還有一個tftpput命令。)

這裏的問題是,當我使用GO命令我的程序使用的U-Boot服務功能(我的意思是獨立的二進制文件會以U運行-Boot環境)...

你是誤傳,沒有任何要求,你必須 「使用U-Boot的服務功能」。
獨立於U-Boot構建獨立程序,它將完全獨立於U-Boot。

但我無法使用bootm或U-Boot提供的任何其他啓動命令來啓動,因爲我的二進制文件不是內核格式。

沒有「內核格式」;這就是爲什麼U-Boot使用mkimage包裝來識別二進制文件。
bootm命令是專門爲Linux內核等操作系統(例如包含命令行參數的緩衝區)的引導需求而設計的,通過指定二進制文件的特性。
使用U-Boot的go命令來執行任何類型的簡單獨立程序。

如果在使用go命令時執行二進制文件時遇到問題,那麼問題在於您的程序,例如,控制處理器並初始化其C語言環境。

附錄
當我使用的術語獨立方案,我指的是generic definition(又名裸金屬),而不是U-Boot-specific definition與其實例/目錄。
FWIW我對這兩種「獨立」程序都使用了go命令。
U-Boot的描述了它的 「獨立」 作爲

* "Standalone Programs" are directly runnable in the environment 
* provided by U-Boot; it is expected that (if they behave 
* well) you can continue to work in U-Boot after return from 
* the Standalone Program. 

注意的是,使用U-Boot的環境是可選的。
獨立程序不需要使用U-Boot環境,尤其是在無意返回U-Boot的情況下。
U-Boot沒有檢測或限制獨立程序的行爲。

如果你不能讓你的獨立程序與go命令工作,那麼問題出在你的程序,而不是go命令。
go命令只是將控制權(即分支指令轉移到指定的存儲器位置),並且對該代碼沒有任何限制或要求(除了對系統的操作敏感之外)。

使用在線仿真器(ICE)或JTAG調試器來解決代碼問題,特別是當您的程序不使用現有堆棧時。

附錄2
代替曖昧go命令時,mkimage包裝並提供用於standalone圖像類型用於與bootm命令使用。
請參閱Creating a bare metal boot image,但不要指望go命令的結果不同。
使用包裝和bootm超過go的優點是,所下載的圖像(的uImage文件)可以是:

  • 識別/與iminfo命令驗證,
  • 壓縮(例如gzip的,bzip2的,LZO )或未壓縮。
+0

我已經嘗試啓動我的二進制使用去命令,但沒有工作......在這裏我的二進制的主要要求是控制處理器,初始化控制器.. 和關於獨立程序,你可以檢查這個https://compulab.co.il/workspace/mediawiki/index。php5/U-Boot:_Images – veerendranath

+0

*「我的二進制文件的主要要求是控制處理器並重新初始化控制器」* - 注意對您的程序可以進行的操作*「重新初始化」 *。你的程序已經加載並在DRAM中執行,所以任何會影響DRAM定時的時鐘都不能被修改, – sawdust

+1

*「我已經試着用go命令啓動我的二進制文件,但是沒有工作」* - 然後你問錯誤的問題。 **沒有可以產生更好或不同結果的替代U-Boot命令。**實際上,您有關於獨立編程的問題,這應該是您的問題。所以,因爲這實際上是一個編程問題,所以您應該發佈代碼並詳細說明如何編譯和鏈接它。 – sawdust

相關問題