Zynq700 SoC가 있는 독점 보드에는 512MiB의 메모리가 있습니다. 이는 주소 범위 [0x00000000,0x20000000]에 해당합니다.
저는 RAM 기반 OS를 실행 중이었고 다음과 같이 변경하기 전까지는 정상적으로 작동했습니다.
- 추가 변경 없이 rootfs에 valgrind, gdb, gdbserver 및 strace 패키지를 추가했습니다.
마침내:
- 내 핏 이미지가 커졌습니다(~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.