2016-09-13 19 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。

相关问题