今年('25)の5月くらいまでさかのぼりますが、RTOSのZephyrをさわりはじめました。
しばらく前から趣味で作っているCPU負荷発生器で 新言語のネタがなくなってきたのと、 やんごとなき事情(?)で関わっているAGLの議論の中で興味を持ったのがきっかけです。
CPU負荷発生器(mpmt)のZephyr版を作ってみる
まず、とりあえずはCPU負荷発生器のmpmtのZephyr版を作ってみました。
README.mdはこんな感じです。 x86_64とarm64のそれぞれやってみました。
kernel threadを使って、指定したcore数を使い切っているなというところまで確認できて、 いったん満足してしまいました(苦笑)
CAN通信してみる
CPU負荷発生器を作ってみたあと、しばらく別件で忙しくなってお休みしていたのですが、 AGL方面でZephyrが動くマイコンでCAN通信できることを確認しておこうという話があり、担当することにしました。
お題は、コロナがはじまったころに出来心で買ったまま放置していたEspressifのESP32を使っています。
中間成果を先日('25/10/20)大阪で開催されたZephyr Project Meetup: Japan, Osakaというイベントで話してきました。 イベントがこれで、 話した小ネタがこれです。
ESP32とRaspberry Pi Zero W、 およびRenesas R-Car Sparrow Hawkの2種類のSBCと、 対向でCAN通信できるところまで確認しています。
今後
上記の小ネタ発表資料にも書きましたが、以下のようなことを考えています。
- AGL付属のCAN負荷発生機の移植
- Zephyr virtio-can driver (FE/BE)開発のお手伝い
- UDSライブラリの開発
そのほか、ESP32はIoTマイコンとしては比較的ポピュラーな位置づけかなと思うのですが、 クラウドというかデータセンタ用のサーバでの開発とくらべていろいろ違いがあるな… という気付きがあったのでぼちぼちまとめていきたいと思います。