계속 증가하는 크기에 이미지를 적응시키는 DRAM 문제

계속 증가하는 크기에 이미지를 적응시키는 DRAM 문제

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.

관련 정보