从U-boot使用tftpboot时是否将软件映像加载到非易失性RAM中?

时间:2016-09-13 21:01:24

标签: ram u-boot tftp

我有一个连接到RHEL工作站的Xilinx开发板。

我通过JTAG加载U-boot并使用minicom连接到它。

然后我tftpboot helloworld独立应用程序。

这些图片在哪里?

我知道我正在指定一个loadaddr,但我并不完全理解其含义。

当我运行独立应用程序时,我在串行控制台上获得了各种输出。

我第一次使它正常工作,但在构建时开始尝试不同的东西。

这几乎感觉就像是在破坏记忆,但我在电源循环后假设任何tftp都会丢失。

问题仍然是通过电源循环发生的。

1 个答案:

答案 0 :(得分:2)

  

这些图片在哪里?

U-Boot命令语法为:

tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

您可以将内存目标地址显式指定为loadAddress参数。

当命令中省略了loadAddress参数时,内存目标地址默认为环境变量 loadaddr 的值。
请注意,其他几个U-Boot命令也使用此 loadaddr 变量,例如" bootp"," rarpboot"," loadb"和" diskboot"。

  

我知道我正在指定一个loadaddr,但我并不完全理解其含义。

     

当我运行独立应用程序时,我在串行控制台上获得了各种输出。

loadAddress只是内存中将写入文件的起始地址 对于独立应用程序,此loadAddress应与用于链接此程序的CONFIG_STANDALONE_LOAD_ADDR匹配。

同样地"去"执行此独立应用程序的命令应使用相同的CONFIG_STANDALONE_LOAD_ADDR。

例如,假设您的主板的物理内存从0x20000000开始 要允许程序使用最大可用内存量,程序将配置为从以下位置开始:

#define CONFIG_STANDALONE_LOAD_ADDR        0x20000000

为方便加载,请定义环境变量(在U​​-Boot提示符下):

setenv loadaddr 0x20000000   

假设 serverip 变量是使用TFTP服务器的IP地址定义的,那么U-Boot命令

tftpboot hello_world.bin  

应从服务器检索该文件,并将其存储在0x20000000 使用

go 20000000  

执行程序。

  

我在电源循环后假设任何tftp都会丢失。

应该 但是什么可能会持续存在于" volatile"电源循环后的内存不可预测。您也无法确定默认值,例如全零或全部。动态RAM的内容应始终假定为未知,除非您知道它已被初始化并已被写入。

  

从U-boot使用tftpboot时是否将软件映像加载到非易失性RAM中?

仅当您的主板具有非易失性主存储器时(例如铁氧体磁芯或电池供电的SRAM,这种情况不太可能)。
你可以使用" md" (内存显示)命令检查RAM。