ZephyrRTOS on VM

Windows環境でもQEMU_x86でHello Worldがしたい!と思って試行錯誤していたのだが、結局ビルドが成功することはなかった。成功したのはARM-EABI向けのクロスコンパイルのみ。x86向けビルドにMinGWのGCCを使おうとしたが、アセンブラのコンパイルエラーが取り除けそうになくて諦めた。WSLなら行けそうな気がするが、もうじきWSL2が出るので今回は使わない。ドキュメントを読んだら"Mac/Linux"ならQEMU_x86でエミュレートできるよと書いてあったので、対応外なのかも。

昨年Windowsマシンを買ったばかりなのにLinuxマシンが欲しくなる気持ちを抑えつつ、仮想環境にdebian10をセットアップ。GNU ARMツールチェインは入れていないが、ZEPHYR_TOOLCHAIN_VARIANT=hostを設定し、ボードにnative_posixを指定したらアッサリビルド完了した。なんてこったい。

ボードにqemu_x86を設定した場合もあっさりと動いた。うーん、昨日までの苦労を返してほしい。

ARM向けクロスビルドにはgnu-arm-none-eabiが必要だが、apt-cacheを調べてインストールできるバージョンが2018-q2だと知る。このバージョンはバグがあることが報告されているので最新の2019-q3を入手しなければならない。ちょっとだけ面倒。

wgetでTarballを展開したらバイナリが手に入る。GNUARMEMB_TOOLCHAIN_PATHにそのパスを設定して、ZEPHYR_TOOLCHAIN_VARIANT=gnuarmembを指定する。west updateも忘れずに実行しておくこと。

west build -b nucleo_f429zi sample/hello_world

を実行したら、正常にビルドされた。ログはこんな感じ:

-- west build: building application
[1/119] Preparing syscall dependency handling

[114/119] Linking C executable zephyr/zephyr_prebuilt.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:       14536 B         2 MB      0.69%
             CCM:          0 GB        64 KB      0.00%
            SRAM:        4344 B       192 KB      2.21%
        IDT_LIST:         184 B         2 KB      8.98%
[119/119] Linking C executable zephyr/zephyr.elf

呆気なさ過ぎて、笑いがこみあげてくるほど簡単だ(対ここ数日の苦労)

どうやら。Windows+Linux(VM)の可能性を模索したほうがよさそうだ。