ARMマイコンの開発環境を考える

これまでARM、特にCortex-M0、M0+のマイコンについて触る機会がありました。しかし、CMSISやBSP (Board Support Package)などのライブラリ周りも理解しておらず、IDEの言うがままに作ってきた感が否めません(BSPで提供されている関数群しか使っていない場合すらあります)。

 

そこで、ARM周辺がどうなっているのか調べてみようと思いました。その一環で開発環境の乗り換えを検討してみたいと思います。今まで使っていたCoIDEにバグや使い勝手の悪い部分があり気になっていた、というのもあります。

 

開発環境の種類は多少古くなっているものもありますがQiitaにまとめて下さった方がいらっしゃいました。

 

qiita.com

 

私が触った事があるのはmbedとCoIDE + GNU ARM Embedded Toolchainです。先にも書いたとおりメインはCoIDEです。 それぞれ触ったイメージをちょっと書き並べますと…

 

mbedはブラウザ上で開発ができ、ライブラリ周辺が充実しているため簡単に開発ができます。欠点としてはデバッグ機能ですね。とは言え、手軽で使っている人も多いので情報もたくさんあり、情報に困ることはあまりなさそうです。

 

CoIDEは中国で開発されているIDEでCMSISやBSPのインポートが比較的簡単にできます。マイコンによってはメーカー純正のデバッガ(プログラマ)が使えたりします、nuvotonのNu-Link Proとか。v1.7系とv2系がありますが安定重視ならv1.7系な気がします。かといってv1.7系が万全かというとそうでもなく、特にnuvoton製のマイコンを扱う場合で確認している事項ですがProgramming Algorithmで指定しているファイルパス初期値が誤っているために書き込み、デバッグができなかったり全体的に作り込みは甘いと思います。インポートできるCMSISもv3系をよく見かけるのですが、全体的に古いような気がします(現時点で最新版はv5系)。CMSISのバージョンって新しければ良いってのもでもないんでしょうが…。

(2017/11/24追記) このCMSISのバージョンを勘違いしておりました。"CMSISの規格全体がv5になった"と言うのが正しく、個々のヘッダファイルなどはCMSISのバージョンとは連動しないようです。そりゃそうか…。もうちょっと調べないとこの辺よく分かりません。

 

GNU ARM Embedded Toolchainはv5系までLaunchpadで配布されていました。v6系からはARMで配布されているようです。これに1年近く気がついていませんでした…。

 

このCoIDEについて乗り換え先にどういったものがあるのか調べてみました。

IDE

有償 (機能制限がありつつも使えそうなもの)

有償版は基本的にコードサイズ制限や期間限定など制限がかかった無償評価版が存在します。制限についてはIDEそれぞれなので各自確認が必要です。DS-5にはCommunity Editionが存在しますが、対応しているプロセッサがARMv8-AとCortex-A9の一部モデルに限定されます。Atmel StudioはAVR、Atmel ARMの開発に使うことができ、無償配布されています。

 無償

相変わらずCoIDEを使う選択肢もあります。Eclipseプラグイン、OpenOCDなどによるデバッガの使用が多いようです。EmacsVimVisual Studio Codeなどのエディタもあります。こちらもToolchainやデバッガとの連携で対応します。

Toolchain/コンパイラ

 デバッガ

 

EclipseGNU MCU Eclipseを使う場合、CMSISはマイコンメーカーが配布しているものを使用するのがいいのでしょうか。EclipseのPackageシステムでKeil/ARM packsを参照、インストールできるようです。これの使い方については未だイマイチ理解できていません。環境は作ってあるので試してみるしかなさそうです。

 

gnu-mcu-eclipse.github.io

 

 これから

とりあえずARMの開発環境にはどのような物があるのかを調べました。開発ができる環境を作るにあたって、無償版のEclipseを使う方法。そしてKeilやIARの無償版を使う方法の2つの軸で進めたいと思います。それぞれ、どこまでできるのかを見極めたいです。また、CMSISの概要についても調べたものをまとめたいと思います。