System workbench for STM32 (1)

(2016.7.29 作成) 

 フランスのac6という会社が作成しているSystem workbench for STM32という開発環境をここでは紹介したいと思います。

 STマイクロさんのHPでも紹介されていますし、ライブラリ付属のサンプルコードにもプロジェクトが含まれていますので安心して使えると思います。

 Eclipseのプラグインとして動作しているようですので、慣れている人には使いやすい環境ではないでしょうか?

 他の著名な開発環境に比べフリーで、かつコードサイズ制約なしに使用できるので趣味の電子工作には最適の開発環境と思います。

 このページでは最短でLED点滅ができるように環境構築について紹介したいと思います。ただ管理人の我流のところも多いと思いますので、間違い等があれば指摘いただければと思います。

ダウンロード & インストール

 まずはOpenSTM32のサイトでユーザー登録を行い、System workbenchをダウンロードします。また同時に使用するコンパイラ(ARM GCC)とJAVA SEも必要に応じてダウンロードしてください。

 それぞれのインストールは特に困ることはないと思います。

プロジェクト作成

 最初にSystem workbenchを起動するとworkspaceを聞かれます。必要なライブラリ等は後でこのworkspaceにダウンロードされるので、一度決めたら固定したほうが良いと思います。

 起動したのち、File->New-> C++ Projectを選択して新しいプロジェクトを作成します。ここで作るプロジェクトが一つの実行ファイルになります。

 プロジェクト名は適当に設定します。Locationについてはプロジェクトを保存する場所を指定します。特にworkspace内にプロジェクトを作成する必要はないと思います。

 またproject typeは"Ac6 STM32 MCU Project"を選択します。

 次にConfiguration設定ですが、何も考えずNextを押します。

 次は使用するボードを選びます。発売されているDiscovery/Nucleo基板が選べますので、設定してください。ここでは例としてNucleo-F401REを選択しています。

 次は使用するライブラリの設定です、Standard Peripheral Library (StdPeriph)かHardware Abstraction Layer (Cube HAL)を選べます。どちらもSTマイクロさんが作成しているライブラリになりますが、StdPeriphの方が昔からあるためバグが少なく、基本的な機能で構成されているので業務利用ならこちらでしょうか?

 一方Cube HALの方はマイコン間の差異を減らすように呼び出し等を共通にしているため、趣味で使うならこちらだと思います。一方バグが多く自力で何とかしないといけないことも多いですし、仮想化のためなどで変に冗長になっていて悩ましい点も多いです。

 このサイトで紹介しているプログラムはCube HALを用いていますので、ここではCube HALを選択します。

 いずれにせよ初めてライブラリを選択し、workspaceにライブラリがなければライブラリのダウンロードを行います。

 ダウンロードが終わると下半分のグレーアウトしている部分が選択できるようになります。

  各チェックボックスですが、"Extract all ~~"はライブラリファイルをworkspaceに保存してくれる設定です。プロジェクトにリンクしてくれるわけではないのでOffでいいと思います。

 "Add low ~~~"はプロジェクトに先ほどダウンロードしたライブラリをリンクする設定なので、チェックを入れます。この際"As source in~~"を選ぶとプロジェクト内にライブラリがコピーされるのでプロジェクトフォルダのサイズが大きくなります。管理人は通常"external libraries"を選んでいます。

 さらに下にあるAdditional driver / utilitiesですが、今回は特に使用しないのでチェックしません。チェックすると関連するファイルがプロジェクトに追加されると思うのですが、予備知識なしにチェックするとワケワカランことになるのでチェックしない方が良いです。ただ、予備知識ができるほど詳しくなると逆に自力で設定したほうが分かりやすいので結局管理人はチェックしたことないです。。。

 ここまでくるとようやくプロジェクトが出来上がります。ずいぶんページが長くなってしまいましたので、次のページに分割します。