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 がとても便利です。