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