ESP32でNuttXを試す
Espressif ESP32 — NuttX latest documentation
なんか対応してそうだったので試してみた
ESP-IDFのインストール
ESP32のToolchainが必要でここからダウンロードもできるのですが、IDFに同梱されているのでこいつを使った方が楽。
なので、IDFの環境構築がまだの場合は以下からインストールしてください。
もしくはVSCodeのEspressif IDF 拡張機能を使えばGUIで済むので楽です。
IDFのセットアップが終わったらsource export.sh
でIDFのパスを通して使えるようにしておいてください。
NuttX開発環境構築
Installing — NuttX latest documentation
ここに書いてある方法は一般的な方法であって、ESP32で動かすのに不要なものまでインストールすることになります。クロスコンパイラとかはIDFで揃ってるので、あとはKConfigだけ用意しましょう。
# apt install kconfig-frontends
$ git clone https://bitbucket.org/nuttx/tools.git
$ cd tools/kconfig-frontends
$ patch < ../kconfig-macos.diff -p 1
$ ./configure --enable-mconf --disable-shared --enable-static --disable-gconf --disable-qconf --disable-nconf
$ make
$ sudo make install
公式の手順そのままです。
サンプルを動かす
とりあえずNuttX Shellを動かしてみましょう。
$ git clone https://github.com/apache/incubator-nuttx.git nuttx
$ git clone https://github.com/apache/incubator-nuttx-apps.git apps
$ cd nuttx
$ ./tools/configure.sh esp32-devkitc:nsh
$ make
これでビルドできるはず。
ブートローダーの書き込み
NuttXのバイナリをESP32で動かすには専用のBootloaderが必要です。初回起動時や他のバイナリを焼いた後などはBootloaderを事前に書き込んでおく必要があります。
Bootloaderは以下からダウンロードできます。bootloader-esp32.bin
とpartition-table-esp32.bin
をダウンロードして同じディレクトリにまとめておいてください。
これを書き込むのは先ほどビルドしたnuttxプロジェクトのmakeを使います。例えば書き込み先のESP32のシリアルポートが/dev/cu.usbserial-0001
、bootloader-esp32.bin
とpartition-table-esp32.bin
を~/Downloads/nuttx-esp32-bootloader
というディレクトリに両方放り込んだなら、先ほどmake
でビルドしてた端末で
$ make flash ESPTOOL_PORT=/dev/cu.usbserial-0001 ESPTOOL_BINDIR=~/Downloads/nuttx_esp32_bootloader
こんなコマンドを打てば書き込みできます。
サンプルの書き込み
ビルド済みのバイナリ(nuttx.bin
)を書き込むのは以下のコマンドでOKです。
$ make flash ESPTOOL_PORT=/dev/cu.usbserial-0001
シリアルポート経由でNuttX Shellを開く
picocomが必要なのでインストールしておきましょう。
# apt install picocom
$ brew install picocom
あとはpicocomでシリアルポートを開けばnshにアクセスできます。
$ picocom -b 115200 /dev/cu.usbserial-0001
Unixライクなshellが出てきます。nsh>
が出てない時はとりあえずEnterを打ってください。閉じるときは[Ctrl-A][Ctrl-X]です。
とりあえず環境構築としてはこんなものかな。勉強に必要な土台は整った。
参考
Installing — NuttX latest documentation
Espressif ESP32 — NuttX latest documentation
コメント