这些图片去哪里了?
U-Boot 命令语法为:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
您可以将内存目标地址显式指定为 loadAddress 参数。
当命令中省略loadAddress参数时,内存目标地址默认为环境变量loadaddr的值。
请注意,其他几个 U-Boot 命令也使用此 loadaddr 变量,例如“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-Boot命令
tftpboot hello_world.bin
应该从服务器检索该文件,并将其存储在 0x20000000。
使用
go 20000000
执行程序。
我假设重启后任何 tftp'd 都会丢失。
应该。
但是,在电源循环后,“易失性”内存中可能存在的内容是不可预测的。您也不能确定默认值,例如全零或全一。除非您知道动态 RAM 已初始化并已写入,否则应始终假定动态 RAM 的内容是未知的。
从 U-boot 使用 tftpboot 时是否将软件映像加载到非易失性 RAM 中?
仅当您的主板具有非易失性主存储器(例如铁氧体磁芯或电池供电的 SRAM,这不太可能)。
您可以使用“md”(内存显示)命令来检查 RAM。