Zephyr ESP32 notesを書いたので、次はqemuのメモをダンプしていきます。
対象は以下の2つです。
- qemu-system-x86_64
- qemu-system-aarch64
...が、そのうち増えるかもしれません(笑)
話の発端
まず、私は数年前から単純にCPUを使いまくるテスト用(というか教育用?)のプログラム(mpmt)を作っています。
ここにおいてあります。
https://github.com/thatsdone/mpmt
取り扱う言語が30を超えたくらいからネタ切れ感がでてきていたのと、 AGLに絡みはじめてから 同じLinux Foundation配下のRTOSにZephyrをAGLのSDV Reference PFで使おうよという話、 つまり SoDeV プロジェクトに首をつっこみはじめてから、 当時者としてZephyrに興味を持つようになりました。
それで、言語やそのランタイムだけではなく、RTOSでもmpmtを動かしてみるか…と思い至ったというのが発端です。
mpmtのZephyr版は このあたり を見てみてください。
さて、以下気づきのメモを列挙していきますが。他の記事と同様に随時更新していきます。
ターゲット...というかボード指定?のやりかた
west build する際に -b に何を指定するか?という話です。
- x86_64の場合
- qemu_x86_64
- ARM64の場合
- qemu_kvm_arm64
以下、マニュアル。
- x86/x86_64 qemu target board
- https://docs.zephyrproject.org/latest/boards/qemu/x86/doc/index.html
- ARM64 qemu target board
- https://docs.zephyrproject.org/latest/boards/qemu/kvm_arm64/doc/index.html
できあがるバイナリ
west build -t run ではなく、qemu-system-xxx から直接実行したい…とか、libvirtで制御できるようにしたいという場合には気にする必要があります。
x86_64の場合
x86_64の場合、buildディレクトリの中にバイナリが2つできあがります。
一方はZephyrのメインプログラムでもう一方はloaderになります。 mpmtのZephyr版のREADMEに書いておきましたがこういう感じです。
- kernel: zephyr-qemu-locore.elf
- loader: zephyr-qemu-main.elf
aarch64の場合
こちらは一般的な組み込み用のボードと同じで1つだけです。 buildディレクトリの中にzephyr.binができあがります。
KVMの仮想化支援機能を使いたい
使えます。
ただ、west からqemuに指定のパラメータを渡す方法があるのかもしれませんが、現状は未調査です。
続きます。