2016-09-13 29 views
1

我有一個連接到RHEL工作站的Xilinx開發板。從U-boot使用tftpboot時,是否將軟件映像加載到非易失性RAM中?

我有U-boot通過JTAG加載並使用minicom連接到它。

然後我tftpboot helloworld獨立應用程序。

這些圖像去哪裏?

我知道我在指定一個loadaddr,但我不完全理解其含義。

當我運行獨立應用程序時,我在串行控制檯上得到各種輸出。

第一次讓它正常工作,但是在構建時開始嘗試不同的東西。

它幾乎像我打破記憶的感覺,但我在電源循環後假設任何tftp'd將會丟失。

這個問題依然在電源循環中發生。

回答

2

這些圖像去哪裏?

U-Boot的命令語法如下:

tftpboot [loadAddress] [[hostIPaddr:]bootfilename] 

您可以明確指定存儲目標地址爲loadAddress參數。

當從命令中省略loadAddress參數時,則內存目標地址默認爲環境變量loadaddr的值。
請注意,其他幾個U-Boot命令也使用此變量,例如「bootp」,「rarpboot」,「loadb」和「diskboot」。

我知道我指定了一個loadaddr,但我不完全理解其含義。

當我運行獨立應用程序時,我在串行控制檯上得到各種輸出。

loadAddress只是傳輸文件將被寫入的內存的起始地址。
對於獨立應用程序,此loadAddress應與用於鏈接此程序的CONFIG_STANDALONE_LOAD_ADDR相匹配。

同樣,執行這個獨立應用程序的「go」命令應該使用相同的CONFIG_STANDALONE_LOAD_ADDR。


例如,假設電路板的物理內存從0x20000000開始。
爲了允許程序使用可用存儲器的最大量,該程序被配置成在啓動:

#define CONFIG_STANDALONE_LOAD_ADDR  0x20000000 

爲了方便裝載,定義環境變量(在U​​-Boot的提示):

setenv loadaddr 0x20000000 

假設SERVERIP變量與TFTP服務器的IP地址所定義,然後將U型引導命令

tftpboot hello_world.bin 

應該從服務器檢索該文件,並將其存儲在0x20000000。
使用

go 20000000 

執行程序。


我一個電源週期的任何tftp'd會丟失後承擔。

它應該。
但是在電源週期結束後,「易失」內存可能會持續存在的情況是不可預測的。你也不能確定一個默認值,比如全零或全零。除非知道已經初始化並寫入,否則動態RAM的內容應始終假定爲未知。

從U-boot使用tftpboot時,是否將軟件映像加載到非易失性RAM中?

僅當您的主板具有非易失性主內存(例如鐵氧體內核或電池供電的SRAM,這不太可能)時。
您可以使用「md」(內存顯示)命令來檢查RAM。

相關問題