Eclipse IDEベース統合開発環境のプロジェクトImport、Renameの方法

統合開発環境のデファクトスタンダードがEclipse IDE。本ブログ対象ベンダのNXP)MCUXpresso IDE、ルネサス)e2studio、Cypress)PSoC Creator、STM)SW4STM32など全てこのEclipse IDEをベースとした統合開発環境です。

ベンダやマイコンが変わっても殆ど同じ操作でエディットやデバッグができるので、慣れが早く、本来のソフトウェア開発に集中できます。但し、オープンソース開発なので、毎年機能追加や変更があり、2018年は6月にバージョン4.8、コードネームPhoton(光子の意味)への改版が予定されています。

本投稿は、2017年版Eclipse IDEバージョン4.7、Oxygenベースの各社IDEプロジェクトインポート、リネームの方法を説明します。
弊社マイコンテンプレートを使ってソフトウェア開発をする時、これらの操作を知っているとテンプレート:ひな型活用のプロジェクト開発がより簡単です。

IDEの例としてSW4STM32を用います。IDEは、Workspace:ワークスペースと呼ぶフォルダ単位で機能します。ワークスペース内には複数プロジェクトが存在でき、2重起動ができます。

プロジェクトImport

マイコンテンプレートは、テンプレートの具体的な応用例にシンプルテンプレートプロジェクトやBaseboardテンプレートプロジェクトをArchives形式で提供します。Archives形式は、配布に都合が良くEclipse IDEの標準方法ですので、IDEダイアログに従って操作すれば「複数の方法」でプロジェクトインポートができます。

このArchiveプロジェクトの「最も簡単」なワークスペースへのインポート方法が下記です。

  • Windowsで、Archiveを適当な場所で解凍 → 事前に作成したIDEワークスペースへ解凍フォルダ毎コピー
  • IDEで、File>Import>General>Existing Projects into Workspace実行 → インポートProjects選択
Import Existing Projects into Workspace
Import Existing Projects into Workspace。プロジェクトをインポートする方法は、マルチプラットフォーム対応のEclipse IDEの場合、複数ある。

IDEで直接Archivesプロジェクトを解凍しワークスペースへインポートすることもできますが、フォルダ選択などのダイアログ操作は面倒です。マルチプラットフォーム対応のEclipse IDEたるゆえんですが、WindowsかmacOSの上で使うのであれば、この方法が簡単です。

プロジェクト名Rename

※Rename後、Renameプロジェクトの再ビルドが失敗する場合があります。Rename前に、ワークスペース毎バックアップするなどの事前対策を実施後、Renameを実行してください。

ワークスペースに複数プロジェクトが存在するには、別々のプロジェクト名が必要です。例えば、シンプルテンプレートを使って開発したプロジェクトが既にあるワークスペースへ、もう一度シンプルテンプレートを使って新たなプロジェクトを追加作成する場合を考えます。

開発したプロジェクト名は、SimpleTemplateのままです。これをRenameしないと新たにシンプルテンプレートをインポートできません。この時は、開発したプロジェクト選択後、右ボタンクリックで表示されるメニューからRenameを選択し、別プロジェクト名に変更します。

Rename Project Name
Rename Project Name。元々のEclipse IDE守備範囲外のファイル名は、手動リネームが必要。

注意点は、この操作でプロジェクト名変更をIDEは認識しますが、IDE以外のツールで作成したファイル名などは、そのままとなる点です。図はSTM)SW4STM32の場合です。Debugフィルダ下の.cfg/ioc/pdf/txtの4ファイルがそれらです。これらファイルは、手動でのRenameが必要です。これを怠るとRenameしたプロジェクトの再ビルドやデバッグが失敗します。

これら手動Renameが必要なファイルは、各社のAPI生成ツールなどに関連したファイルで、他社IDEでも同様です。元々のEclipse IDE守備範囲外のこれらファイルは、プロジェクト名Rename時、手動Renameが必要ですので注意してください。

Rename後、再ビルドが成功することを確認してください。再ビルドが失敗する場合には、プロジェクトフォルダ毎コピー&ペーストを実行し、ペースト時にRenameしたい別プロジェクト名を設定する方法でRenameを試してください。

別プロジェクトファイルのコピー、ペースト

別プロジェクトファイルを当該プロジェクトへコピー、ペーストする方法は、同じワークスペース内であれば簡単です。ファイル選択後、コピー:Ctrl+Cとペースト:Ctrl+Vでできます。

ワークスペースが異なる場合は、IDEの2重起動を使うとファイル選択ミスがありません。

IDEは、起動中でももう1つ同時起動が可能です。IDE起動時に、異なるワークスペース選択をすれば、コピー対象プロジェクトのファイルをIDEで目視しながら選択できます。もちろん、Windowsエクスプローラでファイルを直接選択しペーストも可能ですが、普段IDEで見慣れたファイル表示で選択する方がミスは少ないです。同一ファイル名の上書き前の確認も行います。

エクスプローラでファイル表示をすると、普段IDEで見慣れないファイルなども見られます。これらが選択のミスを生みます。IDEは、必要最低限のファイルのみ表示しているのです。

IDE画面のリセット

デバッグやコンソールなど複数Perspectiveを表示するIDE画面は、時に隠したPerspectiveを表示したくなります。PerspectiveをIDE初期状態に戻すのが、Window>Perspective>Reset Perspectiveです。

Reset Window Perspective
Reset Window Perspective。IDEの初期状態ウインド表示に簡単に戻せる。

この方法を知っていると、使わないPerspectiveを気軽に非表示にできるので、画面の有効活用ができます。

まとめ

Eclipse IDEベースの各社開発環境で知っていると便利な使い方をまとめます。

  • プロジェクトインポート:IDEのExisting Projects into Workspaceを使うと簡単
  • プロジェクト名リネーム:自動リネームはEclipse IDE関連のみ。API生成ツール関連ファイルは手動リネーム要。
  • 別プロジェクトファイルのコピー&ペースト:IDE2重起動を使い、ファイル選択ミスを防ぐ
  • IDE画面リセット:利用頻度の低いPerspectiveを非表示にし、画面有効活用
Eclipse Base IDE Project Import and Rename
Eclipse Base IDE Project Import and Rename

マイコンテンプレート活用の最初の段階が、テンプレートプロジェクトのワークスペースへのインポートです。これらインポートしたテンプレートへ変更を加え、開発プロジェクトにします。

この開発プロジェクト名をリネームし、同じワークスペースへ、再びテンプレートプロジェクトをインポートします。ワークスペース内は、リネームした色々な既成開発プロジェクトから成り、様々なプロトタイピング開発へも応用できるでしょう。

ワークスペースが異なるファイル操作には、IDE2重起動でファイル選択のミスを防ぎます。

これらのTipsを知っていれば、既存資産を流用、活用し、本来のソフトウェアに集中しミスなくプロトタイピング開発ができます。

2018マイコンベンダ最新ニュース

弊社マイコンテンプレートで扱っております主要マイコンベンダ、NXP、ルネサス、STマイクロエレクトロニクス、Cypress各社の2018最新ニュースとRTOS関連ニュースの中から、ブログ対象MCU関連の情報をピックアップしました。

NXP

MCUXpresso IDEの新バージョン10.1.1_606がリリースされました。また、LPC8xx向けのLPCOpenライブラリv3.02もリリースされましたが、リリースノートを見てもv3.01のバグ解消は未処理のようです。

そのためか、MCUXpresso IDE v10.1.1付属LPCOpenライブラリもv2.19のままで、v3.02添付はありません。近いうちにv3.02の動作を調査する予定です。

ルネサス

インターシル社と完全統合した新生ルネサス誕生(2018年1月1日)。アナログ関連で高いスキルを持つ旧インターシル技術がRL78マイコンへも導入されそうな気配があります。Cortex-M0/M0+コアとの競争に生き残るには、汎用RL78マイコンのアナログ強化、センサ内蔵が方策なのでしょう。

但し、開発環境CS+の先行きには不安要素もあります。6月末提供予定のe2 studioのAI利用無償プラグインはRL78もカバーされますが、果たしてCS+でも同機能がサポートされるのかが気掛かりです。

e2 studio新プラグイン
e2 studio新プラグイン(記事より)

STマイクロエレクトロニクス

既にEWARM、MDK-ARM、TrueSTUDIO、SW4STM32の4種IDEをSTM32マイコン向けに提供中のSTMが、TrueSTUDIOの開発元スウェーデンのAtollic社を買収しました。

現状のEclipseベースTrueSTUDIO無償版もコードサイズ制限はなく、弊社使用中のSW4STM32無償版サイズ制限なしと機能的には同じです。このTrueSTUDIOとSW4STM32を比較し、なぜAtollicを買収したのかを探りたいと思います。

Cypress

最新マイコン評価ボードで紹介しましたCY8CKIT-062-BLE PSoC 6 BLE Pioneer Kitが、サイプレスサイトからも購入できるようになりました。また、サンプルソフト(Code Examples)も豊富に提供されています。

E-ink液晶を使ったArduinoシールドは、汎用性が高そうなので興味を惹かれます。

RTOS

mbed OS 5の新しいバージョンMbed OS 5.7.2 がリリースされました。Amazon FreeRTOSなど、MCU用RTOSの普及も2018年のトレンドになりそうです。

まとめ

2017年の半導体ベンダランキング(速報値)が発表されました。NXPは第10位(前年9位)です。2016年MCUランキングは、NXP>ルネサス>STM>Cypressの順でした。NXPとルネサスがMCUシェアの1/3を占めるのは、今年も変わらないかもしれません。

例年に比べ2018年はMCU各社の動きが早いように感じます。EVや自動運転、コネクテッドカーがMCU開発の動きに拍車をかけているのは間違いと思います。

新たな動向としては、ソフトウエア開発環境の整備です。数億、数十億個とも言われるIoTマイコン時代では、現状のようにオーダーメイドでのソフト開発では時間が掛かりすぎます。より高速で効率的なソフトウエア開発ツールやライブラリ活用術が求められるような気がします。

MCU開発におけるベンダ専用IDEと汎用IDE

ARM Cortex-M系(M0、M0+、M3、M4…)のMCUを開発する時のIDEは、Eclipse IDEベースが一般的です。同じEclipseを使って各ベンダ専用IDEが開発されますので、ウインド構成や操作性(F5やF7の機能など)は同じです。

MCUXpresso IDE Perspective
NXPのMCUXpresso IDE画面(ユーザカイドより)

今回は、MCU開発スピードを左右する、専用IDEと汎用IDEの差と将来性を考察します。

ARM Cortex-M系のIDE

弊社マイコンテンプレートで使用中の専用IDE(ベンダ)が下記です。いずれもコードサイズ制限はありません。

・MCUXpresso(NXP)
・SW4STM32(STM)
・PSoC Creator(Cypress)
CS+ for CC/CA,CX(Runesas)、64KBコードサイズ制限あり

このうち、CS+ for CC/CA,CXは、ルネサスRL78系MCUなので除外します。今回から、2016年MCUベンダ売上5位のSTM32のマイコンテンプレートも開発しますので、追加しました。

一方、MCUベンダに依存しない汎用IDEで有名なのが、下記です。

・IAR Embedded Workbench for ARM(IAR) (=EWARM)、無償版32KBコードサイズ制限
・uVision(Keil) (=MDK-ARM)、無償版32KBコードサイズ制限
mbed(ARM)、コードサイズ制限なし

残念ながら汎用IDE無償版はコードサイズ制限があります。勿論、商用版は制限なしですが1ライセンスあたり数十万円程度もします。

mbed(ARM)は、サイズ制限なしでベンダにも依存しませんが、ブラウザでコンパイルとダウンロード(=書込み)はできても、デバッグ機能がありませんので、今回は汎用IDEから除外しました。
※IDEへエクスポート(下図)すればデバッグ可能との記載はありますが、今のところ私は成功していません。

mbed Export to IDE
mbedのIDEエクスポート

汎用IDEのメリットは、ベンダが変わっても同じIDEが使えること、開発したソフトのベンダ間流用障壁が専用IDEよりも低い(可能性がある)こと、技術サポートがあることなどです。

Eclipse IDEのプラグイン機能とCMSIS

オープンソースのEclipse IDEは、プラグインで機能を追加できます。もしベンダ専用機能が、全てプラグインで提供されれば、毎年更新される生のEclipse IDEへ、これらを追加すればIDEが出来上がります。これが一番低価格で良いのですが、Unixならともかく、Windowsでの実現性は低いと思います。

一方、CMSISが普及すると、開発ソフトのベンダ間流用問題はいずれ解決します。従って結局、ベンダ専用IDEで最後まで残る差は、コード生成機能になると思います。

同じCortex-M系MCUであっても、周辺回路はベンダ毎に異なる差別化部分です。コード生成機能は、汎用IDEの弱点でもあります。使いやすコード生成を提供できるMCUベンダが、生き残るでしょう。

一長一短があるChrome、Firefox、IE、Edgeなどのブラウザ同様、Cortex-M系MCU開発は、ベンダ専用IDEを使うのが良さそうだと思いました。

Node-REDとGenuino 101

Node-RED

トラ技2016年6月号記載のNode-REDは、強力な開発ツールです。ターゲットは、本ブログのマイコンやシングルボードコンピュータなど全てを含むことができます。但し、あくまでNode-RED動作環境の下での動作が前提です。

つまり、WindowsやLinuxなどのリッチOSアプリの1つがNode-REDで、これを使えば、Raspberry Pi 3とArduino/Genuino 101両方で動作するプログラムが開発できます。マイコンの動作オブジェクトコードは(今のVersion0.13.4版では)出力されません。

今回は、このNode-REDがデバイスに依存せずにプログラミングできる仕組みとprintfデバッグについて考察します。

デバイス非依存性

マイコン開発で苦労する部分は、センサやモータなどの個別制御プログラムです。しかし、この制御プログラムが予めライブラリで提供されていて、しかも、制御する側のデバイス、マイコンかシングルボードコンピュータかもGUIで簡単に選択できれば、苦労はかなり減ります。

残りの部分は、どの順番でどのように個別制御プログラムを動かすかというフローチャートのイメージに近い部分です。このフローチャートに近い部分を、Node-REDでは「flow」と呼び、ブラウザを使ってGUIで開発します。

Node-REDのflow例
Node-REDのflow例

ChromeやFirefoxなどのお馴染みのブラウザが使えますので、Windows であってもiOSでも、Linux:Raspbianであっても開発できます。RaspbianをインストしたRaspberry Pi 3もデフォルトブラウザはEpiphanyですが問題なく動作します。

トラ技6月号のP65の図8:GPIOライブラリnode-red-contrib-gpioとJohnny-Fiveの位置づけが、「デバイス非依存性」を端的に示しています。

図8で示されたライブラリとNode-REDのFlowは、オンラインFlowライブラリで多くのサンプルが公開されており、6月4日時点で778個です。☑nodeがライブラリです。

トラ技では、P66のArduino系ボードの中にArduino/Genuino 101は入っていませんが、Firmateプロトコルスケッチをボードへ書き込めますので記事と同様に動作します。このFirmateもCPUやマイコンボードに依存しないプロトコルなので、対象ボードがFirmateさえサポートすればNode-REDから制御できます。

Arduirno/Genuino 101でFirmateプロトコルスケッチを利用
Arduirno/Genuino 101でFirmateプロトコルスケッチを利用

このように、制御に必要なflowサンプルやnodeライブラリを部品として全てネットからダウンロードでき、この部品の加筆修正も簡単にできるNode-REDは魅力があります。ソフト開発時にハード準備が間に合わないことは良くあることですが、実ハードがなくても代替ハードで動作確認し、最後にGUIでポート番号を変更しさえすれば実ハードでも動作することが可能だからです。

printfデバッグ

Arduino IDEも同様ですが、Node-REDには、本格的なデバッガ機能が(今のところ)ありません。

プログラマがprintf(Node-REDは、デバッグ出力ノードに相当)を使って変数などを一時出力してデバッグすることはできますが、動作を一時停止しRAM内容をダンプしたり、変数を変更後に停止位置から再実行したりすることは簡単にはできません。

printfデバッグは、ダウンロードした部品が完全でバグが無いブラックボックスとして扱える場合には効果的かもしれません。例えば、ハードウエア開発で、74シリーズロジックを組み合わせて開発する場合に、ロジックにバグがあると考える開発者はいません。自ら開発したハードをデバッグする際には、プローブとオシロスコープを使って、ロジック間の信号を読み解きバグ取りをします。このプローブがprintfに相当します。

少し前は、マイコンソフト開発でもprintfデバッグが盛んでした。デバッガは高価だったからです。しかし現在は、シリアルーUSB変換機能と兼用でデバッガ機能を持たせた低価格マイコンボードが多数あります(LPC、Kinetis、Cypressマイコンボードなど弊社利用の評価ボード)。

ソフトウエアもハードウエアのように部品化が進めば、printfデバッグで完成する時代がくるかもしれません。しかし、かなり先の話だと個人的には思います。
個別マイコンボードのデバッガ機能がプラグインで追加できる開発ツールを望んでいます。EclipseベースのIDEは、この要望に最も近いのかもしれません。

Arduino/Genuino 101用マイコンテンプレート

因みに、Arduino/Genuino 101のIDEは、今のところArduino IDEです。

Intelは、デバッグ機能付きのEclipseベースIDE、Intel® System Studio for MicrocontrollersのQuark™ SE版をアナウンスしていますが、未だにリリースされていません。私は2016年版Eclipse:Neonをベースに使うと思いますので、今少し時間がかかるかもしれません。

従って、Arduino/Genuino 101用のマイコンテンプレートの発売ももう少し後になります。昔ながらのprintfデバッグには、戻りたくないというのも本音です。ご容赦ください。

記載IoTデバイス、IDE、テンプレート動作ボード一覧追加

ブログ記載の「IoT制御デバイス」、「マイコンIDE」、「テンプレート動作ボード」が一目で解る表を追加しました。記載IoTデバイスのプルダウンメニューで表示します。

ブログ記載IoTデバイスのプルダウン表示
ブログ記載IoTデバイスのプルダウン表示

これらは、Wordpress固定ページ機能を使っていますので、通常ブログ記事よりも大きな範囲で表示します。

今後、デバイス追加や対象IDEが変化した時、テンプレート動作確認ボードを追加した時は、この表を随時更新していきます。最新のブログ対応状況をチェックする時などにご利用ください。

EclipseベースのマイコンIDE

4月はマイコンIDE関連のブログ記事を3件記載しました。まとめにEclipseベースのマイコンIDEを概説します。

統合開発環境:Integrated Development Environment, IDE

ソフトウエアを開発するには、ソースを記述する「エディタ」、記述ソースをターゲットコードへ変換する「コンパイラ」、コードをターゲットへダウンロードしデバッグする「デバッガ」…など色々なツールが必要です。これらツールをひとまとめにパックしたのが、統合開発環境:IDEです。

Eclipse

Eclipse(「イクリプス」または「エクリプス」)は、IBMによって開発された統合開発環境の一つ。高機能ながらオープンソースであり、Javaをはじめとするいくつかの言語に対応(Wikipediaより抜粋)。

オープンソース、OS非依存、多言語対応、プラグインによる機能追加などの特徴を持つEclipseは、マイコン開発のみならず様々な「ソフト開発環境のフレームワーク」として世界中に普及しています。

V4.5が現在の最新版で、コードネームはMars(火星)。今後のリリース予定が下表です。

eclipse schedule (Wikipediaより抜粋)
バージョン リリース日 コードネーム コードネームの由来
4.4 2014/06/25 Luna 月を意味。
4.5 2015/06/24 Mars 火星を意味。
4.6 2016/06予定 Neon 元素の一つ、ネオンを意味。
4.7 2017/06予定 Oxygen 元素の一つ、酸素を意味。

多様性と差別化、OS非依存

多種多様なマイコンをベンダ各社は供給中です。

EclipseベースのIDEは、フレームワークはそのままで、自社の多様なマイコン毎に異なる「APIコード生成ツール」や「コンパイラ」の、その部分のみをプラグインで追加/交換できますので、マイコンベンダにとって好都合です。

さらに、他社との差別化機能になるプラグインの開発に労力を集中できます。APIコード生成ツールでは、NXP(旧Freescale)のProcessor ExpertやCypressのGenerate Application、ルネサスのコード生成などがその例です。

MCUコアがARM Cortex-M0/M0+で同じでもマイコンの周辺回路は各社異なります。この異なる周辺回路を活かすAPIコード生成ツールとその使いやすさが差別化ポイントです。

また、WindowsやiOSへも使えるOS非依存性も開発者に歓迎されています。

e2 studioの例

以上のことを知ったうえでEclipseベースのIDEの1つルネサスのe2 studioのソフトウエア構成図を見ると、内容がよく理解できます。

e2 studio plugin
e2 studio plugin(ルネサスe2 studio説明より抜粋)

マイコンIDEの主流はEclipseベースのIDEですが、マイコンIDE早期習得のコツ、ポイントのページで示したように、IDEで本質的に差が生じるのは「マイコン機種依存のAPI生成ツール」とした根拠をここでは示しました。