QEMU メモ書き 

QEMUとはOSSのプロセッサ・エミュレータである。筆者はQEMUでCortex-R5用のバイナリを動かしたいのでしばらくその調査を行う。

今回は以下の記事について調べたことをメモする

Cortex-R5を単体で動作させるには、QEMUの本家ではなくhttps://github.com/Xilinx/qemu.gitから入手する。QEMUでは以下のようにコマンド実行する

qemu-system-aarch64 
-M arm-generic-fdt \
-nographic \
-serial mon:stdio \
-dtb /tmp/dts/LATEST/SINGLE_ARCH/zcu102-arm.dtb \
-device loader,file=./atk2-sc1-mc,cpu-num=4 \
-device loader,addr=0xff5e023c,data=0x80008fde,data-len=4 \
-device loader,addr=0xff9a000,data=0x8000218,data-len=4
  1. qemu-system-aarch64 ARM64マシンのエミュレータ。Cortex-R5は32bitであるがエミュレーションしているのはXilinxのボードでありメインのコアは64bit ARMだからだろう。

  2. -M arm-generic-fdt マシンタイプを指定。arm-generic-fdtはXilinx/qemu.gitにのみあるマシンタイプ

  3. -nographic GUIを立ち上げずにシリアル接続できる。

  4. -serial mon:stdio ターミナルにシリアルコンソールとQEMU monitorを表示する

  5. -dtb /tmp/dts/LATEST/SINGLE_ARCH/zcu102-arm.dtb device tree blobの指定

  6. -device loader,file=./atk2-sc1-mc,cpu-num=4 初期に./atk2-sc1-mcにあるファイルの内容をメモリにロードする。ロードしたアドレスか実行可能ファイルであればエントリポイントに、CPU4(R5-0)のプログラムカウンタをセットする

  7. -device loader,addr=0xff5e023c,data=0x80008fde,data-len=4 指定されたアドレスに、dataで指定された値を書きこむ。data-lenは4byteの意味

  8. これも同様。7と合わせて、2つあるCortex-R5のうち1つ(R5-0)をアンロックするコントロールレジスタ設定である。

この記事が気に入ったらサポートをしてみませんか?