That's Done!

thatsdone's (mostly technical) memorandum

[ja] Zephyr generic notes


Zephyrをはじめてみて、有識者のみなさんにいろいろ教えを受けつつ気づいたこと、 特にボード非依存のメモをまとめる場所にします。(=断続的に更新していきます)

ボード依存の話は別記事で。現状、以下の子たちくらいを予定しています。

  • ESP32 (初代無印、Xtensa LX6のDevkitC)
  • Raspberry Pi (5とZero W)
  • qemu系 (x86_64とaarch64)
  • xenvm

自分のアプリをどこにおけばいいのか?

答:どこでもかまいません。

補足:

  • 一次情報
  • 特に SOME_WHEHERE/zephyrproject/zephyr の下に置く必要はありません。
  • SOMEWHERE/zephyrproject/zephyr/zephyr-env.sh という環境設定用のファイルがありますので、これをsourceしてください。
  • 自分のアプリのディレクトリの中で west build -p -b YOUR_TARGET_BOARD . とすればOKです。
    • 最後の . (ピリオド=カレントディレクトリを指定)を忘れないでください
  • ビルドされた生成物は、上記自分のアプリのディレクトリの中に build というディレクトリが作成されて格納されます。
    • 未確認すが、自分のアプリのディレクトリとは違うところで west コマンドを起動すると、カレントに build ができるかもしれません

DTSをoverlayしたい場合のファイル名や配置場所は?

答:自分のアプリのディレクトリの中に所定のファイル名で、所定の名前のディレクトリを作って格納してください。

私の事例では、ESP32のdevice treeはzephyr/boards/espressif以下にボードごとに格納されていました。ただ、CANコントローラのTWAIはdisableだったので、okにオーバーライドする必要がありました。こういう場合にどうするか?です

典型的には YOUR_APP_DIR/boards/BOARDNAME.overlay になります。

補足:

  • 一次情報はこのへんにあります。
  • ディレクトリの名前は board か soc になりますが、ボードごとになるほうが多いように思います。また、アプリケーション固有であれば application.overlay でもかまいません。(...が、アプリ固有でDTSいじる必要ってどのくらいあるんですかねぇ?)

sampleについている sample.yaml は要るのか?

答:不要

自分のアプリを公開するだけなら上記の通り不要です。

ただし、zephyr公式distributionへのマージを目指すようであれば必要になります。

WSL2で使いたい

答:私はWSL2の Ubuntu 24.04環境で問題なく使えています。

WSL2でUSBデバイスを使えるの?

答:使えます。GUI操作でUSBデバイスの付け替えができる usbipd-win がとても便利です。