はじめに
訳あって、nuttxのNetworking/Audio/Graphics の機能を動かしてみることにしました。数多くのボードに対応してしているnuttxといえど、これらを全て稼動させているものは、残念ながら、なし。nuttxのソースコードを眺めて、Ethernet 用のConfiguration がありそうなSTM32F768i-Discoveryを使うことにしました。これはこれで、動作手順等の情報が少なく、各所に散在する情報を集めてなんとか動かしたので、ここで共有することにします。(現時点ではNetworkingのみ稼働)
環境
- Macbook Pro (High Sierra version 10.13.2)
この手の組み込みの開発環境は、WindowsかLinux がメインで、Mac は手薄なものなのですが、Macbook を主軸として他のソフトウェア開発環境を構築していることもあり、敢えてMacで揃えることに。後述しますが、一点だけどうしてもWindows 環境が必要な項目があり、ガックリw
- 無線LAN ポータブルルーター
ELECOM のWRH-300WH3-Sを自宅のWiFi 環境の子機とし、STM32F768-Discovery の有線LANと接続。
開発環境の準備
- nuttx ソースコード入手
以下の2つのgit リポジトリをcloneする。
$ git clone https://bitbucket.org/nuttx/nuttx.git
$ git clone https://bitbucket.org/nuttx/apps.git
- Cross Toolchain
$ brew install gcc-arm-non-eabi
- kconfig-frontend
$ brew tap PX4/homebrew-px4
$ brew update
$ brew install kconfig-frontends
- ST-Link CLI
本体に、生成されたファームウェアを書きこむためのツール。
$ brew install stink
以下の2点は、Windows マシンへのインストールです。
- ST-Link utility
CLI だけなら、上記のようにmac環境用のものがあるのですが、本体のST-Link のファームウェア更新が必要で、これはWindows 用のST-Link Utility のGUI画面からしか出来ないので、泣く泣くw インストール。
- STM32CubeF7
nuttxの稼動のためだけなら不要だが、出荷時のデモ等多数のサンプルを収納した開発環境キットは入手しておいて損はない。
ビルド
Networkingが稼働する(と思われる)defconfig を使う。
$ tools/configure.sh stm32f769i-disco/nsh-ethernet
$ make
生成バイナリの書き込み
st-flash write nuttx.bin 0x8000000
screen /dev/tty.usb..... 115200
これでできた
修正箇所
nsh> mkrd -m 1 -s 512 64
nsh> mkfatfs /dev/ram1
nsh> mount -t vfat /dev/ram1 /tmp