Nuttx

nuttxを使って、stm32f4discoveryをいじり始めることにしたので、久々にサイトをチェックすると、順調にバージョンアップを続けている。
1.ホスト環境
手元にある仮想環境のubuntu 10.04 LTSを使う。当然、とっくにサポートが終了しているので、/etc/apt/sources.listを編集して、リポジトリをold-releases.ubuntu.comに変更したあと、Synapticでpackage update。
2.Gnu ARM Embedded Toolchain
https://developer.arm.com/open-source/gnu-toolchain/gnu-rmからダウンロードすればよいのだが、linux版のバイナリは64bitしかない。手元のubuntuは32bitなので、仕方なくソースをダウンロードして自力でビルド。
ファイルを展開した後に、srcのサブディレクトリにあるアーカイブも全部展開。
ビルドに不足しているパッケージを追加。
sudo apt-get install p7zip-full gawk gzip perl autoconf m4 automake libtool libncurses5-dev gettext gperf dejagnu expect tcl autogen flex flip bison tofrodos texinfo gcc-multilib libgmp3-dev libmpfr-dev debhelper texlive texlive-extra-utils g++
実際のコンパイルは以下のスクリプトで行うが、かなり時間がかかる上、容量も15GB以上必要なので要注意。
./build-prerequisites.sh –skip_steps=mingw32
./build-toolchain.sh –skip_steps=mingw32
結局、ドキュメントの作成で異常終了したが、バイナリはできたのでよしとした。
install-nativeにバイナリがあるので、
mv install-native $HOME
cd
ln -s install-native/bin bin
一度log outすれば、.profileのスクリプトでPATHが設定される。
3.nuttxビルドと書込み
http://nuttx.org/から、nuttx-7.19, appa-7.19、toolsをダウンロード。
toolsを展開したら、必要なパッケージを導入して、kconfig-frontendsをコンパイル。
sudo apt-get install libncurses5-dev
cd kconfig-frontends
./configure –enable-mconf –disable-nconf –disable-gconf –disable-qconf –prefix=/usr
make
sudo make install
nuttx-7.19とappa-7.19を展開して、リンク作成。
ln -s nuttx-7.19 nuttx
ln -s apps-7.19 apps
4.nshビルドと実行
UART2コンソールのnshに加えて、USBコンソールのusbnshがあるので、今回こちらをビルド。
cd nuttx/tools
./configure.sh stm32f4discovery/usbnsh
標準のホストはwindowsなので、Linuxに変更して、ビルド。
make menuconfig
Build Host Platform: Linux
make
nuttx.binをWindows環境に移す。
http://www.st.com/ja/embedded-software/stsw-link004.htmから、ST-Link Utilityをダウンロードして導入。
ST-Link Utilityを実行して、stm32f4discoveryをUSBでCN1(Mini B)に繋ぎ、データを書き込む。
Target/Connect
File/open file – nuttx.bin
Target/Program & Verify
5.起動
一度CN1(Mini B)を抜いて電源を切った後、USBでCN5(Micro B)を繋ぐ。
CN1(Mini B)を再度繋いで起動すると、CN5側に仮想COMポートができるので、tera termで、115200bps 8bin 1stop bitで接続する。
数回ENTERを入力すると起動メッセージが表示される。
NuttShell (NSH) NuttX-7.19
nsh> ?
help usage: help [-v] []
[ cmp false mkdir rm true
? dirname free mh rmdir uname
basename dd help mount set umount
break df hexdump mv sh unset
cat echo kill mw sleep usleep
cd exec ls ps test xd
cp exit mb pwd time
Builtin Apps:
nsh>
上記のように表示され、めでたし、めでたし。

nuttxはこのサイトが詳しい。
http://nopnop2002.webcrow.jp/index_RTOS.html
http://mickey-happygolucky.hatenablog.com/entry/2019/02/07/084927

コメント