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
qemu-system-aarch64 ARM64マシンのエミュレータ。Cortex-R5は32bitであるがエミュレーションしているのはXilinxのボードでありメインのコアは64bit ARMだからだろう。
-M arm-generic-fdt マシンタイプを指定。arm-generic-fdtはXilinx/qemu.gitにのみあるマシンタイプ
-nographic GUIを立ち上げずにシリアル接続できる。
-serial mon:stdio ターミナルにシリアルコンソールとQEMU monitorを表示する
-dtb /tmp/dts/LATEST/SINGLE_ARCH/zcu102-arm.dtb device tree blobの指定
-device loader,file=./atk2-sc1-mc,cpu-num=4 初期に./atk2-sc1-mcにあるファイルの内容をメモリにロードする。ロードしたアドレスか実行可能ファイルであればエントリポイントに、CPU4(R5-0)のプログラムカウンタをセットする
-device loader,addr=0xff5e023c,data=0x80008fde,data-len=4 指定されたアドレスに、dataで指定された値を書きこむ。data-lenは4byteの意味
これも同様。7と合わせて、2つあるCortex-R5のうち1つ(R5-0)をアンロックするコントロールレジスタ設定である。