這些圖像去哪裏?
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。