stm32:stm32_devenv

stm32の開発環境まとめ

ここではstm32マイコンを開発するために必要なことをまとめる。 基本的にどのOSでも同じソフトウェアを使えるようにすることを目指す。OS縛りは論外。
無料で整えられるものをベースとする.

ゴール
stm32のソースコードをビルドして実行ファイル(.bin,.hex,elf)を生成できるようになる。
.bin.hexをstm32マイコンに書き込む
OpenOCDor SEGGER J-Linkでデバッグが出来るようになる。

必須ソフトウェア(コンパイラ郡)
GNU Arm Embedded Toolchain : コンパイル関係がまとまったツールセット(必須)
デバッグに必要なソフトウェア
OpenOCD : オープンソースのデバッガ
SEGGER J-Link : SeggerのJ-Linkと使えるデバッガ(いい言い方がわからない
ソースコード編集のためのIDE、テキストエディタなど
Eclipse : GNU MCU Eclipse Pluginを追加する。
Visual Studio Code(VSCode) : 拡張機能C/C++を追加する。 その他おすすめソフトウェア
(SystemWorkbench for STM32)SW4STM32 : Eclipseに拡張機能入れればできることはなにも変わらないけど、横着したければこれいれれば良い。
STM32CubeMX : GUIでstm32のピンや関数の初期設定が可能。
STM32 CubeProgrammer :  書き込みにあると便利

セットアップ

OSによってインストール方法が多少異なる

GNU Arm Embedded Toolchain 4.9-2015-q3-update (Launchpad.net) よりダウンロードする.Lanuchpad.netではこれ以上更新されない.
今後の新しいバージョンはGNU Arm Embedded Toolchain (arm Developer)にて更新される.

1. ZIPファイル

解凍したものを適当なディレクトリに配置する.
コントロールパネルから,解凍したToolchainのディレクトリを登録する必要がある.「配置したフォルダのディレクトリ\bin」を環境変数「Path」に追加する. (可能なら例を追加しておきたい.)

2. exeファイル

実行する.何も設定なければ「C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2015q3にコンパイラが配置される.
インストール完了画面で「Add path to environment variable」という項目があるのでチェックを入れる.これで環境変数「Path」 にToolchainのパスが登録されるので,自分で環境変数を登録する手間が省ける.
何も設定を変更しない場合,環境変数「Path」に「C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2015q3\bin」が追加されているはず.

上記の1,2どちらかのみでよい
パスが通っているかを確認する.
コマンドプロンプト開く(Win+Rで「ファイル名を起動して実行」→「cmd」と入力)
以下を入力する.

arm-none-eabi-gcc
arm-none-eabi-gcc: fatal error: no input files  
compilation terminated.  

と出力されれば正常にパスの設定ができている.(Windows上でGNU ARM Embedded Toolchainの場所が認識されている)

'arm-none-eabi-gcc'は、内部コマンドまたは外部コマンド、  
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出力された場合,正常にパスの設定ができてない。今一度パスを確認する。

2022年1月27日更新
最新は10.3-2021.10担っていたのでこれを導入,いつものごとくバイナリをDLして展開,Windowsの環境変数Pathにパスを登録
stm32のソースコードは問題なくビルドできたが,pac5527のソースはエラーが出るため原因を探りたい.調査した→GCCのバージョン
pac5527はひとまず10-2020-q4-majorで用意する.

コンパイルの際に,makeコマンドが必要であるが,Windowsにで標準で入っていないので入れる必要がある.
以下を参考にする.
https://gnu-mcu-eclipse.github.io/windows-build-tools/
https://gnu-mcu-eclipse.github.io/windows-build-tools/install/
Widowsのビットに合わせてzipファイルをダウンロードし,適当なディレクトリに解凍する.Toolchainの場合と同様に,環境変数「Path」に配置したフォルダのディレクトリ\bin」を追加する.

パスが通っているかを確認する.
コマンドプロンプト開く(Win+Rで「ファイル名を起動して実行」→「cmd」と入力)
以下を入力する.

make
make: *** No targets specified and no makefile found. Stop.

と出力されれば正常にパスの設定ができている.(Windows上でWindows Build Toolsの場所が認識されている)

'make'は、内部コマンドまたは外部コマンド、  
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出力された場合,正常にパスの設定ができてない。今一度パスを確認する。

2022年1月27日更新
現在はMSYS2を導入し,MSYS2内部のmakeコマンド使ってビルドしている

OpenOCD
書き込みやデバッグを行うソフトウェア
以下を参考にする.
https://gnu-mcu-eclipse.github.io/openocd/
https://gnu-mcu-eclipse.github.io/openocd/install/
Widowsのビットに合わせてzipファイルをダウンロードし,適当なディレクトリに解凍する.Toolchainの場合と同様に,環境変数「Path」に配置したフォルダのディレクトリ\bin」を追加する.

パスが通っているかを確認する.
コマンドプロンプト開く(Win+Rで「ファイル名を起動して実行」→「cmd」と入力)
以下を入力する.

openocd
GNU MCU Eclipse 32-bits Open On-Chip Debugger 0.10.0+dev-00139-g654d06db (2017-08-26-18:43)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
embedded:startup.tcl:60: Error: Can't find openocd.cfg
in procedure 'script'
at file "embedded:startup.tcl", line 60
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Error: Debug Adapter has to be specified, see "interface" command
embedded:startup.tcl:60: Error:
in procedure 'script'
at file "embedded:startup.tcl", line 60

と出力されれば正常にパスの設定ができている.(Windows上でOpenOCD場所が認識されている)

'openocd'は、内部コマンドまたは外部コマンド、  
操作可能なプログラムまたはバッチ ファイルとして認識されていません。  

と出力された場合,正常にパスの設定ができてない。今一度パスを確認する。

ノートPCにUbuntu16.04LTSがインストールされているものとする.
事前にUbuntuのシステム周りのアップデートをしておく

sudo apt-get update  
sudo apt-get upgrade  
sudo apt-get install git

2022-01-27 Update
ググると出てくるppaを登録するタイプは数年前から更新が止まっていて古いGCCしかインストールできない.   ARM本家(GNU Arm Embedded Toolchain Downloads)からバイナリをDLしてパスを通すアプローチでいく ARM用のGCCは下記サイトを参考にした.
Install GNU Arm Embedded Toolchain on Ubuntu 20.04

以下は今度更新しないけど残しておく
既存のToolchainが入っている場合,一度アンインストール

sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi

Toolchainのリポジトリを登録する.これでUbuntuのaptコマンドからインストールできるようにする.
以下のうちどちらかを実行する

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

パッケージリストを更新

sudo apt-get update  

Toolchianをインストール

sudo apt-get install gcc-arm-none-eabi

バージョンの指定をしてインストールが可能だが,特に指定しなくても今回必要なバージョンのToolchainがインストールされる.(2018-01-12現在) リポジトリに登録されている最新のToolchainの確認は以下のコマンドを実行

sudo apt-cache madison gcc-arm-none-eabi

必要に応じて「gcc-arm-none-eabi」の後ろに「=バージョン名」の引数を追加すれば必要バージョンのToolchainがインストールされる. rootでなくてもUSBシリアル通信ができるように,現在しているログインユーザにUSBシリアル通信の権限を付与する(dialoutグループというグループに追加する)

sudo adduser $USER dialout

ModemManagerを削除,USBの通信でこいつが悪さをするらしい.こまかい機能は理解できていないが,VESCのセットアップ手順に従い,削除することにする.
ModemManager の止め方

sudo apt-get remove modemmanager
</code
>
### OpenOCD
書き込みやデバッグを行うソフトウェア  
以下のコマンドでインストール
<code bash>
sudo apt-get install openocd

aptコマンドでインストールできるOpenOCDはバージョンが0.9.0ので,必要であれば最新版をインストールする.

stm32用のプログラマ兼デバッガ用のドライバ

git clone https://github.com/texane/stlink  
cd stlink  
make release
cd build/Release
sudo make install

権限を付与する

sudo udevadm control --reload-rules
udevadm trigger
  • stm32/stm32_devenv.txt
  • 最終更新: 2022/02/05
  • by yuqlid