U-Boot 2013.07 (Nov 21 2013 - 18:12:40)
Memory: ECC disabled
DRAM: 1 GiB
MMC: zynq_sdhci: 0
SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
In: serial
Out: serial
Err: serial
Net: Gem.e000b000
Hit any key to stop autoboot: 0
SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
SF: 11010048 bytes @ 0x520000 Read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot-PetaLinux>
その後、run sdboot
SDカードから起動し、そこにSDブート用の画像を挿入します。
これは、UBootがデフォルトでフラッシュメモリから起動されることを示しています。デフォルトのブートデバイスがフラッシュドライブの代わりにSDカードになるようにするには、ubootで何を変更する必要がありますか?
このために環境変数を設定する必要がありますか?
答え1
u-bootオプションの詳細については、次のことをお勧めします。
U-Boot-PetaLinux> printenv
記載されている特定の環境変数の影響を確認してください。UBootEnv変数。おそらくあなたがする変更は
U-Boot-PetaLinux> setenv bootcmd 'run sdboot' ; saveenv ; reboot
bootcmd変数とbootargs変数を理解することが最も重要です。本当に難しいことはありません。情報がすぐそこにあります。
答え2
システムがすでに設定されている場合は、@Joe Kulが説明した方法を使用できます。実際には、必要なブートオプションで環境変数を設定し、u-boot設定ファイルをメディアに保存できます。
まだインストールをデバッグしている場合は、ソースコードに環境変数を設定してから再コンパイルする必要があります。 u-bootコマンドを見つけた後。
編集するファイルは、使用しているボードによって異なります。 mx23evkを使用するので、/include/configs/mx23evk.h
ファイルを編集します。/* Extra Environments */
セクションを見てください。
その部分をすべて削除し、これに置き換えました。
/* Extra Environments */
#define CONFIG_EXTRA_ENV_SETTINGS \
"boot_mfg=echo Running mfgtools...; " \
"ext2load mmc 0:6 0x40600000 /boot/uboot/mfgupdat.zIm; " \
"ext2load mmc 0:6 0x40a00000 /boot/uboot/mfgupdat.dtb; " \
"bootz 40600000 - 40a00000;\0" \
"boot_pro=echo Running Production...; " \
"ext2load mmc 0:6 0x40600000 /boot/uboot/pro_1.zIm; " \
"ext2load mmc 0:6 0x40a00000 /boot/uboot/pro_1.dtb; " \
"bootz 40600000 - 40a00000;\0" \
"boot_rescue=echo Running Rescue...; " \
"bootz 40600000 - 40a00000;\0" \
u-bootコマンドラインでは、事前定義された3つの起動設定のいずれかを選択できます。run boot_mfg
またはrun boot_pro
...
これにより、3つの異なる構成ですばやく起動できます。デバッグが完了したら、デフォルトに設定してください。
私の記憶が正しい場合は、変数と基本的な起動CONFIG_BOOTDELAY
に関連しているようです。CONFIG_BOOTCOMMAND
必要なカーネルとルートがあるパーティションのメディアから起動できるコマンドをすでに把握しているので、まず起動します。
ext2load mmc 0:6 0x40600000 /boot/uboot/mfgupdat.zIm
次に、自動的に起動するのではなく、ソースコードに設定した変数を実行して、このコマンドを反映するようにソースコードを変更します。
run my_boot_variable
これに満足している場合は、時間遅延の有無にかかわらず、その変数を使用して自動的に開始されるようにソースコードを再変更してください。複数のブート変数を追加し、キーストロークで別の変数を選択できます。
数ヶ月間この問題に取り組んでいないため、重要な情報が欠落している可能性がありますが、これにより正しい方向を把握できます。