2023年12月3日日曜日

stm32に対してポートを指定してplatformioでプログラムを書き込むlinux向けのスクリプトを書いた


背景

前回stm32を複数台繋げた状態で、それぞれを識別してプログラムを書き込む方法を把握しました。
方法が分かったのは良いのですが、都度stlinkのid serialを調べるのが手間なので、ポートを渡したらplatformioで書き込んでくれるスクリプトを書きました。
使い方を共有します。

コードをclone(ダウンロード)

便利スクリプトをまとめているgithubのリポジトリに上げています。
https://github.com/asukiaaa/useful-scripts/blob/master/platformio/upload-to-stm32-port

前回の記事で把握したstlinkのserial idをポートから調べてアップロードコマンドに渡すスクリプトです。
記事を書いている時点での内容はこちらです。
#!/bin/bash

if [ "$1" = "" ]; then
echo "Please execute with path of stm32 serial port.
$0 port

Example:
$0 /dev/ttyACM0"
exit 1
fi

PORT=$1
SERIAL_RAW=$(udevadm info $PORT | grep SERIAL_SHORT=)
SERIAL=${SERIAL_RAW#*=}
PLATFORMIO_UPLOAD_FLAGS="-cadapter serial $SERIAL" pio run -t upload ${@: 2}

適当な場所にcloneしてください。
下記のコマンドはホームディレクトリにgitprojectsというディレクトリを作り、その中にリポジトリをcloneしています。
mkdir -p ~/gitprojects
cd ~/gitprojects
git clone https://github.com/asukiaaa/useful-scripts.git

上記の場所にリポジトリを置くと下記のコマンドで呼び出せます。
~/gitprojects/useful-scripts/platformio/upload-to-stm32-port

ポートを指定して実行

先程cloneしたコマンドをplatformioのプロジェクトの中で対象のポート名と共に呼び出せば、ポートを指定してプログラムを書き込めます。
cd [stm32のplatformioのプロジェクト]
~/gitprojects/useful-scripts/platformio/upload-to-stm32-port /dev/ttyACM0

第2引数以後はplatformioのコマンドに渡しているので、-vオプションでplatformioのコマンドの確認も可能です。
~/gitprojects/useful-scripts/platformio/upload-to-stm32-port /dev/ttyACM0 -v

おわり

細かいことを考えずstm32に対してポートを指定してプログラムを書き込めるようになり嬉しいです。

参考

PCに複数繋げたstm32を判別してplatformioでプログラムを書き込む

0 件のコメント :