Embedded
錯誤:圖像不是 fdt - 必須重置板才能恢復
我正在嘗試啟動飛思卡爾 1040RDB 並且遇到了一些困難。我正在使用來自飛思卡爾的預建構 SDK,它有一個 linux VB 映像,其中安裝了 yocto 以及預安裝的所有 yocto 層和配置。我已經能夠成功執行
bitbake
,現在正在嘗試在目標上部署圖像。當然,飛思卡爾的文件完全沒用。因此,通過反複試驗,我發現了我認為的核心映像、根文件系統和 FDT。我正在使用 TFTP 將它們載入到目標上,然後嘗試從記憶體啟動。下面是目標串列終端的擷取。錯誤在最後一行。在這一點上,我想知道是否有問題.dtb
文件,或者我需要做一些準備。我已經對 .dtb 文件進行了十六進制轉儲,並將其與目標快閃記憶體中預安裝的設備樹進行了比較,並認為它們是相似類型的數據。這個錯誤是什麼意思,我能做些什麼來解決它?
=> 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.
這似乎是核心映像開始解壓縮時 fdt 損壞的記憶體(通常是由於覆蓋)。嘗試將 fdt 載入到更高的地址,例如 0xe00000。
我通過將圖像載入到更高的地址解決了這個問題。當我收到我正在做的錯誤時
fatload mmc 0 0x2000000 image.ub bootm 0x2000000
我通過這樣做來修復它
fatload mmc 0 0x40000000 image.ub bootm 0x40000000
由於它
image.ub
的大小129476304 > 0x2000000
,如果它解壓縮到地址 0,它可能會在解壓縮時覆蓋某些內容。