F103編
またまた調子に乗ってSTM32も試してみました。
環境は雪豹のMacBoot Air Originalです。
bash-3.2$ platformio init --board genericSTM32F103C8
Arduno風のLチカコードをsrc以下に作ります。
STM32の純正書き込みツールはST-LINK(JTAG/SWD)ですが、シリアルでのISPもサポートされているようです。
ターゲットはAitendoのEVB-STM32F103C8T6でboot0を1、boot1を0にして、TXD/RXD/GNDをFTにつないで、電源供給のためにUSBもつないでおきます。このターゲットのTXD/RXDのシルク逆です。
bash-3.2$ platformio run --target upload
[Tue Jan 31 09:37:33 2017] Processing genericSTM32F103C8 (platform: ststm32, boa
rd: genericSTM32F103C8, framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Converting main.ino
Collected 24 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/genericSTM32F103C8/src/main.ino.o
Looking for upload disk...
Auto-detected: /dev/cu.usbserial-DA0059MQ
Uploading .pioenvs/genericSTM32F103C8/firmware.bin
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 230400 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x0800200c (100.00%) Done.
Starting execution at address 0x08000000... done.
========================= [SUCCESS] Took 4.81 seconds =========================
MSP430ではuploaderが使えませんでしたが、STM32ではちゃんと使えるようです。
またSTM32はたくさんframeworkがあっていろいろ遊べそうです。
platformioでuploaderが勝手にFTなシリアルポートを判別して実行するの最初はちょっと抵抗がありましたが、便利です。
ほんとplatformioってすばらしいです。
F303編
秋月電子で売っているチップのSTM32F303K8T6も試してみました。
nucleo_f303k8が同じチップを使っているので、このボードでinitしてmbedなビルドは通りました。genericSTM32F103C8はArduinoベースでしたが、nucleo_f303k8はmbedベースになるようです。
回路を入れてBOOT0/NRSTをstm32flashから自動的に制御することもできるようですが、面倒だったのでジャンパーにしました。
uploadはSTLinkベースなので素の303では使えないので、直接stm32flashを使いました。
bash-3.2$ platformio run
[Tue Mar 14 10:35:17 2017] Processing nucleo_f303k8 (platform: ststm32, board: n
ucleo_f303k8, framework: mbed)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 8 compatible libraries
Looking for dependencies...
Project does not have dependencies
Calculating size .pioenvs/nucleo_f303k8/firmware.elf
text data bss dec hex filename
11588 128 1224 12940 328c .pioenvs/nucleo_f303k8/firmware.elf
========================= [SUCCESS] Took 4.25 seconds =========================
bash-3.2$ ~/.platformio/packages/tool-stm32duino/stm32flash/stm32flash -w .pioen
vs/nucleo_f303k8/firmware.bin -b 115200 /dev/cu.usbserial-DA0059MQ
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 115200 8E1
Version : 0x31
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0438 (F303x4/334/328)
- RAM : 12KiB (6144b reserved by bootloader)
- Flash : 256KiB (sector size: 2x2048)
- Option RAM : 16b
- System RAM : 8KiB
Write to memory
Erasing memory
Wrote address 0x0800301c (100.00%) Done.
uploaderを変更する事も出来るような気がするのですが、方法が分かりません。
素直にNucleo Boardを買えば、STLinkV2の101とターゲットの303が手に入りますが、ガジェットは1K以内で購入できるものとしているので、素の303を使ってみました。
安くSTlink v2が手に入ったのでstlinkをcmakeを使わず無理矢理コンパイルして焼いてみました。st-flashはplatformioにも入っているのですが、エラーで実行できなかったので、ビルドしました。
ピン | SWD |
---|---|
1 | 3.3V |
23 | SWDIO |
24 | SWCLK |
32 | GND |
bash-3.2$ ./st-flash write ../../../../ARM/pio/stm32f303/.pioenvs/nucleo_f303k8/
firmware.bin 0x8000000
st-flash 1.0.0
2018-03-01T12:40:58 INFO common.c: Loading device parameters....
2018-03-01T12:40:58 INFO common.c: Device connected is: F334 device, id 0x100164
38
2018-03-01T12:40:58 INFO common.c: SRAM size: 0x3000 bytes (12 KiB), Flash: 0x10
000 bytes (64 KiB) in pages of 2048 bytes
2018-03-01T12:40:58 INFO common.c: Attempting to write 12356 (0x3044) bytes to s
tm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08003000 erased
2018-03-01T12:40:59 INFO common.c: Finished erasing 7 pages of 2048 (0x800) byte
s
2018-03-01T12:40:59 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core
id
2018-03-01T12:40:59 INFO flash_loader.c: Successfully loaded flash loader in sra
m
7/7 pages written
2018-03-01T12:40:59 INFO common.c: Starting verification of write complete
2018-03-01T12:41:00 INFO common.c: Flash written and verified! jolly good!