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)の可能性を模索したほうがよさそうだ。