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.