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

ルネサス世界初28nm車載マイコンサンプル出荷

ルネサスエレクトロニクスは2018年3月28日、車載マイコンRHファミリに28nmプロセス採用マイコンのサンプル出荷を開始しました。従来の40nmに比べ、高性能、低消費電力で大容量フラッシュメモリ内蔵の世界初、世界最高性能のルネサスオリジナルコアマイコンです。

ルネサスマイコンの命名則

車載マイコンRHファミリは本ブログ対象外です。しかし、車載マイコンが、全てのマイコンを引っ張って発展させているので、注目しています。ここでは、ルネサスマイコンの名前の付け方を簡単に説明します。

先頭に「R」が付くのが新生ルネサス誕生後に発売のマイコンです。汎用マイコンが、図のRL78、RX、RZの3ファミリ、車載アプリケーション特化マイコンが今回発表のRHファミリです。

一部例外はあるものの、殆どがルネサスオリジナルのNon ARMコアマイコンです。

ルネサス汎用マイコン
ルネサス汎用マイコンファミリ。用途、性能に応じてRL78、RX、RZと3ファミリある。(出典:汎用マイクロコンピュータラインアップカタログ)

汎用マイコンだけでも、用途や性能(ルネサスはソリューションと呼ぶ)に応じてRL78、RX、RZと3ファミリあり、さらにそのファミリの中で、RL78/G1x、RL78/F12など細かくシリーズに分かれた名前構造なので、解り難いです。

ちなみに本ブログ対象はRL78ファミリですが、RXも対象に入れるか検討中です。個人レベルでも開発環境を整え易いか否かが基準です。RXファミリの場合、実装メモリが大きいのに無償Cコンパイラの容量制限≦128KBがネックになっています。

他のH8や78K0Rなどは、日立やNEC、三菱電機などルネサスに統合前の各社マイコンの名称です。簡単に旧マイコン名が消える海外ベンダと異なり、旧会社のマイコン名をいつまでもカタログに記載するのも善し悪しです。

ルネサスSynergyは、これらNon ARMコアとは別に他社に遅ればせながら開発したARMコアマイコンファミリです。遅れた分、他社同様の売り方はせず、ルネサスSynergy Software Packageというルネサスが動作保証する専用ライブラリを提供し、開発者がアプリケーションのみを開発する方法で販売中です。個人レベルでは、特に価格で手を出しにくいと思っています。

28nmプロセス、大容量メモリの用途

ルネサスRHファミリで向上された性能を、具体的にどこで使うのかが解る図が、記事にありました。

大容量メモリの利用割合
大容量メモリの利用割合。アプリ増加比率よりも、データ、Safety、Security、Driversの増加比率が大きい。OTA利用により最低2面構成のメモリが必要の可能性もある。(出典:記事)

左側の色分けメモリマップから、アプリケーションのメモリ比率の増加よりも、Data、Safety、Security、Driversの増加比率が大きいことが判ります。つまり、開発するアプリケーションよりも、アプリが使うデータや安全性確保、ドライバーの増加がメモリ増大要因です。このドライバーの中にアプリが使うライブラリなども含まれると思います。

また、図では判りませんがOTA:Over-The-Airには、同じメモリが最低2面必要になるかもしれません(関連投稿は、コチラのIoT端末の脆弱性対応はOTA更新が必須を参照)。OTAに万一失敗しても、最悪更新前に戻るには、更新前と更新後のメモリが必要なのがその理由です。

いずれにしても大容量メモリは必須です。また、プロセス細分化でより低消費電力で高速動作を実現しています。
大容量メモリ実装、プロセス細分化は、車載マイコンに限った話ではありません。汎用マイコンでも同じです。

製造は、世界最大の半導体製造ファウンダリである台湾)TSMCが行うので、パソコンのCPU同様、マイコン:MCUも28nmプロセスへ一気に変わる可能性もあります。

半導体プロセス微細化の懸念

一方で、半導体プロセスの微細化は利益につながるのか2018年3月28日、EE Times Japanという記事もあります。28nmよりも先、10nm以下のモバイルプロセサでの話ですが、マイコンでもいずれ同じ時代が来るでしょう。

汎用マイコン技術は、先行する車載マイコンやモバイル半導体技術をベースに発展します。

先行の動向を知ることは、無駄ではありません。少し先を見越して、隠しコマンドなど遊び心がある工夫をソフトウェア、ハードウェアにこっそり入れておくのも開発者の数少ない楽しみの1つだと思います。

マイコン評価ボード2018

マイコン装置を開発する時、ベンダ提供のマイコン評価ボードは重要です。良いハードウェア、良いソフトウェアは、評価ボードをレファンレンスとして活用した結果生まれるからです。

今回は、ARMコア対Non ARMコアという視点で最新マイコン評価ボードを分析します。掲載マイコン評価ボードは下記です(価格は、調査時点の参考値)。

デバッガの2機能

ベンダ評価ボードには、デバッガ付属とデバッガ無しの2タイプがあります。デバッガは、

  1. デバッグ機能:ソースコードのダウンロード、ソースコード実行とブレークを行う
  2. トレース機能:プログラムカウンタ実行履歴を記録する

の2機能を提供します。

トレース機能は、プログラムカウンタ遷移を記録し、ハード/ソフトの微妙なタイミングで発生するバグ取りなどに威力を発揮します。が、本ブログで扱うマイコンでは利用頻度が低く、サポートされない場合もありますので、デバッグ機能に絞って話を進めます。

各社が独自コアマイコンを供給していた頃は、各社各様のデバッガが必要でした。しかし現在は、ARMコアマイコンとNon ARMコアマイコンの2つに大別できます。

ARMコアマイコンの評価ボード

ARMコア評価ボードは、ARM CMSIS規定のSWD:Serial Wire Debugというデバッグインタフェースでコアに接続します。SWDを使うと、他社ARMコアとも接続できます。このため、評価ボードのデバッガ部分と対象マイコンを切り離し、デバッガ単独でも使えるように工夫したものもあります。

ARMコア評価ボードの多くは、対象マイコンにSWDインターフェイスのデバッガが付属しています。これは、対象マイコンが変わってもデバッガは全く同じものが使えるので、量産効果の結果、デバッガ付き評価ボードでも比較的安価に提供できるからです。

CY8CKIT-146
SWDデバッガ付属評価ボードCY8CKIT-146 (出典:CY8CKIT-146 PSoC® 4200DS Prototyping Kit Guide)

また、統合開発環境:IDEもEclipseベースを採用すれば、実行やブレークのデバッガ操作方法も同じになり、例え異なるベンダのARMコアでも同じようにデバッグできるので開発者にも好評です。

以上が、マイコンのデファクトスタンダードとなったARMコアとEclipseベースIDEを多くのベンダが採用する理由の1つです。

Non ARMコアマイコンの評価ボード

一方、Non ARMコアマイコン評価ボードは、本来コア毎に異なるデバッガが必要です。そこで、評価ボードには対象マイコンのみを実装し、その購入価格は安くして、別途デバッガを用意する方法が多数派です。

機能的には同じでもコア毎に異なるデバッガは、サポートするコアによりデバッガ価格が様々です。例えば、ルネサスのE1デバッガは、RL78、RX、RH850、V850の4コアカバーで12600円ですが、RL78とRXコアのサポートに限定したE2 Liteデバッガなら、7980円で購入できます(2018年3月の秋月電子価格)。

RL78/G11評価ボードとE1
RL78/G11評価ボードとE1

ルネサスもE1/E2 Liteデバッガ付きのRX用低価格評価ボード2980円を2018年3月に発表しました(マルツエレック価格)。

E1、E2 Liteデバッガ付きRX評価ボード
E1、E2 Liteデバッガ付きRX評価ボード (出典:Runesasサイト)

※RX評価ボードは、無償CコンパイラROM容量制限(≦128KB)に注意が必要です。入手性は良いので容量制限を撤廃してほしいです。

個人でマイコン開発環境を整える時は、購入価格は重要な要素です。マイコンがARMコアかNon ARMコアか、デバッガ搭載かなどにより、評価ボード価格がこのように異なります。

標準インターフェイスを持つマイコン評価ボードの狙い:プロトタイピング開発

最近の傾向として評価ボードの機能拡張に、Arduinoコネクタのシールド基板を利用するものが多くなりました。様々な機能のシールド基板とその専用ライブラリが、安く入手できることが背景にあります。

ARMコア、Arduinoコネクタ、EclipseベースIDEなどの標準的インターフェイスを持つマイコン評価ボードの狙いは、色々なマイコン装置の開発を、低価格で早期に着手することです。既存で低価格なハード/ソフト資産の入手性が良いのが後押しします。

中心となるマイコン評価ボードへ、機能に応じたシールド基板を実装し、早期にデバッグしてプロトタイピング開発し製品化が目指せます。

CY8CKIT-046
Arduinoコネクタを2個持つCY8CKIT-046、緑線がArduinoコネクタ (出典:CY8CKIT-046 Qiuck Start Guide)

ルネサスもEclipseベースのIDE:e2Studioを提供中ですが、これは世界中のEclipse IDEに慣れた開発者が、ルネサスマイコンを開発する時に違和感を少なくするのが主な狙いだと思います。Non ARMルネサスマイコン開発の不利な点を、少しでも補う方策だと推測します。

関連する過去のマイコン評価ボード投稿

あとがき

ルネサス最新汎用マイコンRL78/G11は気になります。従来のRL78/G1xに比べアナログ機能を大幅に強化し、ローパワーと4μsの高速ウェイクアップを実現しています(詳細情報は、コチラ)。開発資料の多くがe2Studioで、CS+ではありません。Non ARMコアなので他社ARM比、特に優れたマイコンの可能性もあります。

 

マイコンソフトウェア開発の基礎知識と開発方法、配布開始

1月末に3回に分けて投稿した「マイコンソフトウェア開発の基礎知識と開発方法」を1つのpdf資料にまとめました。弊社マイコンテンプレートサイトのアプリケーション開発手順のページから、どなたでも無料ダウンロードが可能です。

Sample Software First and MCU Template
Sample Software First and MCU Template

この資料は、Sample Software Firstについて説明しています。マイコンテンプレートを使ったアプリケーション開発手順と合わせて読んで頂くと、マイコンソフトウェアの開発方法がより解り易くなると思います。

今後、ご購入頂いたマイコンテンプレートの付属資料としてこの資料も添付する予定です。

マイコンテンプレート購入検討中の方、既に購入された方でも、ご活用ください。

NXPとルネサスのMCU開発動向

NXPとルネサス、両社幹部が語ったMCU開発動向記事から、弊社ブログARM Cortex-Mシリーズ、16ビットMCU RL78関連部分をピックアップしました。動向記事は下記です。

NXPのMCU開発動向

記事によると車載MCUは、製品群をS32 Automotive PlatformでARMアーキテクチャ(Cortex-A、Cortex-R、 Cortex-M)に全て統一し、基本的なペリフェラル、メモリインタフェースを共通化、S32デバイス間ならソフトウェアの90%を再利用できるそうです。

同時にS32 MCUは、自動車用機能安全規格である「ASIL-D」に対応し高度セキュリティを担保、また完全なOTA(Over the Air)機能もサポート予定です(OTAはコチラの投稿参照)。

S32製品は、2018年1Qサンプル出荷、2019年から量産予定です。

Common Hardware Architecture Platform (Source: NXP)
Common Hardware Architecture Platform (Source: NXP)

この車載MCU開発動向は、本ブログ対象の家庭や個人向けCortex-MコアMCUへも影響を与えると思います。NXPはFreescale買収後、LPCとKinetisの2つのCortex-Mシリーズ製品を提供中です。

ARM Cortex-M Core Kinetis and LPC
ARM Cortex-M Core Kinetis and LPC

S32製品の強み、ハードウェア共通化、ソフトウェア再利用、セキュリティ確保、OTAは、そのまま現状NXPの 2製品並立Cortex-Mシリーズへも適用される可能性が高いと思います。その方がNXP、新規ユーザ双方にとって開発リソースを集中し易いからです(現行ユーザには多少インパクトがありますが、Cortex-Mコアは同じなので、SDKなどが変わるかも?!しれません…)。

ペリフェラルが共通化されれば、サンプルソフトも同じになるでしょう。ソフトウェア90%再利用は、ライブラリ充実化も見込めます。差分の10%は、Cortex-コア差、セキュリティレベル差、応用範囲などになる可能性があり、期待できそうです。

ルネサスのMCU開発動向

ルネサスは、2018年夏発売予定のRZファミリで、組込みAIによる推論モデル処理能力を10倍、2019年末までに更に10倍、2021年で10倍にし、推論処理能力を1000倍にするそうです。このために動的に再構成可能なプロセサ技術「DRP(Dynamically Reconfigurable Processor)」を汎用MCU製品へ取り込んでいくそうです。

RZファミリ:現状ARM Cortex-A9 400MHz採用の家電、カーオーディオなどが対象のMCU。

Cortex-AコアのRZファミリとRL78の比較(Source: Runesas)
Cortex-AコアのRZファミリとRL78の比較(Source: Runesas)

能力向上したAI推論により、振動などの画像データを扱えるようになり、さらにはそのフレームレートも高められ、例えば、熟練工のノウハウをエンドポイントで自動化できるようになる。1000倍ともなれば、現在はエンドポイントでは難しいとされる学習も行えるようになるそうです。

産業機器分野では、自動化やロボット化の実現に関わる異常検知、予知保全、認知検査などにAI処理能力を適用予定です。

1月14日投稿のルネサスe2 studioのAI利用無償プラグインで開発環境を提供しますが、弊社対象のRL78ファミリでどの様に実現されるかは不明です。

AI処理能力を1000倍化(Source: Runesas)
AI処理能力を1000倍化(Source: Runesas)

正常進化のNXPと差別化のルネサス

NXP、ルネサスともにARMコアMCUの開発動向は似ています。ルネサス幹部が、汎用MCU統括のため、あえて産業分野にフォーカスして語っただけと思います。

差分は、NXPがARMアーキテクチャの正常進化とも言えるソフトウェア資産の共通化を全面に推しているのに対し、ルネサスは、差別化DPR技術で推論機能の1000倍化を目指す点です。
※正常進化の根拠は、コチラの投稿のCMSIS参照

この差別化がガラパゴスになるのか、それとも光る技術になるか、今年夏頃の新製品RZファミリに注目します。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(最終回)

前回までで初心者、中級者向けマイコンソフトの基礎知識と開発方法に、俯瞰視野でサンプルソフトを選び、サンプルソフト初期設定とループ内処理をライブラリとして評価ボードで動作確認しながら開発するサンプルソフトファーストの方法を述べました。

この方法は、サンプルソフトをジグソーパズルのピースとし、各ピースを弊社マイコンテンプレートへ入れさえすれば開発できるので、楽しくラクにマイコンソフトウェア開発ができます。

サンプルソフトを組合せるマイコンソフトウェア開発
サンプルソフトを組合せるマイコンソフトウェア開発

日本人は、サンプルソフトのコメントや概要記述の英語が苦手です。最終回は、ソフトウェアに使われる英語、特にサンプルソフト英語の扱い方を示し、本開発方法を総括します。

マイコンサンプルソフトの英語コメントは重要

初期設定+無限ループ内の1周辺回路制御という構造:フォーマットが決まっているマイコンサンプルソフトは、英語圏開発者によるものが殆どです。

彼ら彼女らにとって母国語英語ベースのC言語サンプルソフトは、ソースコードだけでも理解に支障はありません。また、関数をモニタ1画面(80字x 25行)以内の行数で記述する傾向もあります。ページスクロールせずに関数全体が見渡せるからです。

C関数の行数
C関数の行数

このような英語圏開発者があえて追記するコメントは、重要事項のみです。数行にまたがるコメントならなおさらです。つまり、なぜコメントしているかを理解することが大切です。といってもソースコードのコメント英語は、解り難いのも事実です。

英語コメントはブラウザ翻訳で日本語化

ブラウザアドレス窓に「翻訳」と入力すると、ブラウザ上で翻訳ができます。長い数行の英文でも瞬時に日本語になります。

ブラウザ翻訳
ブラウザ翻訳

サンプルソフトの英語コメントが解り難い時は、ブラウザ翻訳を使い日本語で読むと内容理解に効果的です。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(総括)

従来のマイコンソフトウェア開発は、マイコンデータシートなど理解が先、次に理解した情報のプログラミングという順番でした。この方法は正攻法ですが、初心者、中級開発者には、限られた開発期間で理解対象が多いため開発障壁が高く、プログラミングの時間も相対的に短くなります。

マイコン応用製品の早期開発には、プログラミングを先にする方法へ見直すことが必要です。

それには、初心者、中級開発者が元々持つ俯瞰視野とサンプルソフト、ライブラリ、評価ボード、ブラウザ翻訳などの既存資産を上手く利用すれば良いのです。Arduinoシールドを使えば評価ボードへの機能追加も簡単で、製品版に近い開発環境でのプログラミングも可能です。

本投稿は、初心者、中級者向けのマイコンソフト開発の基礎知識として、サンプルソフト資産が多数あること、多くのサンプルの中から対象を絞り、一種のライブラリとして動作確認しながらソフト開発をするサンプルソフトファーストの方法を示しました。

IoT時代は、RTOSやセキュリティ知識など、より多くの情報を取り込んだマイコンソフトウェア開発になります。個々の情報の相対的な重要性さえ理解していれば、情報内容の理解よりも開発するソフトウェアへ組込む能力の比重が、ますます高まるでしょう。

開発者がこだわるべきは、短い期間内で開発するソフトウェア出力です。情報理解は、開発後でもOKです。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(第2回)

第1回では、初心者、中級者はデータシートから開発着手せず、元々持っている俯瞰視野を忘れずにマイコンソフト開発をすることが重要だと述べました。
今回は初めにまとめを示し、次にその経緯や理由を説明、どうすれば初心者中級開発者が俯瞰視野でソフト開発できるかを示します。

第2回マイコンソフト開発の基礎知識と初心者、中級者向け開発方法のまとめ

  • サンプルソフトファースト:典型的な使用例、解り易さ重視、ソフトウエア開発立場のサンプルソフトから開発着手
  • サンプルソフトは、タイトルや概要のみを読み周辺回路の要求仕様に近いものを選ぶ
  • 開発の致命的ミスを避けるため、選定サンプルソフトから使用マイコンを再評価
  • サンプルソフト処理理解より、初期設定と無限ループ内処理の記述場所でライブラリとしての流用性を重視
  • ライブラリをマイコン評価ボードで動作確認後、要求仕様へカスタマイズ
  • 選出した複数サンプルソフトを、組み合わせて1パッケージ化できるツールあり

サンプルソフトファースト

マイコンソフトウエア開発は、ソフトウエア以外にもハードウエア、半導体など多くのことを理解した上で開発するのがBestです。しかし、限られた開発期間で全てを理解するのは、対象が多くしかも広すぎるため困難です。そこで、初心者、中級者がゴール(=開発完了)を目指すのに「必要最低限」な対象のみに絞り、ゴールインできるBetterな方法がサンプルソフトファーストです。

必要最低限の対象に絞る時に使うのが、マイコンのサンプルソフト(ベンダによってはアプリケーションノート、Code Examplesとも呼ぶ)です。サンプルソフトは、そのマイコンの「典型的な使用例」を「解り易さ重視」で「ソフトウエア開発の立場」から示す資料です。

「典型的な使用例」「解り易さ重視」「ソフトウエア開発の立場」で作られ、実際に動作するサンプルソフトを、一種のライブラリとして開発に使うのが本方法の骨子です。

マイコンソフトウエア開発対象の4分類

マイコンソフト開発を、制御する対象で4つに分類し、初心者、中級者がサンプルソフトを探すべき順位付けをしたのが下表です。

マイコンソフトウエア開発対象の4分類
分類(検索順位) 概要 対象例
周辺回路(1 マイコンソフト開発の基本中の基本。
周辺回路毎にサンプルソフト多数あり。
GPIO、ADCなど
通信(2 有線通信のサンプルソフト多数あり。
IoT無線通信プロトコルは、未確定。
USART、BLE、Threadなど
RTOS(3 複数タスクのリアルタイム処理に不可欠。
IoTマイコンには必須になる可能性大。
FreeRTOS、mbed OSなど
セキュリティ(4 IoT端末に不可欠。
処理内容は専門家任せでOK。
暗号化、セキィリティICなど

周辺回路は、GPIOやADCなどマイコン内蔵ハードウエアのことです。通信も周辺回路の1つですが、通信相手や有線/無線などにより制御ソフトがかなり変わり複雑度も増しますので、別項目として抜き出しています。また、IoT端末の場合には、BLE: Bluetooth Low EnergyやThreadなどのプロトコル候補がありますが、現状は未確定です。

RTOSやセキュリティも現状マイコンでは開発対象にはなりませんが、IoTが普及する頃には大きな対象になります。

巷にはセキュリティやIoT無線通信の情報が溢れていますが、当面は不要です。周辺回路(1)と有線通信(2)のみを検索すれば、現状のマイコンソフト開発には十分です。これで、探す対象が半分になりました。

サンプルソフト選定

マイコンには多くの周辺回路が実装済みです。しかし、各回路は独立していて、使う回路のみのソフトを開発すればOKです。周辺回路毎に、多くの典型的使用例、サンプルソフトがあります。

サンプルソフトには、内容概要を説明するタイトルや記述が必ずあります。この「タイトルや概要のみを読んで」要求された開発に使えそうか否かを判断します。判断の正確さに拘る必要はありません。気楽に、面白そうだと思ったサンプルソフトでも良いので、何個かピックアップします。

サンプルソフトに要求仕様の「一部しか含まれていないものでもOK」です。最後に示す、複数のサンプルソフトを組合せて1つにできるツールがあるからです。

概要やサンプルソフトのコメントが英語表記の場合も多いです。この場合は、第3回で示す英語対応方法を参考に対応してください。ここでは、全て日本語表記として続けます。

多くのサンプルソフトの中から、タイトルや概要のみで利用可否を判断するのは、日本語ですので簡単です。この操作で、内容まで目を通すサンプルソフトの対象数は、激減します。

ルネサスのIDE CS+で示されるアプリケーションノート例が下図です。

ルネサスCS+のサンプルソフトタイトル検索例
ルネサスのCS+サンプルソフトタイトル検索例

周辺回路の中で難易度が高いのは通信です。他と同様にサンプルソフトを選んでも良いですが、後回しでもOKです。周辺回路のサンプルソフト内に通信が含まれることも多いからです。さらに、通信は周辺回路の出力通知や遠隔制御に使うことも多いので、まずは周辺回路を開発した後でOKです。

重要なのは、「サンプルソフトの選出にも俯瞰視野を使う」ことです。いきなり細部へ入らず、常に俯瞰視野から多くの情報をふるいにかけ、その後で次ステップへ進むようにしましょう。

選出サンプルソフトから判る、開発仕様とマイコンのマッチング

サンプルソフトは、典型的な使用例です。もし、開発の要求仕様が、部分的にでもサンプルソフトに含まれない時は、サンプルの選び方が間違っているか、または仕様そのものの難易度が高いと言うことです。

もしかしたら、開発に使うマイコン選定ミスの可能性もあります。半導体ベンダは、様々なマイコンを発売しています。仕様に合うマイコンを使うのが開発の第1歩です。マイコン選定ミスは致命的です。

このように、サンプルソフトの概要だけでも要求仕様とマイコンのマッチングの良さ、悪さは判ります。ここでは、マッチングは良い、つまり開発見込みがあるマイコンを選定済みとして続けます。

※残念ながら既定方針で使用マイコンが決まっており、これで仕様を満たすものを開発する例も多くあります。しかし、仕様に近いサンプルソフトが無いということは、開発リスクが高いということです。
同一ベンダから汎用/専用など多くのマイコン機種を提供中なのは、開発リスクを下げるためです。選出したサンプルソフトからマイコン選定を再評価するのは良い方法です。

サンプルソフトはフォーマットから読み(見て)ライブラリとして活用

解り易さ重視のサンプルソフトは、構造にフォーマットがあります。周辺回路の「初期設定」と「無限ループ内での周辺回路制御」です。

初期設定で周辺回路の動作、割込みかポーリングかなどが変わります。サンプルソフトは、初期設定とループ内制御の2つに分けて読み(見)ます。初期設定は、周辺回路の使い方が同じなら、そのまま流用できます。

ループ内制御は、割込みの場合は、割込みサービスルーティン:ISRがそのまま流用できます。ISRで起動されるルーティンと、ポーリング処理は、簡単に理解していれば十分です。

つまり、サンプルソフトの処理理解よりも、処理がある場所で、自分の開発出力への流用性を読む(見る)のです。自分の開発に使えるものは、そのままサンプルソフトをライブラリとして使います。解り易さ重視で作ったサンプルソフトなので、ライブラリとしても使えます。

サンプルソフト抽出ライブラリを評価ボードで動作確認後カスタマイズ

サンプルソフトから抜き出したライブラリで本当に動くかを確かめるため、マイコン評価ボードで実際に動作させ確認します。マイコンは動けば開発は楽しくなります。

サンプルソフトとマイコン評価ボードは、ラクに楽しくマイコン開発を行う必須ツールです。

評価ボードでマイコンを動かし、もしも要求仕様と異なる箇所があれば、その箇所のみカスタマイズするのが初心者、中級者開発者向けにお勧めです。このカスタイマイズ時に、初めてデータシートを参照すれば良いのです。マイコンは動作し始めるまでに手間が掛かります。動作立上げを早くすれば、ラクに開発できます。

※サンプルソフトが提供する機能が要求仕様の一部のみの場合でも、複数のサンプルソフト機能を簡単に組み合わせることができる弊社マイコンテンプレートなどのツールがあります。

つまり、サンプルソフトライブラリを活用しジグソーパズルを組むような感覚でマイコンソフトウエア開発ができます。

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マイコン時代では、現状のようにオーダーメイドでのソフト開発では時間が掛かりすぎます。より高速で効率的なソフトウエア開発ツールやライブラリ活用術が求められるような気がします。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(第1回)

マイコンソフトウエア開発者には、俯瞰視野(緑マーク)から開発場所(赤マーク)を捉えることが必須です。

中国の古代建築物
中国の古代建築物(Pixabay無償グラフィックより)

初心者が陥りがちなのは、1つの開発場所の理解に拘って、迷路から抜け出せなることです。ここでは、この開発の迷路にはまらずに、初心者、中級開発者がマイコンソフトウエア開発を楽しくラクにする具体的な方法を3回に分けて解説します。

マイコンソフトウエア開発の手法を書いた書籍やネット情報は、数多くあります。
これらは、奇策などを用いずに正しい開発の方法、つまり「正攻法」で書かれています。開発期限が短くプレッシャーも多い中での正攻法によるソフト開発は、習得に時間がかかり、しかも新しい用語や背景を知らない開発初心者にとっては、覚えることが多く、かなり辛い方法です。

マイコンソフトウエアの開発障壁を高くしているのが、この正攻法です。3回で示す方法は、開発障壁を下げ、マイコンソフト開発を、もっと気軽に、ラクにします。下記内容を予定しています。

  • マイコンソフトウエア開発正攻法のデメリットと、俯瞰視野(第1回)
  • マイコンソフトウエア開発制御対象の分類と、各対象のラクな開発方法(第2回)
  • ソースコード英語コメントの注意点と、英語アレルギーの対処方法(第3回)

マイコンソフトウエア開発正攻法のデメリット

マイコンソフト開発を楽しむには、コツがあります。それは、「初めにデータシートを見ない」ことです。
データシートは、上級レベル開発者が、参考書として「読む時」に威力を発揮します。元々、初心者や中級レベル開発者向けには作成されていないのがデータシートです。

先の投稿でも書いたようにデータシートはデバイスの詳細なデータ値の羅列です。この羅列から内容を見るのではなく「読む」には、値の意味と、意味を理解するためのソフトウエアとは直接馴染みが少ない半導体の基礎知識が必須です。マイコンソフト開発を長年行い基礎知識も習得していれば「読めます」が、マイコン初心者が「読む」のは、時間的に無理、非効率です。

ところが、マイコンソフトウエア開発の根拠は、データシートです。データシートにこう書いてあるから、こうソフトを開発したという理由付けです。つまり、データシートをどのように「読み」、それを「ソフトに変換」した道筋が、巷に溢れるソフト開発情報なのです。要は説明がし易いのです。

この「データシートを読み→ソフトへ変換」は、正攻法ですがデータシートが読めない人は、鵜呑みにするしかない手法です。たくさんの鵜を飲めば、そのうち解るようになりますが効率が悪く忍耐も必要です。

ポイントは、データシートは初心者や中級開発者向けでは無いことです。向いていないデータシートを使って開発着手するのでマイコンソフトウエア開発障壁は高くなるのです。

では初心者、中級開発者は、どうすれば開発障壁を高くせずにマイコンソフト開発ができるのかについては、2回目以降で示します。

初心者、中級開発者の俯瞰視野

最初の写真に戻ります。手前の入口から円形迷路をくぐり、中心の家に到達すればゴール=ソフト開発完了と考えてください(写真そのものは無関係です、念のため…)。

迷路の途中にあるのが、マイコン周辺回路ADCやGPIO、UART通信などのソフト開発対象(斜め赤マーク)です。案件によって対象は異なりますが、対象を開発できればその場所のゲートを通過でき、複数ゲート通過でゴールへ到達するゲームです。ゲームには制限時間(=開発期間)が設定されています。

開発者には開発期間内に何らかの出力、成果が求められます。出力を生むには、現在の位置と開発期間を天秤にかけ、最も出力を生む可能性の高い最短ルート検索能力が必要です。これには、俯瞰視野(緑マーク)からの現状観察は不可欠です。開発者に最も必要な能力が、この俯瞰視野です。

マイコン初心者、中級開発者は、元々初めから俯瞰視野を持っています。マイコンの中身に詳しくないことが逆に幸いしているのです。しかし、正攻法で開発を始めると、段々と視野が狭くなり、開発につまずくとそのつまずいた場所のゲート通過のみに拘る結果、迷路にハマってしまいます。

開発が思い通りに進まない(=迷路にハマった)時は、イメージだけでも良いので俯瞰視野の初心に戻り、現状分析と、例えば、周辺回路の別の使い方などの別ルート再検索を行ってください。間違ったルートでそのまま進んでも、タイムアップでゴールに到達できない可能性もあるからです。

第1回マイコンソフト開発の基礎知識と初心者、中級者向け開発方法のまとめ

  • データシートは、マイコン初心者、中級開発者向けでない
  • マイコンソフトウエア開発者は、俯瞰視野(客観視野)の初心を忘れず状況分析

の2つを示しました。

Cortex-Mシリーズはセーフ、他はアウト

新年早々、Intel、AMD、ARMなどの制御デバイス製造各社に激震が発生しました。「CPU投機的実行機能に脆弱性発見」のニュース(Intel、AMD、ARMの対応Windowsの対応Googleの対応)です。

MeltdownとSpectre
MeltdownとSpectre(Source:記事より)

※投機的実行機能:制御を最適化するためのパイプライン化、アウトオブオーダー実行などの「現代的CPU」ハードウエアに実装済みの機能。

※脆弱性:ウイルスが入る可能性がある箇所のこと、セキュリティホールとも呼ばれる。言わばアキレス腱のような箇所。もっと知りたい方は、総務省サイトの基礎知識が良く解ります。

Cortex-Aシリーズも対象、Cortex-Mシリーズは対象外(セーフ)

パイプラインやアウトオブオーダーなどの最適化機能は、殆どの制御コアに搭載されています。従って、このニュースは深刻です。ハードウエアの深い部分の脆弱性だけに、ソフトウエアのOSやパッチなどで対応できるのか、個人的には疑問ですが、セキィリティ専門家に任せるしかないでしょう。

ARMのリアルタイム系Cortex-RやCortex-Aシリーズも対象:アウト!です。
一方、本ブログ掲載のCortex-Mシリーズマイコンは、これら投機的機能が実装されていないので今回は対象外、セーフでした。

IoT端末の脆弱性対応はOTA:Over The Air更新が必須

昨年12月3日投稿のCortex-Mを用いるIoTマイコンへも、Amazon FreeRTOSなどのRTOSが期待されています。今回のような脆弱性への対応には、無線通信によるソフトウエア更新:OTA機能が必須になるでしょう(ソフトウエアには、OSとアプリの両方を含んでほしいという願望も込みです)。

時々発生する自動車リコールも、ハード起因とソフト起因の両方があります。車の場合は、ディーラーへユーザが車を持ち込めば対応できますが、組込み制御の場合は、開発者自身が動作中の現場で対応するのが現状です。今回は、Cortex-Mシリーズはたまたまセーフでしたが、同様のセキュリティ事案への対策を練る必要があると思います。

と言っても、当面できるのは、現場でIDEやUART経由の直接ソフト更新か、または、コチラの記事のような(多分高価な)パッチ配布手段しか無いかもしれません。

RTPatch適用範囲
RTPatch適用範囲(Source:記事、イーソルトリニティ)