![尺寸不断增加的适配图像的 DRAM 问题](https://linux22.com/image/210341/%E5%B0%BA%E5%AF%B8%E4%B8%8D%E6%96%AD%E5%A2%9E%E5%8A%A0%E7%9A%84%E9%80%82%E9%85%8D%E5%9B%BE%E5%83%8F%E7%9A%84%20DRAM%20%E9%97%AE%E9%A2%98.png)
我在带有 Zynq700 SoC 的专有板上拥有 512 MiB 内存容量。这对应于地址范围[0x00000000,0x20000000]。
我在其上运行基于 ram 的操作系统,它工作正常,直到我进行以下更改:
- 我将 valgrind、gdb、gdbserver 和 strace 包添加到 rootfs,无需进一步更改。
最后:
- 我的合身图像变大了 (~x2)。
- 我通过 JTAG 从 clobstart 加载此 itb(我已在地址 0x10000000 处定义)
- 我计算主机上适合图像的 crc32,然后使用 u-boot crc32 实用程序从该 RAM 地址到文件的大小,crc 是相同的。
- 我继续启动,内核挂在下面显示的消息上。
我突然想到,也许我可能与 DRAM 那个区域中已经加载的东西重叠。我在下面留下了我的 fitImage 的详细信息以获取更多信息。
==> bootm $clobstart
## Loading kernel from FIT Image at 10000000 ...
Using 'conf@1' configuration
Verifying Hash Integrity ... OK
Trying 'kernel@1' kernel subimage
Description: Linux kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x100000cc
Data Size: 46423824 Bytes = 44.3 MiB
Architecture: ARM
OS: Linux
Load Address: 0x00008000
Entry Point: 0x00008000
Hash algo: crc32
Hash value: 3d108223
Verifying Hash Integrity ... crc32+ OK
## Loading fdt from FIT Image at 10000000 ...
Using 'conf@1' configuration
Trying 'fdt@1' fdt subimage
Description: Flattened device tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x12c460c0
Data Size: 16036 Bytes = 15.7 KiB
Architecture: ARM
Hash algo: crc32
Hash value: 15b17b33
Verifying Hash Integrity ... crc32+ OK
Booting using the fdt blob at 0x12c460c0
Loading Kernel Image ... OK
Loading Device Tree to 07ff9000, end 07fffea3 ... OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Error: unrecognized/unsupported machine ID (r1 = 0x00000000).
Available machine support:
ID (hex) NAME
ffffffff Generic DT based system
ffffffff ARM Versatile Express
ffffffff Xilinx Zynq Platform
Please check your kernel config and/or bootloader.