ESP32でRustを動かす!「The Rust on ESP Book」で組み込み開発を始めよう
The Rust on ESP Book
The Rust on ESP Book
「The Rust on ESP Book」は、Rust言語を用いてEspressif社のESP32チップシリーズ向けのファームウェア開発を行うための包括的なガイドブックです。Rustの安全性と高パフォーマンスを組み込み開発の世界に持ち込みたいエンジニアにとって、必読のドキュメントとなっています。
[テストに関するページ][1]ではこう提案されてるな:> 可能であれば、そして合理的な範囲で、ターゲットデバイスではなくホストマシン上でできるだけ多くのテストを行うべき。試してみたけど、いくつか問題にぶち当たった。まず、Rustのテストフレームワークはstdが必要で、テストコードを書くのが複雑になること。条件付きコンパイルで回避しようとすると、今度は esp-hal がホスト上でコンパイルできないクレートに依存してたりして、別の問題が発生する。ホスト上でテストするための推奨される方法って何?
espressif.comでこれが公開されるのは最高だな!すごく素晴らしい。本題とはズレるけど、もしRustがもっと普及してた頃にZephyrが生まれてたらどうなってたんだろうって考えることがある。まあ実際は無理だろうけど。自分の理解だと、ZephyrはWind River Systemsから寄贈されたRocket OSがベースになってるはずだし(Rustより前の話だしね)。それでも「もしも」を想像するのは面白い。Zephyrはワイヤレスサポートにおいて他を圧倒してる組み込みOSだと思うし、多くの企業がターゲットにしてる(残念ながらアップストリームに還元せずフォークしがちだけど)。個人的には一番興味があるOSだよ。
オーブンでBUNが焼けてるぜ
ESP32でのRustは一時期すごく良かったんだよ。約1年前にHALの大きな書き直しと統合があって、それまで動いてたのが一気に壊れた。最近のコミットのほとんどは、Espressifの社員でも元のコードベースを書いた人でもない誰かがやってる状態だしね。それ以来チェックしてないな。というのも、Rustは組み込みツールチェーンとして「とりあえず動く」っていう一番簡単なものの一つになり得るのに、今回の経験はあまりに酷くて、以前の素晴らしいワークフローとのギャップに驚いたからなんだ。このプロジェクトでは結局、ESPを無線コプロセッサとして使うための公式ファームウェアであるESP-Hostedに切り替えて、SPIやUART経由で通信するための自作Rustライブラリを書き、メインのMCUにはSTM32を使って[Rust]ファームウェアを動かすことにしたよ。