2017-07-10 14 views
0

を実行している間、私は短いブートコードを書いたとしてQEMUでそれを実行しようとした:QEMUエラー私のブート

のqemu-システムarm.exe -M versatilepb -cpu皮質-A9 -kernel次にboot.bin

私はコードが0x8400000に対処するためにロードされると予想が、QEMUは、エラー0x84000000 これでRAMまたはROM外のコードを実行しようとすると

は通常folloの1を意味し、私を返さ(1)QEMUに間違ったマシンタイプのカーネルを実行させ、起動時にクラッシュした(例えば、versatilepb QEMUマシンでラズベリーパイカーネルを実行しようとした) (2) QEMUにはカーネルやBIOSのファイル名を与え、QEMUは終了時までノーオペレーション命令でいっぱいのROMを実行しました (3)ゲストカーネルにバグがあり、どこにでもジャンプしてクラッシュしました。

これはほとんどの場合、最初の2つのうちの1つですので、コマンドラインを確認し、このマシンに正しいタイプのカーネルを使用していることを確認してください。 オプション(3)が考えられる場合は、-dデバッグオプションを使用してゲストをデバッグできます。特に-d guest_errorsを指定すると、この時点でログにゲストレジスタの状態のダンプが含まれます。

実行を続行できません。ここで停止します。

それが適切な場所

にロードされていないので、だから私は、私はおよそ間違っている何私のコードがまだ動作して開始されていないと思いますか?

おかげ

答えて

0

あなたは「私はコードが0x8400000に対処するためにロードされると予想」と言うが、QEMUのエラーメッセージは同じ番号(それは余分な0を持っている)ではありません「0x84000000」を言います。これは、あなたのリンカースクリプトや、あなたのboot.binファイルの作成中にタイプミスがあることを示唆しています。 (私はboot.binがELFファイルであると仮定しています。これは、ELFファイルが指定するアドレスにQEMUがロードされます。そうでなければ、自己再配置が可能なLinuxカーネルイメージであると仮定してRAMにロードされます)。

+0

余分な0について - 私の間違いは、私は0x84000000を意味します。 –

+0

ELFファイルをロードする場所が0x84000000の場合、QEMUの動作は正しい - そのアドレスにはRAMは存在しません。バイナリをビルドして、ボードにRAMがない場所ではなくRAMがある場所にロードする必要があります。 –

関連する問題