STM32でNUTTXを使ってみる

STM32F407 VGボードへのFirmware書き込み


STM32F407 VGT6ボードを入手しました。
写真の様に何の変哲もない開発ボードですが、F4 Discoveryと同じMCUなので、F4 Discoveryの定義がそのまま使えます。
値段もF4 Discoveryの1/3程度で入手することができます。
そこで、F4 Discoveryの定義を使ってファームを書き込んでみました。




同じMCUのF4 Discoveryと比べると、半分ぐらいの大きさです。


このボードにはST-LINKが実装されていません。
そこで、ST-LINKアダプターを使ってファームを書き込みます。
また、USB-OTGポートも無いので、usbnshではなくnshを使います。
$ cd $HOME/nuttxspace/nuttx

$ make distclean

$ ./tools/configure.sh -l stm32f4discovery/nsh
  Copy files
  Refreshing...

$ make
Create version.h
LN: platform/board to /home/nop/nuttxspace/apps/platform/dummy
Register: hello
Register: nsh
Register: sh

ファームの書き込みに、このような安価な中華ST-LINKモジュールを使うことができます。


このボードにはST-LINK専用のピンがありません。
ST-LINKモジュールとの接続は以下となります。
ST-LINK STM32F407ボード
SWDIO PA13
SWCLK PA14
3.3V 3.3V
GND GND

ファームの書き込みはF4 Discoveryと同じです。
$ st-flash --connect-under-reset write nuttx.bin 0x8000000
st-flash 1.7.0-352-g8c581c3
2024-01-04T16:57:30 INFO common.c: STM32F4x5_F4x7: 192 KiB SRAM, 1024 KiB flash in at least 16 KiB pages.
file nuttx.bin md5 checksum: 7f3835d65ab7a594c499ac497f6d520, stlink checksum: 0x00730e2a
2024-01-04T16:57:30 INFO common_flash.c: Attempting to write 74348 (0x1226c) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Sector:0x4 Size:0x10000 -> Flash page at 0x8010000 erased (size: 0x10000)
2024-01-04T16:57:32 INFO flash_loader.c: Starting Flash write for F2/F4/F7/L4
2024-01-04T16:57:32 INFO flash_loader.c: Successfully loaded flash loader in sram
2024-01-04T16:57:32 INFO flash_loader.c: Clear DFSR
2024-01-04T16:57:32 INFO flash_loader.c: enabling 32-bit flash writes
2024-01-04T16:57:34 INFO common_flash.c: Starting verification of write complete
2024-01-04T16:57:36 INFO common_flash.c: Flash written and verified! jolly good!

nshへの接続はUSB-TTLコンバータを使います。
ST-LINKモジュールとUSB-TTLコンバータの両方から電源を供給するとボードが燃えるみたいなので、 USB-TTLコンバータを以下の様に接続します。
USB-TTL STM32F407ボード
TX PA3
RX PA2
3.3V 未接続
GND GND

USB-TTLコンバータをホストマシンのUSBに接続すると、新しいUSBデバイス(/dev/ttyUSB0)が現れます。
$ sudo dmesg
(略)
[ 2885.014765] usb 1-1.4: new full-speed USB device number 29 using dwc_otg
[ 2885.147893] usb 1-1.4: New USB device found, idVendor=1a86, idProduct=7523
[ 2885.147906] usb 1-1.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 2885.147915] usb 1-1.4: Product: USB2.0-Serial
[ 2885.148809] ch341 1-1.4:1.0: ch341-uart converter detected
[ 2885.150542] usb 1-1.4: ch341-uart converter now attached to ttyUSB0

$ ls /dev/ttyUSB*
/dev/ttyUSB0

接続を確認したらUSBポートにscreenコマンドで接続します。
$ sudo screen /dev/ttyUSB0 115200

Enterキーを何回か押すとnshコンソール画面が表示されます。
F4 Discoveryと同じコマンド、アプリケーションが使えます。


usbnshよりも、nshの方がメモリ使用量は少ないです。


screenの終了はCtrl+aを押してkで以下のメニューが現れます。


続く
...