platformio에서 STM32

5513 단어 MacOSXSTM32PlatformIO

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 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!

좋은 웹페이지 즐겨찾기