はじめに
組み込み向けの開発環境を構築する手段としてPlatformIOというものがある。
PlatformIOはPythonのスクリプトで、必要に応じてクロスコンパイル用のツールチェインなどダウンロードしてくれたり、 それぞれのボード向けのスタートアップコードなんかも提供してくれる。
またVSCodeやAtomなどのIDEとも連携でき、IDE上でデバッグをすることもできる。
CLionとの連携もできるがこちらはIDE上でのデバッグには対応していない様子だった。
インストール
PlatformIOはpipでインストールできる。
$ sudo pip install platformio
STM32F4Discovery向けの環境を構築
まず、次のコマンドでPlatformIOがSTM32F4Discoveryに対応しているかを確認する。
$ platformio boards | grep -i 'stm32f4disco' disco_f407vg STM32F407VGT6 168MHz 1MB 192KB ST STM32F4DISCOVERY
disco_f407vg
という名前で使えるらしいので、環境をつくってみる。
$ mkdir stm32f4disco_pio $ cd stm32f4disco_pio $ platformio init --board disco_f407vg
作成されたもの
プロジェクトを作成すると次のものが作成されます。
生成物 | 概要 |
---|---|
platformio.ini | プロジェクト設定ファイル |
src | ソースを格納するディレクトリ |
lib | プロジェクトして使用する(プライベートな)ライブラリを格納するディレクトリ |
とりあえず何か動かしてみる
とりあえずsrc/hello.cpp
を次の内容で作成する。
#include <Arduino.h> void setup() { Serial.begin(115200); } void loop() { Serial.print("Hello world\r\n"); delay(1000); }
ST-LINK経由で書き込むので、platformio.ini
を次のようにする。
[env:disco_f407vg] platform = ststm32 board = disco_f407vg framework = arduino upload_protocol = stlink
次のコマンドでプログラムをボードに書き込む。
$ platformio run --target upload
UARTの出力を確認
STM32F4DiscoveryとPCをUSB-TTL変換ケーブルで接続する。
ケーブル側 | STM32F4Discovery |
---|---|
5V(赤) | 5V |
GND(黒) | GND |
TXD(緑) | PA10(RX1) |
RXD(白) | PA9(TX1) |
Ubuntuでは/dev/ttyUSB0
として見えるのでminicomなどで開く。
ボードのリセットボタンを押した後、こんな感じで1秒ごとに表示されていればOK。
Hello world Hello world Hello world Hello world Hello world Hello world Hello world Hello world