我想为zed板构建linux。当我查看u-boot/include/ that目录中的zynq-common.h文件时,我看到kernel_load_address是0x02080000。
为什么内核加载地址是0x02080000?它的逻辑是什么?
我使用的是2018.01版本。我提到的值是CONFIG_EXTRA_ENV_SETTINGS中的“CONFIG_EXTRA_ENV_SETTINGS”。
发布于 2018-11-07 23:52:59
我不认为那是实际的装载地址。默认情况下,UBoot应该将其加载到0x8000。可以修改它,但是arn不希望通过头文件进行修改。
(您不应该查看这些文件,特别是不修改它们。)
如果您想为zedboard构建内核,我建议您遵循以下任一指南:2014r2 https://highlevel-synthesis.com/2016/10/31/how-to-compile-xilinx-linux-kernel-for-zynq/
如果您不想在平台上构建内核,那么您还需要Xilinx提供的工具链,这需要花费4-6个小时或更长时间(我以前必须这样做,而不是很有趣)。
发布于 2018-11-08 20:21:58
我提到的值是CONFIG_EXTRA_ENV_SETTINGS中的“CONFIG_EXTRA_ENV_SETTINGS”。
这个特定的环境变量不是U的主线版本。所以很明显你在使用定制版本。
使用该env变量可能会使用主内存中的输入命令来定位内核映像。由于这是一个ARM板,内核映像将是一个zImage或uImage (它将包含一个zImage)。
zImage能够解压缩自己并将内核映像重新定位到适当的加载地址以供实际执行。
最后的加载地址通常是物理内存加0x8000的开始。请参阅Building kernel uImage using LOADADDR
由于内核将在解压缩过程中重新定位,因此used用于读取压缩内核映像的中间内存地址并不重要。附加到zImage的解压缩代码与位置无关,因此将zImage加载到内存中是灵活的。只要zImage驻留在高于内核实际加载地址的内存中,就没有问题(即额外的重定位)。
https://stackoverflow.com/questions/53195196
复制相似问题