以下は から抜粋した内容です。u-boot-xarm/include/configs/zynq_zc702.h
"qspiboot=echo Copying Linux from QSPI flash to RAM...; \
cp 0xFC100000 0x8000 ${kernel_size}; \
cp 0xFC600000 0x1000000 0x8000; \
echo Copying ramdisk...; \
cp 0xFC800000 0x800000 ${ramdisk_size};\
ping 10.10.70.101;\
go 0x8000\0" \
誰かが次の2行で何が起こっているのか説明できますか?
cp 0xFC100000 0x8000 ${kernel_size}; \
cp 0xFC600000 0x1000000 0x8000; \
このアドレスはどのように選択されますか?住所がなぜこんなに多いの?
答え1
Linuxを起動する前に、フラッシュメモリに保存されているカーネルとinitrdをRAMにコピーしてください。 cp コマンドは次に記録されます。cp - メモリコピー
ソースアドレスは、フラッシュu-bootコードを保持しないフラッシュメモリ領域です。宛先アドレスは、u-bootが実行中に独自のコード/データに使用しないRAM領域です。
答え2
QSPI flash-to-RAMコピーコマンドの構文定義を見たことはありませんが、パターンは次のとおりです。
cp src_addr dst_addr copy_size
2番目のコピーは、devicetree.dtb
RAM上のLinuxカーネルの開始アドレス(0x8000)とまったく同じサイズ(0x8000)のデバイスツリー()用です。