STM32F407VET6とMicro SDスロットと2MBのSPIフラッシュが載った、通称 F4V Black Boardというボードが手元にあったので、NUTTX(Real Time OS)をビルド・実行してみました。
では早速、設定していきますが、コンフィグレーションには、クロスコンパイラ類と、kconfig-frontendsが必要なので、先にhostマシン(Debian 11/Bullseye)にインストールしておきます。
sudo apt-get install kconfig-frontends binutils-arm-none-eabi gcc-arm-none-eabi2020/9/21日時点での、wiki上でのリリース済の最新バージョンは、9.0の様ですが、( https://cwiki.apache.org/confluence/display/NUTTX/NuttX+9.0 ) git repository上での最新ブランチはrelease 9.1.0の様子なので、こちらをクローンしました。
mkdir /usr/src/nuttx-9.1.0 cd /usr/src/nuttx-9.1.0 git clone -b nuttx-9.1.0 https://github.com/apache/incubator-nuttx nuttx git clone -b nuttx-9.1.0 https://github.com/apache/incubator-nuttx-apps apps今回は、stm32f407v black board (stm32f407ve, microsd slot, spi 16Mbit flash付き)なんですが、STM32F4DISCOVERY(stm32f407vg)の物をコンパイル/インストールしてみます。 NUTTXとSTM32F4DISCOVERYのwikiを参考にしました。 https://cwiki.apache.org/confluence/display/NUTTX/Wiki https://cwiki.apache.org/confluence/display/NUTTX/STM32F4DISCOVERY+Unix
cd /usr/src/nuttx-9.1.0 tools/configure.sh stm32f4discovery:nsh Copy files Select CONFIG_HOST_LINUX=y Refreshing...続いて、コンパイルするホストの設定です。デフォルトではlinuxになっていましたが、変更する場合は、
make menuconfug Build Setup ---> Build Host Platform (Linux) --->にて変更する様です。 続いてシリアルコンソールの設定ですが、stm32f4discovery:nshでは、シリアルポートはUSART2固定(PA2=TX,PA3=RX,115200,8,n,1)になっているようです。 なお、シリアルポートの設定は、Device Drivers ---> Serial Driver Support ---> USART2 Configuration ---> で速度などを設定できます。 ビルド: 今回は変更を入れずに素直にビルドしてみます。
makeビルド後、ディレクトリに
nuttx nuttx.binというファイルができます。nuttx(拡張子なし)ファイルはelf形式のファイルでnuttxをnuttx.elfとし、ターゲットに書き込みます。 筆者の場合、執筆時点ではビルドホスト(debian)と書き込みホスト(windows10)をわけていますので、ファイルを、書き込みホストにコピーして、書き込みます。 参考までに、wsl2上のscpでビルドホストからコピーし、powershell上の stm cube programmer cliで書き込みしています。 ## wsl2上
cd /mnt/c/Users/benedicam-te/Documents/STM32F407V scp 192.168.255.23:/usr/src/nuttx-9.1.0/nuttx/nuttx.bin nuttx.bin## powershell上(snはst-linkのシリアル番号。複数接続の時に指定する。)
cd C:\Users\benedicam-te\Documents\STM32F407V STM32_Programmer_CLI UR -c port=SWD sn=1234567890123456789012 -d nuttx.bin 0x08000000書き込み完了後、リセット(またはstm32 programmerでアクセス)するとNuttShellが再起動します。TeraTermなどのシリアルターミナルソフトで確認してください。
NuttShell (NSH) NuttX-9.1.0 nsh> free total used free largest Umem: 192992 7536 185456 125264 nsh> mount /proc type procfs nsh> df Block Number Size Blocks Used Available Mounted on 0 0 0 0 /proc nsh>Linuxに慣れていると、違和感がないのですが、メモリ表示はK byte単位ではなく、byte単位です。使用メモリが異様に小さいですね。 今回は以上です。それでは。
コメント
コメントを投稿