ここでは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)にて更新される.
解凍したものを適当なディレクトリに配置する.
コントロールパネルから,解凍したToolchainのディレクトリを登録する必要がある.「配置したフォルダのディレクトリ\bin」を環境変数「Path」に追加する.
(可能なら例を追加しておきたい.)
実行する.何も設定なければ「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
VESC – Open Source ESC Software Installation and Configuration Tutorial
UBUNTUでSTM32 ARMマイコンの開発環境を整える
Installing toolchain (GCC)
GNU ARM Embedded Toolchain
Linuxでの環境構築方法(Ubuntu Linux)
開発環境の構築に関する質問
Ubuntu(Linux)環境のSTM32(ARM)開発環境についてのメモ その1
Ubuntu 14.04にSTM32マイコンの開発環境をインストール
[小ネタ]Ubuntu でttyUSB0(USBシリアル変換)が権限関連で使えない場合の対処
UbuntuでSTM32F3 Discoveryの開発環境を構築する