Ubuntu(Linux)環境のSTM32(ARM)開発環境について

mbed SDKがSTM32 Discoveryシリーズをサポートしたことについて書いたので、ついでにUbuntu(Linux)環境のSTM32(ARM)開発環境についてのメモを残す。但し、makeなどのツールやEclipseを起動するためのJavaのランタイムなどはインストール済みというところから始めるので悪しからず。

ツールチェーンの(再)インストール

昔はARMのツールチェーンをインストールするにしても、ソースを集めてコンパイルしていたが、LaunchPad GNU ARM Emdedded ToolchainのPPAが公開されapt-getコマンドでインストールできるようになっていた。

それがUbuntu14.04LTSになって、

$>sudo apt-get install binutils-arm-none-eabi gcc-arm-none-eabi

にて一発インストールできるようになったのだが、これが”/usr/arm-none-eabi/include/c++”のヘッダファイルがなかったりライブラリィが不足してたりと中途半端で、mbedのソースがコンパイルできないのである。

apt-getでインストールしてしまった方は、

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

として一旦削除し、LaunchPad GNU ARM Emdedded Toolchainをインストールするのが賢明だ。

インストールはPPAを登録することから始める。以下のコマンドを入力したらLaunchPad GNU ARM Emdedded Toolchainがインストールできる。

$>sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
$>sudo apt-get update
$>sudo apt-get install gcc-arm-none-eabi=4-8-2014q1-0trusty8

ただし、このメモを書いている時点では、Ubuntu14.04LTSでは、システムが用意したgcc-arm-none-eabiとLaunchPadのgcc-arm-none-eabiが競合するのである。システムが用意したgcc-arm-none-eabiが保留となるのだ。

この状態で、

$>sudo apt-get dist-upgrade

とすると、ゾンビのようにシステムが用意したgcc-arm-none-eabiが復活するので注意が必要だ。

Eclipse CDTをインストール

Eclipseのインストールに関しては、5年ほど前のAVR-GCCの開発環境としてのEclipseの記事と同じ、javaのランタイムのバージョンとかは違うかもしれないが基本的に今でも一緒だ。今ならEclipseは最新のKepler版のCDTをダウンロードして適当な場所にインストールし必要に応じて日本語化しておく。

プラグインのインストール

Eclipse CDTにAVRにもプラグインをインストールして専用化したようにARMのプラグインをインストールしてARM専用開発環境に仕立てる。

まずはEclipseを立ち上げ、ヘルプ(H) -> 新規ソフトウェアのインストール -> 追加(A) を選びhttp://gnuarmeclipse.sourceforge.net/updatesを入力すると、以下のよなダイアログが出てくるので、すべてチェックしインストールすればプラグインはインストールされる。

ARMプラグインのインストール

ARMプラグインのインストール

完成度が高いプラグイン

ARMのプラグインは機能が豊富で、特定のMPUならテンプレートを生成する。

テンプレートの生成方法は、ファイル(F)->新規(N)->Cプロジェクト を選ぶと以下のようなダイアログが現れるので指示に従う。

テンプレートでプログラム生成

テンプレートでプログラム生成

こんな感じでファイルが展開される。stm32f1-stdperiphとかcmsisとか、更にはnewlibまでインストールされ、後は作り込むだけだ。

生成されたファイル

生成されたファイル

これまではライブラリィを揃えたりコンパイルオプションを設定したりと大変だったのだが、簡単になっている。簡単で人気のCooCoxの影響を受けているのかもしれない。

デバッグツールのインストール

プログラムの書き込みやデバッグにはST-Linkなどのデバッガを制御するプログラムをインストールする必要がある。通常ならOpenOCDを使うのだが、ST-Link専用のユーティリティが完成度が高く実用レベルなので利用する。

ST-Link専用のユーティリティはgithubにて公開されているので最新ソースを取得する。

$>git clone https://github.com/texane/stlink

そしてコンパイル&インストールする。

$>cd stlink
$>./autogen.sh
$>./configure
$>make
$>sudo make install

“/usr/local/bin”にST-Link専用のユーティリティ群がインストールされる。
これでST-Linkが使える状態なのだがroot権限がないと動かせないので、ユーザレベルでも使えるように権限を変更する。

$>sudo cp 49-stlinkv*.rules /etc/udev/rules.d
$>sudo udevadm control --reload-rules

インストールされたコマンド

st-flash,st-info,st-term,st-utilの4つのコマンドがインストールされる。詳しい使い方は、ばんとの拙い説明よりREADMEを読むべき、f(^_-;;

そこで端折るが、よく使うコマンドは生成したhexやbinファイルをターゲットに書き込むst-flashと、GDBと連動してデバッグ環境を実現するst-utilである。

続き…

これにてソフトのインストールが終わったのたが、Eclipseでデバックするためには、もう少し設定が必要になってくる。これは次の回にて書くことにする。