STM32/MacでOpenOCDを使う

今回は OpenOCD(Open On-Chip Debugger) のインストール・設定手順について記述します。
Macユーザーなら Homebrew — The missing package manager for OS X をインストールしている方も多いと思います。このツールを使用すれば、OpenOCDのインストールは簡単です。

Homebrewをインストールしていない方でOpenOCDを使いたいと考えている方は、Homebrewをインストールしましょう。ターミナルから以下のコマンドを入力すれば良いです。


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

詳細は、WEBページを検索してみてください。

OpenOCDのインストール

以下のとおりコマンドを入力すれば良いです。


brew install openocd --enable_ft2232_libftdi --enable_stlink

上記のコマンドラインの内容から察することができると思いますが、ST-LINKとFTDI社のFT2232を使用したデバッガ(JTAGKey clone)の使用を想定しています。

OpenOCDをST-LINKで使用する

環境構築

まずはST-LINKを入手しましょう。STM32 Discovery / Nucleoシリーズを購入するのが安上がり。安いものだと1500円くらいからあり、STM32シリーズのCPUとST-LINKがついてきます。商品によっては周辺機器が付属するものもあります。

Nucleoシリーズの場合、ST-LINKと本体を分離することが容易になっています。なかには NucleoとかいうST-LinkをFRISKケースに入れる - STM32 – Tokoro’s Tech-Note のように、分離してFRISKケースに入れる方もいます。

OpenOCDとST-LINK、そしてCPU(簡単なのは、Discovery / Nucleo)の準備ができたら、OpenOCDの設定ファイルを作成しましょう。CPUにより若干異なってきますので、CPUに合わせて設定しましょう。代表的な環境に対する設定ファイルは /usr/local/share/openocd/scripts/ 配下にあるので、一度参照してみると良いと思います。

当方はWEBページなどを参考にしながら、以下のようなものを用意しました。

  • stm32f3discovery.cfg

Script for connecting with the STM32F3DISCOVERY board

source [find interface/stlink-v2.cfg]
source [find target/stm32f3x_stlink.cfg]
reset_config srst_only srst_nogate

  • stm32f4nucleo.cfg

Script for connecting with the STM32F4NCLEO board

source [find interface/stlink-v2-1.cfg]

SRAM 96KB version chip

set WORKAREASIZE 0x18000
source [find target/stm32f4x_stlink.cfg]
reset_config srst_only srst_nogate

  • stm32f0discovery.cfg

This is an STM32F0 discovery board with a single STM32F051R8T6 chip.

http://www.st.com/internet/evalboard/product/253215.jsp

source [find interface/stlink-v2.cfg]
transport select hla_swd
set WORKAREASIZE 0x2000
source [find target/stm32f0x.cfg]
reset_config srst_only

動作確認

ターミナルから実行してみる。うまく動作すれば以下のとおり表示される。


$ openocd -f stm32f0discovery.cfg
:
Info : This adapter doesnt support configurable speed
Info : STLINK v2 JTAG v16 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : Target voltage: 2.892453
Info : stm32f3x.cpu: hardware has 6 breakpoints, 4 watchpoints

Eclipseから実行できるようにする

Eclipseを起動ししたら、 Run >> External Tools >> External Tools Configuration を選択します。

External Tools Configuration

上記の画像を参考にしながら、それぞれの環境に合わせて記述しましょう。その後、 Run >> External Tools から実行してみましょう。正しく動作すれば、Eclipseの Console タブに先ほどターミナルから起動した場合と同様のログが出力されます。

ここまでできれば、後はサンプルプロジェクトを作り確認するのみ。あと少しです!

STM32/MacでStandard Peripheral Libraryを使用する

これまで電子工作ではArduinoを使用してきましたが、幾つかの要因が相まってARMマイコンを使用することにしました。電子工作で使用できそうなARMマイコンもいくつもあり迷ったのですが、STM32を使用することにしました。厳密に比較したわけではないですが、CPU種類がいくつもあり用途により選択の幅が広いこと。

当方はMacを使用しているのですが、Macでの環境構築を行っているとの情報が少ないために結構苦労しました。そこで自分自身の備忘録の意味合いも込め、ここにMacにおける環境構築手順を記載します。

なお、STM32の環境は、Standard Peripheral Libraryが過去に使われていたものの、最近はSTM32CubeMXを使用した環境に置きかわりつつあります。ここでは、そのどちらもインストールします。

参考文献

STM32F3DISCOVERY on Mac OS X using Eclipse, GCC ARM and OpenOCD | David Rojas

Standard Peripheral Library / STM32CubeMX共通の対応

Eclipse本体のダウンロード

Eclipse Downloads から、 Eclipse IDE for C/C++ Developers をダウンロードします。

Eclipse IDE for C/C++ Developers

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

Eclipse CDT

Eclipseを起動し、 Help >> Install New Software… からCDT関連のツールをインストールします。

CDT

  • Autotools support
  • Autotools support Source
  • C/C++ C99 LR Parser
  • C/C++ GDB Hardware Debugging
  • C/C++ Memory View Enhancements
  • C/C++ Memory View Enhancements Source
  • C/C++ Unit Testing Support
  • C/C++ Unit Testing Support Sourde

Zylin embedded CDT

Work with:Zylin Embedded CDT Plugin – http://opensource.zylin.com/zylincdt と入力し、Zylin Embedded CDT を選択します。

Standard Peripheral Library特有の設定

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

GNU ARM

Work with:CDT GNU ARM – http://sourceforge.net/projects/gnuarmeclipse/files/Eclipse/updates と入力し、 GNU ARM C/C++ Cross Development Tools を選択します。

CDT GNU ARM

Toolchain

GCC ARM Embedded project files : GCC ARM Embedded からMac向けのtoolchainをダウンロードします。当方がインストールする際 gcc-arm-none-eabi-5_2-2015q4-20151219-mac.tar.bz2 が最新であり、こちらをインストールしました。gccはバージョン5となっておりましたが、特に問題ありませんでした。ダウンロードしたら、任意のディレクトリに展開します。当方は、 ${HOME}/opt ディレクトリを作成し、こちらに展開しました。

GCC ARM Embedded project files

STM32CubeMX向けの環境を構築する

Eclipseプラグイン

STM32CubeMX

STSW-STM32095 STM32CubeMX Eclipse plug in for STM32 configuration and initialization C code generation – STMicroelectronics から サンプル&購入 にある Download ボタンを押下してダウンロードします。

STSW-STM32095 STM32CubeMX Eclipse plug in for STM32 configuration and initialization C code generation

Eclipseを起動し、 Help >> Install New Software… からダウンロードしたファイルをインストールします。

Install STM32CubeMX Eclipse

SW4STM32 System Workbench for STM32

SW4STM32 System Workbench for STM32: free IDE on Windows and Linux – STMicroelectronics にある ソフトウェアの取得 から Go to Site ボタンを押下します。
こちらにEclipseプラグインのインストール手順が記載されています。

Work with:OpenSTM32 – http://www.ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.site と入力します。

  • ARM Compiler for MCU(for Mac OSX 64 bits)
  • OpenSTM32 IDE
  • OpenSTM32 Linker Script editor

をインストールします。

OpenSTM32

ここまでで、ひとまずEclipseでビルドまでできるようになります。その手順は後日紹介したいと思います。