qemuのファイルへのゲストRAMのマッピング

qemuのファイルへのゲストRAMのマッピング

Cortex M3 CPUをシミュレートしており、実行時に一部のパラメータをゲストに渡そうとしています。最も簡単なアイデアは、いくつかのメモリ領域に直接書き込むようです。単に追加しようとしましたが、-mem-path /tmp/qemu.ram何もしませんでした。次へ追加

-object memory-backend-file,id=mem,size=128K,mem-path /tmp/qemu.ram \

少なくともqemuで働いた。しかし、実行時には何も記録されず、ゲストメモリマップとファイルの間にまったく接続がないようです。

明確に言えば、QEMUがゲストRAMを割り当てるのではなく、ファイルをマッピングして使用するということです。これにより、実行時にファイルを検索、読み取り、および書き込みできます。私は何を見逃していますか?実行時にゲストのRAM / MMIOへの書き込みアクセス権を持つ他の便利な方法はありますか?

答え1

私はこれをqemu 8.0.3でうまく実演しました(4.2.1では失敗しました)。

qemu-system-ppc -M ppce500,memory-backend=foo.ram -cpu e500 -m 256M,slots=2,maxmem=1g  -d guest_errors,unimp -bios $PWD/test.elf  -s -object memory-backend-file,size=256m,id=foo.ram,mem-path=$PWD/realmemory,share=on,prealloc=on 

鍵となるのは、ID foo.ram を使用して「memory-backend=foo.ram」と「-object memory-backend-file」を相互参照することです。特に(上の質問に答える)「share = on」を追加することは、VM内の書き込みが外部に表示されるようにするために重要です。それ以外の場合は読み取りが表示されますが、書き込みはローカルになります。

少なくともこのOS /プログラムでは、メモリの変更を確認するためにバックアップファイルを調べる必要があります。最初の数ページのアドレスはゼロです。

関連情報