u-boot がカーネルを開始後に PetaLinux イメージをカーネルまたはネットワーク (netboot を使用) からブートしますが、何も起こらず、ボードも起動していなように見えます。
## Booting kernel from Legacy Image at 50002000 ... Image Name: PetaLinux Kernel 2.6-MMU Image Type: MicroBlaze Linux Kernel Image (uncompressed) Data Size: 9481732 Bytes = 9 MB Load Address: 50000000 Entry Point: 50000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK ## Transferring control to Linux (at address 50000000), 0x50000000 ramdisk 0x00000000, FDT 0x00000000...
しかし、Linux カーネル image.elf は petalinux-jtag-boot を使用して直接、問題なくブートできます。
PetaLinux v1.1 を使用しています。
背景
ボードが起動しない原因としては、クロックやリセット信号などハードウェアの不適切な設定や、シリアル ポート インターフェイスの設定の誤りなど、さまざまな要素が考えられます。
ただ PetaLinux SDK 1.1 リリースには、カーネル ブートの初期段階における CPU の初期化に関連して、この問題を引き起こすバグがあります。次の回避策を実行し、それでも問題が発生するかを確認してください。
PetaLinux SDK v1.2 およびそれ以降では、この問題は発生しません。
回避策
この問題を回避するには、次のファイルを修正します。
$PETALINUX/software/linux-2.6.x/arch/microblaze/kernel/setup.c
56 行付近で、次のようにします。
/* Add this line */ invalidate_dcache(); enable_dcache()
これにより、CPU データ キャッシュが有効になる前に、正しく無効化されます。
この後、カーネルおよびシステム イメージを再構築し、再びブートしてください。
この変更後も問題が発生する場合、その原因はその EDK ハードウェア プロジェクトなど、ほかのところにあると考えられます。
解決策
この問題は、PetaLinux v1.2 およびそれ以降のリリースで修正されています。
AR# 53499 | |
---|---|
日付 | 02/05/2014 |
ステータス | アクティブ |
種類 | 一般 |
デバイス | |
ツール | |
IP |