http://uclinux.quake4.jp/read.php?FID=2&TID=107&p=4
上記サイトからの抜粋
> 5.redbootのloadコマンドを調査。
> → load.cのload_elf_image()ルーチンの395行目付近の、addrの調整で計算漏れがある模様。
> <原因>
> ・RedbootでのLoadコマンドに不具合があり、ELFファイルをロードすると、データのロード漏れするため発生
> DRAMの種別が違う(交換すると)と動くのは、ロード漏れしているエリアのDRAMの初期値の違いによる。
> <対策>
> 以下、確実性の高いとおもわれる順に挙げます。
> 1)Redbootを修正できる環境があれば、loadコマンドを修正する
> 2)出来なければ、LinuxカーネルをSREC、BINなどのフォーマットに変換し使用する(ELF以外なら正しくロードされます)
> 3)それも面倒ならload前にmfillコマンドで0クリアする
> (私的にはDRAM交換やCBRの変更では、メモリ初期値や保持特性が変わって動いているだけなので確実性が若干低いものと思います)
>
> 私のところでは、1)の対策後、問題の沖製DRAMを追加購入し、2MB x 2 構成でも問題なく動くようになりました。
上記サイトからの抜粋
> 5.redbootのloadコマンドを調査。
> → load.cのload_elf_image()ルーチンの395行目付近の、addrの調整で計算漏れがある模様。
> <原因>
> ・RedbootでのLoadコマンドに不具合があり、ELFファイルをロードすると、データのロード漏れするため発生
> DRAMの種別が違う(交換すると)と動くのは、ロード漏れしているエリアのDRAMの初期値の違いによる。
> <対策>
> 以下、確実性の高いとおもわれる順に挙げます。
> 1)Redbootを修正できる環境があれば、loadコマンドを修正する
> 2)出来なければ、LinuxカーネルをSREC、BINなどのフォーマットに変換し使用する(ELF以外なら正しくロードされます)
> 3)それも面倒ならload前にmfillコマンドで0クリアする
> (私的にはDRAM交換やCBRの変更では、メモリ初期値や保持特性が変わって動いているだけなので確実性が若干低いものと思います)
>
> 私のところでは、1)の対策後、問題の沖製DRAMを追加購入し、2MB x 2 構成でも問題なく動くようになりました。