
フリースケール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 > 0x2000000
アドレス0に解凍すると、解凍時に一部の内容が上書きされることがあります。
答え3
使用可能なDRAMサイズ、カーネルサイズ、およびitbをロードするには、選択したclobstartに基づいてカーネルノードとfdtノードのエントリを再計算し、そのエントリのプロパティ値をロードする必要があります。