오류: 이미지가 fdt가 아닙니다. 복구하려면 보드를 재설정해야 합니다.

오류: 이미지가 fdt가 아닙니다. 복구하려면 보드를 재설정해야 합니다.

프리스케일 1040RDB를 시작하려고 하는데 몇 가지 어려움을 겪고 있습니다. 저는 모든 yocto 레이어와 구성이 사전 설치된 yocto가 설치된 Linux VB 이미지가 있는 Freescale의 사전 구축된 SDK를 사용하고 있습니다. 성공적으로 실행할 수 있었고 bitbake이제 대상에 이미지를 배포하려고 합니다. 물론 Freescale의 문서는 전혀 쓸모가 없습니다. 그래서 시행착오를 거쳐 커널 이미지, 루트 파일 시스템, FDT라고 생각되는 것을 발견했습니다. TFTP를 사용하여 대상에 로드한 다음 메모리에서 부팅을 시도했습니다. 아래는 대상 직렬 터미널의 캡처입니다. 마지막 줄에 오류가 나타납니다. 이 시점에서 .dtb파일에 문제가 있는 것인지 아니면 준비 작업을 좀 해야 하는지 궁금합니다 . .dtb 파일의 16진수 덤프를 가져와 대상 플래시에 사전 설치된 장치 트리와 비교한 결과 비슷한 유형의 데이터라고 생각됩니다.

이 오류는 무엇을 의미하며 이를 해결하려면 어떻게 해야 합니까?

=> tftp 0x01000000 uImage
Using FM1@DTSEC4 device
TFTP from server 192.168.2.236; our IP address is 192.168.2.18
Filename 'uImage'.
Load address: 0x1000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ######################
         1.3 MiB/s
done
Bytes transferred = 5103714 (4de062 hex)
=> tftp 0x02000000 rootfs.gz.u-boot
Using FM1@DTSEC4 device
TFTP from server 192.168.2.236; our IP address is 192.168.2.18
Filename 'rootfs.gz.u-boot'.
Load address: 0x2000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##############################################################
         1.4 MiB/s
done
Bytes transferred = 3310270 (3282be hex)
=> tftp 0x00c00000 uImage.dtb      
Using FM1@DTSEC4 device
TFTP from server 192.168.2.236; our IP address is 192.168.2.18
Filename 'uImage.dtb'.
Load address: 0xc00000
Loading: #######
         994.1 KiB/s
done
Bytes transferred = 35655 (8b47 hex)
=> bootm 0x01000000 0x02000000 0x00c00000
WARNING: adjusting available memory to 30000000
## Booting kernel from Legacy Image at 01000000 ...
   Image Name:   Linux-3.12.19-rt30-QorIQ-SDK-V1.
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    5103650 Bytes = 4.9 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 02000000 ...
   Image Name:   fsl-image-minimal-t1040rdb-64b-2
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    3310206 Bytes = 3.2 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 00c00000
   Booting using the fdt blob at 0xc00000
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 2fcd7000, end 2ffff27e ... OK
ERROR: image is not a fdt - must RESET the board to recover.

답변1

이는 커널 이미지 압축 해제가 시작될 때(보통 덮어쓰기로 인해) fdt가 손상된 메모리인 것 같습니다. 0xe00000과 같은 더 높은 주소에서 fdt를 로드해 보십시오.

답변2

이미지를 더 높은 주소로 로드하여 이 문제를 해결했습니다. 내가하고있는 오류가 발생하면

fatload mmc 0 0x2000000 image.ub
bootm 0x2000000

나는 그것을하여 고쳤다.

fatload mmc 0 0x40000000 image.ub
bootm 0x40000000

image.ub용량이 크기 때문에 129476304 > 0x20000000번 주소로 압축을 풀 경우 압축 풀기 시 일부 내용이 덮어쓰일 수 있습니다.

답변3

사용 가능한 DRAM 크기, 커널 크기 및 itb를 로드하기 위해 선택한 clobstart를 기반으로 커널 및 fdt 노드에 대한 항목을 다시 계산하고 해당 항목의 속성 값을 로드해야 합니다.

관련 정보