从 U-boot 使用 tftpboot 时,软件映像是否加载到非易失性 RAM 中?
Is a software image loaded into non-volatile RAM when using tftpboot from U-boot?
我有一个连接到 RHEL 工作站的 Xilinx 开发板。
我通过 JTAG 加载了 U-boot 并使用 minicom 连接到它。
然后我 tftpboot helloworld 独立应用程序。
这些图片去了哪里?
我知道我在指定一个loadaddr,但是我不完全理解它的意思。
当我 运行 独立应用程序时,我在串行控制台上得到各种输出。
我第一次让它正常工作,但后来在构建时开始尝试不同的东西。
感觉好像我在破坏记忆,但我认为在电源循环后任何 tftp 都会丢失。
问题仍然是通过电源循环出现的。
Where do these images go?
U-Boot 命令语法为:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
您可以明确指定内存目标地址作为 loadAddress 参数。
当命令中省略loadAddress参数时,内存目标地址默认为环境变量loadaddr.
的值
请注意,其他几个 U-Boot 命令也使用此 loadaddr 变量,例如“bootp”、“rarpboot”、“loadb”和“diskboot”。
I understand I am specifying a loadaddr, but I don't fully understand the meaning.
When I run the standalone application, I get various outputs on the serial console.
loadAddress 只是内存中的起始地址,传输的文件将写入该地址。
对于独立应用程序,此 loadAddress 应与用于 link 此程序的 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
执行程序。
I assumed after a power cycle anything tftp'd would be lost.
应该。
但是,在电源循环之后可能会在“易失性”内存中持续存在的内容是不可预测的。您也不能确定默认值,例如全零或全一。动态 RAM 的内容应该始终被假定为未知,除非你知道它已经被初始化并被写入。
Is a software image loaded into non-volatile RAM when using tftpboot from U-boot?
仅当您的电路板具有非易失性主存储器(例如铁氧体磁芯或电池供电的 SRAM,这不太可能)。
您可以使用“md”(内存显示)命令来检查 RAM。
我有一个连接到 RHEL 工作站的 Xilinx 开发板。
我通过 JTAG 加载了 U-boot 并使用 minicom 连接到它。
然后我 tftpboot helloworld 独立应用程序。
这些图片去了哪里?
我知道我在指定一个loadaddr,但是我不完全理解它的意思。
当我 运行 独立应用程序时,我在串行控制台上得到各种输出。
我第一次让它正常工作,但后来在构建时开始尝试不同的东西。
感觉好像我在破坏记忆,但我认为在电源循环后任何 tftp 都会丢失。
问题仍然是通过电源循环出现的。
Where do these images go?
U-Boot 命令语法为:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
您可以明确指定内存目标地址作为 loadAddress 参数。
当命令中省略loadAddress参数时,内存目标地址默认为环境变量loadaddr.
的值
请注意,其他几个 U-Boot 命令也使用此 loadaddr 变量,例如“bootp”、“rarpboot”、“loadb”和“diskboot”。
I understand I am specifying a loadaddr, but I don't fully understand the meaning.
When I run the standalone application, I get various outputs on the serial console.
loadAddress 只是内存中的起始地址,传输的文件将写入该地址。
对于独立应用程序,此 loadAddress 应与用于 link 此程序的 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
执行程序。
I assumed after a power cycle anything tftp'd would be lost.
应该。
但是,在电源循环之后可能会在“易失性”内存中持续存在的内容是不可预测的。您也不能确定默认值,例如全零或全一。动态 RAM 的内容应该始终被假定为未知,除非你知道它已经被初始化并被写入。
Is a software image loaded into non-volatile RAM when using tftpboot from U-boot?
仅当您的电路板具有非易失性主存储器(例如铁氧体磁芯或电池供电的 SRAM,这不太可能)。
您可以使用“md”(内存显示)命令来检查 RAM。