STM32でNUTTXを使ってみる

STM32F103 VETボードへのFirmware書き込み


STM32F103の開発ボードにはBlue Pill/Black Pill以外に多数のボードが有ります。
そこで、今回はF103VET6が実装されているボードへのファーム書き込みを紹介します。
写真の様にボード右側にST-LINKのコネクターが出ています。


メニューにはMCUを選ぶ機能が有りますが、ここだけを変えても他の項目との依存関係が有ってビルドが通りません。


STM32F103VETには、512KのFALSHと64KのSRAMが実装されています。
色々試しましたが、以下の手順でSRAMサイズを変更することが出来ました。
まず、ひな形となる.configを作ります。
$ cd $HOME/nuttxspace/nuttx
$ make distclean
$ ./tools/configure.sh -l stm32f103-minimum/nsh
  Copy files
  Refreshing..

STM32F103RB Nucleoと同様の手順でhelpコマンドとostestアプリを追加します。
このままではSRAMサイズが20Kのままなので、.configを直接編集しCONFIG_RAM_SIZEを変更します。
これでSRAMサイズが64Kになります。
$ diff .config .config_stm32F103RBT
776c776
< CONFIG_RAM_SIZE=65536
---
> CONFIG_RAM_SIZE=20480

変更後の.configを使ってファームをビルドし、ボードに書き込みます。
$make

$ st-flash --connect-under-reset write nuttx.bin 0x8000000
st-flash 1.7.0-352-g8c581c3
2024-01-08T02:38:39 WARN common.c: NRST is not connected
2024-01-08T02:38:39 INFO common.c: F1xx_HD: 64 KiB SRAM, 512 KiB flash in at least 2 KiB pages.
file nuttx.bin md5 checksum: a5644dfef2ad0739c5df1371d9e3b4f, stlink checksum: 0x00952da3
2024-01-08T02:38:39 INFO common_flash.c: Attempting to write 97904 (0x17e70) bytes to stm32 address: 134217728 (0x8000000)
-> Flash page at 0x8017800 erased (size: 0x800)
2024-01-08T02:38:41 INFO flash_loader.c: Starting Flash write for VL/F0/F3/F1_XL
2024-01-08T02:38:41 INFO flash_loader.c: Successfully loaded flash loader in sram
2024-01-08T02:38:41 INFO flash_loader.c: Clear DFSR
 48/48  pages written
2024-01-08T02:38:47 INFO common_flash.c: Starting verification of write complete
2024-01-08T02:38:49 INFO common_flash.c: Flash written and verified! jolly good!

USB-TTLコンバーターをボードに接続します。
USB-TTL STM32F103ボード
TX PA10
RX PA9
3.3V 未接続
GND GND

USB-TTLコンバータをホストマシンのUSBに接続すると、新しいUSBデバイス(/dev/ttyUSB0)が現れます。
$ 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コンソール画面が表示されます。
ostestを実行します。


BluePill BlackPillでは動かないostestのアプリがきちんと動きます。


続く
...