MCUプロトタイプ開発のEMS対策とWDT

ノイズや静電気によるMCU誤動作に関する興味深い記事がEDN Japanに連載されました。

どのノイズ対策が最も効果的か? EMS対策を比較【準備編】、2019年10月30日
最も効果的なノイズ対策判明!  EMS対策を比較【実験編】、2019年11月29日

EMS:(ElectroMagnetic Susceptibility:電磁耐性)とは、ノイズが多い環境でも製品が正常に動作する能力です。

MCUプロトタイプ開発時にも利用すべきEMS対策が掲載されていますので、本稿でまとめます。また、ノイズや静電気によるMCU誤動作を防ぐ手段としてWDT:Watch Dog Timerも説明します。

実験方法と評価結果

記事は、インパルスノイズシュミレータで生成したノイズを、EMS対策有り/無しのMCU実験ボードに加え、LED点滅動作の異常を目視確認し、その時点のノイズレベルでEMS対策効果を評価します。

評価結果が、11月29日記事の図5に示されています。

結果から、費用対効果が最も高いEMS対策は、MCU実験ボードの入力線をなるべく短く撚線にすることです。EMS対策用のコンデンサやチョークコイルは、仕様やパーツ選定で効果が左右されると注意しています。

MCUプロトタイプ開発時のお勧めEMS対策

MCUプロトタイプ開発は、ベンダ提供のMCU評価ボードに、各種センサ・SWなどの入力、LCD・LEDなどの出力を追加し、制御ソフトウェアを開発します。入出力の追加は、Arduinoなどのコネクタ経由と配線の場合があります。言わばバラック建て評価システムなので、ノイズや静電気に対して敏感です。

このMCUプロトタイプ開発時のお勧めEMS対策が下記です。

1.配線で接続する場合は、特に入力信号/GNDのペア線を、手でねじり撚線化(Twisted pair)だけで高いEMS効果があります。

身近な例はLANケーブルで、色付き信号線と白色GNDの4組Twisted pairが束ねられています。このTwisted pairのおかげで、様々な外来ノイズを防ぎLANの信号伝達ができる訳です。

信号とGNDの4組Twisted pairを束ねノイズ対策をするLANケーブル
信号とGNDの4組Twisted pairを束ねノイズ対策をするLANケーブル

2.センサからのアナログ入力信号には、ソフトウェアによる平均化でノイズ対策ができます。

アナログ信号には、ノイズが含まれています。MCU内蔵ADCでアナログ信号をデジタル化、複数回のADC平均値を計算すればノイズ成分はキャンセルできます。平均回数やADC周期を検討する時、撚線と平行線では、2倍以上(図5の2.54倍より)のノイズ差が生じるので重要なファクターです。
平均回数やADC周期は、パラメタ設定できるソフトウェア作りがお勧めです。

3.SWからの入力には、チャタリング対策が必須です。数ミリ秒周期でSW入力をスキャンし、複数回の入力一致でSW値とするなどをお勧めします。
※弊社販売中のMCUテンプレートには、上記ADCとSWのEMS対策を組込み済みです。

4.EMS対策のコンデンサやチョークコイルなどの受動部品パーツ選定には、ベンダ評価ボードの部品表(BOM:Bill Of Matrix)が役立ちます。BOMには、動作実績と信頼性がある部品メーカー名、型番、仕様が記載されています。

ベンダMCU評価ボードは、開発ノウハウ満載でMCUハードウェア開発の手本(=ソフトウェアで言えばサンプルコード)です。

特に、新発売MCUをプロトタイプ開発に使う場合や、MCU電源入力ピンとコンデンサの物理配置は、BOM利用に加え、部品配置やパターン設計も、MCU評価ボードを参考書として活用することをお勧めします。
※PCB設計に役立つ評価ボードデザイン資料は、ベンダサイトに公開されています。

MCU誤動作防止の最終手段WDT

EMS対策は、誤動作の予防対策です。EMS対策をしても残念ながら発生するノイズや静電気によるMCU誤動作は、システムレベルで防ぐ必要があります。その手段が、MCU内蔵WDTです。

WDTは、ソフトウェアで起動とリセットのみが可能ないわば時限爆弾です。WDTを一旦起動すると、ソフトウェアで定期的にリセットしない限りハードウェアがシステムリセットを発生します。従って、ソフトウェアも再起動になります。

時限爆弾を爆発(=システムリセット)させないためには、ソフトウェアは、WDTをリセットし続ける必要があります。つまり、定期的なWDTリセットが、ソフトウェアの正常動作状態なのです。

ノイズや静電気でMCU動作停止、または処理位置が異常になった時は、この定期WDTリセットが無くなるため、時限爆弾が爆発、少なくとも異常状態継続からは復帰できます。

このようにWDTはMCU誤動作を防ぐ最後の安全対策です。重要機能ですので、プロトタイプ開発でもWDTを実装し、動作確認も行いましょう。

※デバッグ中でもWDTは動作します。デバッグ時にWDT起動を止めるのを忘れると、ブレークポイントで停止後、システムリセットが発生するのでデバッグになりません。注意しましょう!



マイコン選択方法2019

MCU:マイコンは、種類が多くどれを自分の開発や製品に使うのが最適か?分りにくいと言われます。この問いに対する回答を示します。具体例として今年5月トランジスタ技術で紹介されたCypress PSoC 4シリーズのMCUを選択します。他ベンダでも同様です。

MCU選択とスマホ選択の差

毎年新機種が発表されるスマートフォン。特にAndroidスマホは、電話の基本機能は同じでも、カメラなどの付加機能やサービス、価格帯が広く、選択に迷います。それでも、何年かスマホを使っていると、どの機能が自分に必須かが分かってくるのと懐具合との兼ね合い、また、古い機種は数年でカタログから消えるので、スマホ選択幅は収束します。

ところが、MCUの場合は、発表後10年以上販売継続されます。スマホとの一番の差です。
古い選択肢も残ったまま新製品が追加され、選択幅が時間とともに広がるのがMCU選択を困難にする要因の1つです。

そこで、広い選択幅からMCUを選ぶ方法を、4段階で示します。

第1段階:適用製品による大枠選択

MCUベンダは、適用製品に合わせてMCUを大分類します。車載とインダストリアル分野では使用温度や内蔵周辺回路などの要件が異なるからです。そこで、第1段階は、この適用製品でMCUを選択します。

例えば、NXPSTマイクロエレクトロニクストップサイトの“アプリケーションタブ”がこの大枠を示します。
ルネサスエレクトロニクスCypressの場合は、“ソリューションタブ”です。

ここまでは、多くの方がご存じと思います。分かりにくくなるのは、ココカラです。

第2段階:MCU名称による中枠選択

同じインダストリアル分野のMCUでも、シリーズやファミリなど細かく名称が分かれています。名称が異なるには訳があるので、その理由を理解するのが、第2段階です。この段階では、ベンダ間の買収や合併などの歴史も知っている方が良いです。ポイントは、選択の決め手となる最新カタログの取得です。

Cypressのスマートアプリケーション分野のMCUで説明します。

スマートアプリケーション分野MCU使用例(出典:Cypressサイト)
スマートアプリケーション分野MCU使用例(出典:Cypressサイト)

PSoC 6/4/FM4などの複数MCUから構成されるスマート洗濯機です。PSoC X(X=4,6)は、元々のCypress MCUの名称で、FM4は、2014年に合併した米Spansion(実はSpansionに買収された富士通セミコンダクター)のMCU名称です。

Cypressは、Spansion合併でARM Cortex-M0+ライセンスを取得し、Cortex-M0利用のPSoC 4に適用、その結果生まれた新製品がPSoC 4Sです。PSoC 4Sは、特許取得済み静電容量式第4世代タッチセンサCapSense内蔵のPSoC 4000ファミリへと発展しました。

PSoC 4サイトトップページへ行き製品タブを見ると、さらに細かくPSoC 4000/4100/4200/4700とファミリが分類されており付加機能も異なります。この中枠の段階で製品セレクターガイドなどへ行くとMCU選択に迷ってしまします。他のベンダでも同様です。

この中枠MCU選択の重要資料:Brochureをダウンロードします。Brochureとは、製品パンフレット、カタログのことで、ほぼ毎年更新されます。

どのベンダでも、この中枠MCUを対象とした製品カタログがあります。この最新カタログを見つけるのがMCU選択での最重要事項です。

第3段階:最新カタログと評価ボードによる開発MCU選択

製品カタログには、ベンダがアピールしたい最新MCU情報が詳しく掲載されます。継続販売中の古いMCUや歴史は(紙面の都合上)無視されます。但し、これで新旧MCUを選択のふるいにかけることができます。

世間の話題にはなりにくいMCUの発展速度も、スマホやPC並みに早いのです。最新MCUは、低電力動作や処理効率に優れ、市場ニーズに即した開発が期待できます。

製品カタログには、中枠に相当するMCUファミリ一名称や概略を示す一覧図が掲載されます。

PSoC 4の場合は、下図です。ファミリ名の差(=意味)をこの図から理解すれば、開発MCU選択は、殆ど(?!)最終段階です。

PSoC 4ファミリ一覧図(出典:PSoC 4 Brochure)
PSoC 4ファミリ一覧図(出典:PSoC 4 Brochure)

殆どとは、例えば、エントリーレベル灰色の四角:PSoC 4000SファミリにもFlashやROM、内蔵周辺回路数により多くのMCUがあります。つまり、開発に適すMCUを各四角の中から選択する必要がある訳です。

これには、ファミリ毎にベンダが用意する評価ボード搭載MCUが適します。カタログにも評価ボードが記載されています。

ファミリ毎に用意される評価ボード(出典:PSoC 4 Brochure)
ファミリ毎に用意される評価ボード(出典:PSoC 4 Brochure)

評価ボード搭載MCUは、ファミリ内で最も標準的かつ応用範囲が広く、しかもサンプルコードが付いていますので、MCUを直に動作させることができます。低価格で入手性が良いのも特徴です。開発着手のMCUとしては最適です。

第4段階:プロトタイプ開発による製品MCU選択

評価ボードのMCUを基準にプロトタイプ開発を行い、製品化時のMCU選択をします。

プロトタイプMCUでFlash/RAM不足が懸念されならより大容量MCU、性能不足や周辺回路数不足が懸念されるならより高性能MCUを製品MCUとして選択するなどです。プロトタイプ開発により、製品MCU評価が高精度でできます。

以上の4段階で開発や製品に適すMCU選択ができます。プロトタイプ開発結果をどう活かすかで最適な製品MCU選択ができます。

Cypress PSoC 4 MCU選択具体例

弊社開発中のCapSenseテンプレートに用いるCypress PSoC 4 MCUを、上記の方法で選択した結果を示します。

CapSense は、PSoC 4000ファミリの他社差別化機能の1つです。そこで、このCapSenseを活かすプロトタイプ開発テンプレートを目指します。

CapSenseテンプレートに用いる3ファミリMCU:PSoC 4000S、PSoC 4100S、PSoC 4100PSの特徴を一覧で示します(縦長の図がウェブでは上手く表示できます)。

CapSenseテンプレート対象3MCUファミリ比較
CapSenseテンプレート対象3MCUファミリ比較

PSoC 4000S評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kit搭載MCUは、CY8C4045AZI-S413(48ピン)です(下図左)。

PSoC 4100S評価ボード:CY8CKIT-041-41XX PSoC 4100S CapSense Pioneer Kit搭載MCUは、CY8C4146AZI-S433(48ピン)です。トラ技5月号付録PSoC 4100S基板実装のCY8C4146LQI-S433(40ピン)も同じファミリですが、ピン数のみが違います(下図中央)。

PSoC 4100PS評価ボード:CY8CKIT-147 Prototyping Kit搭載MCUは、CY8C4145LQI-PS433(48ピン)です(下図右)。

Cypressの3ファミリ評価ボードは、どれも48ピンで揃っているので、比較しやすいでのすが、弊社は、予算の都合上、PSoC 4100Sファミリは、トラ技付録PSoC 4100S基板実装MCU(40ピン)を用います。

CapSenseテンプレート評価ボードMCU(PSoC 4000S評価ボード、トラ技5月付録PSoC 4100S基板、PSoC 4100PS評価ボード)
CapSenseテンプレート評価ボードMCU(PSoC 4000S評価ボード、トラ技5月付録PSoC 4100S基板、PSoC 4100PS評価ボード)

CapSenseで最重要なタッチUIハードウェアは、PSoC 4000S評価ボードのCapSense基板を、PSoC4100S/4100PS各基板と接続してテンプレート動作確認をします。PSoC 4000S → PSoC 4100SでFlash/RAM容量増加、PSoC 4000S → PSoC 4100PSでアナログフロントエンド強化などへ発展します。

※CapSenseテンプレート完成は、計画当初は2019Q3でした。しかし、PSoC 4100PS評価ボードは、トラ技懸賞品をあてにしており、運よく当選し11月Mに当選品が入手できました。2019Eを目途にテンプレート完成の予定です。

ARM Cortex-M4プロトタイプテンプレート構想

弊社は、ARM Cortex-M4コア使用のLPC5410x(NXP)、STM32G4(STM)、PSoC 6(Cypress)、MSP432(TI)各社のMCUテンプレート開発を目指しています。本稿は、各社共通のCortex-M4プロトタイプテンプレート開発指針を示します。

MCUプロトタイプ開発ステップ

MCUプロトタイプ開発と製品化へのステップ、支援ツール
MCUプロトタイプ開発と製品化へのステップ、支援ツール

プロトタイプからMCU製品開発へのステップが上図です。

  1. IDEと評価ボードを準備、利用MCUの開発環境構築
  2. サンプルプロジェクトを利用し、MCUや内蔵周辺回路の特徴・使い方を具体的に理解
  3. 製品処理に近いサンプルプロジェクトなどを活用し、評価ボード上でプロトタイプ開発
  4. プロトタイプへ保守点検などの製品化処理を追加、製品時ベアメタルかRTOS利用かを評価
  5. ステップ04評価結果でA:ベアメタル製品開発、または、B:RTOS製品開発へ発展

更に製品化へは様々なステップも必要ですが、プロトタイプ開発に絞るとこのステップになります。

Cortex-M4プロトタイプテンプレート

弊社Cortex-M4プロトタイプテンプレートは、ステップを効率的に上るための開発支援ツールです。

販売中の弊社テンプレートと同様、複数サンプルプロジェクトや開発した処理を、RTOSを使わずに時分割で起動するマルチタスク機能を備えています。
※時分割起動マルチタスク機能:ステップ03と04の課題は、複数サンプルプロジェクトや製品化に必要となる様々な処理を、どうやって1つに組込むか(?)ということです。RTOSを利用すれば解決します。しかし、RTOS利用のためだけに別途知識や理解が必要で、RTOS活用までの階段差が非常に高いという欠点があります。弊社テンプレートは、時分割で複数処理を起動し、初心者でも仕組みが理解できる低い階段差でマルチタスク機能を実現します。詳細は、コチラなどをご覧ください。

販売中の従来テンプレートとCortex-M4プロトタイプテンプレートの違いが、以下です。

  1. ステップ05以降の製品開発へも、ステップ01で構築したプロトタイプ環境をそのまま使える
  2. 下位Cortex-M0/M0+/M3ソフトウェアに対して、Cortex-M4プロトタイプ開発資産が流用できる

Cortex-M4の高性能を、プロトタイプ開発マージン(後述)に使うとこれらの違いが生じます。

Cortex-M4コアMCUの特徴

ARM Cortex-M4は、Cortex-M0/M0+/M3とバイナリ互換です。

簡単に言うと、Cortex-Mコア開発元ARM社が推進するCMSISに則って開発したCortex-M4ソースコードやライブラリは、再コンパイルすればCortex-M0/M0+/M3へ流用・活用ができます。
※CMSIS:Cortex Microcontroller Software Interface Standard関連投稿は、コチラの2章などを参照してください。

Cortex-Mxのバイナリ互換性(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-Mxのバイナリ互換性(出典:STM32L0(Cortex-M0+)トレーニング資料)

図から、Cortex-M4バイナリの全ては、下位Cortex-M0/M0+/M3に含まれてはいません。従って、効率的な処理やセキュリティ対策必須の高速演算を行うには、Cortex-M4が最適なのは言うまでもありません。

Cortex-M4を使ったMCUは、Cortex-M0/M0+/M3 MCUに比べ動作クロックが高速で内蔵Flash/RAM容量も大きいため、ベアメタル利用だけでなく、RTOS利用も可能です。

Cortex-M4がプロトタイプ開発に最適な理由:大マージン

Cortex-M4のMCUでプロトタイプ開発すれば、製品化時に必要となる処理や保守点検処理などの実装も「余裕」を持ってできます。
※製品出荷テストプログラム、自動販売機待機中のLEDデモンストレーション点灯などが製品化処理具体例です。

筆者は、このような製品化処理を、おおよそプロトタイプ処理と同程度と見積もります。つまり、製品のFlash/RAM量は、プロトタイプ時の2倍必要になります。

仮に「余裕」がありすぎオーバースペックの場合には、開発したCortex-M4プロトタイプ処理(=開発ソフトウェア資産)を、そのまま下位Cortex-M0/M0+/M3コアMCUへ流用が可能です。

一方、処理が複雑で多い場合には、RTOSで解決できるか否かの評価もCortex-M4プロトタイプなら可能です。更にIoT製品では、セキュリティ関連の(先が見えない)処理や計算量増加にも対応しなければなりません。

安全側評価なら敢えて下位Cortex-Mコアを選ばずに、Cortex-M4をそのまま製品にも使えば、処理増加にも耐えらます。

つまり、プロトタイプ開発には、初めから容量や性能の足かせが無く、製品化移行時の開発リスクも少ない高速高性能・大容量のCortex-M4 MCUが最適なのです。

製品時の処理能力やFlash/RAM量を、Cortex-M4プロトタイプで見積もった後に、製品化にステップアップすれば、適正な製品制御Cortex-Mコアを選択できます。開発ソフトウェア資産の流用性、過負荷耐力、RTOS製品開発評価ができる高性能を兼ね備えたのが、Cortex-M4を使ったプロトタイプ開発です。

問題は、価格です。

各社のCortex-M4評価ボード価格は、Cortex-M0/M0+/M3評価ボードと大差ありません。STM32MCUの評価ボード:Nucleo32シリーズは、Cortex-Mコアが異なっても同額です。プロトタイプ開発マージンを考慮すると、たとえ評価ボードに多少の価格差があったとしても十分納得がいきます。

Cortex-M4デバイス単体価格は、Cortex-M0/M0+/M3よりは高価です。しかし、製品原価全体に占めるCortex-M4デバイス価格比は低いでしょう。IoT製品では、今後増大するセキュリティ対策や計算量増加などを考慮すると、Cortex-M4デバイスを使うメリットは大きいと思います。

Cortex-M4プロトタイプテンプレート開発指針(NXP、STM、Cypress、TI共通)

Cortex-M4の特徴を活かし、下位Cortex-M0/M0+/M3間での開発ソフトウェア資産流用を考慮したCortex-M4プロトタイプテンプレート開発指針です。

  1. Cortex-M0/M0+/M3/M4各コアに用いるテンプレート本体の共通化
  2. プロトタイプ開発ソフトウェア資産流用性を高めるCMSISソフトウェアでの開発
  3. 製品化時ベアメタルかRTOS利用かを評価のため、Cortex-M4最高速動作のプロトタイプ開発

現在CMSISへの対応は、各社足並みが揃っているとは言えません。もしも完全にCMSISへ対応した場合は、異なるベンダ間でも開発アプリケーション互換が実現するからです。ARMコア市場が「攻めに強く、守りに弱い」ゆえんです。そういう状況でも、各社ともCMSISへのソフトウェア対応を進行中です。
※Cortex-M33コアには、CMSISに反して、ベンダ独自のカスタム命令追加の動きも見られます。

本稿で示したCortex-M4プロトタイプテンプレートと異なり、弊社販売中のCortex-M0/M0+/M3テンプレートは、テンプレート利用コアで最適解を与えます。そのため、RTOS利用時や、製品化処理、セキュリティ対策などの処理が増えた時には、元々のコア処理性能や内蔵Flash/RAMに余裕が少ないため、適用デバイスでの製品化に対して、開発を続けにくい状況が発生することもありえます。

この点、Cortex-M4プロトタイプテンプレートなら、プロトタイプで構築した同じ開発環境で、RTOSも含めた製品開発へも余裕を持って対応できます。同時に、プロトタイプ開発資産の流用や活用により、Cortex-M0/M0+/M3ソフトウェア生産性も高めることができます(一石二鳥)。

ATM Cortex-M4テンプレートと開発資産流用性
ATM Cortex-M4テンプレートと開発資産流用性

弊社Cortex-M4プロトタイプテンプレートの発売時期、RTOSへの具体的対応方法などは、未定です。本ブログで各社毎の開発状況をお知らせする予定です。

あとがき:初心者や個人利用は、Cortex-M4テンプレートが最適

ソフトウェア開発初心者にCortex-M4プロトタイプテンプレート利用は、難しい(=階段を上るのが困難)と考える方がいるかもしれません。筆者は、全く逆、むしろ初心者、個人利用に最適だと思います。

理由は、Cortex-M0/M0+/M3/M4と上位になるほどコア設計が新しく、処理性能も上がるからです。初心者が、あまり上手くないコード記述をしても、コア性能が高いため問題なく処理できてしまいます。詳細は、ARM Communityの“An overview of the ARM Cortex-M processor family and comparison”などが参考になります。

ごく簡単に言うと、自動車エンジンが、Cortex-Mコアに相当すると考えてください。

小排気量なCortex-M0より、大排気量のCortex-M4の方が、楽に運転でき、しかも、運転に最低限必要なハンドルやアクセル、ブレーキ操作は全く同じです。車(=評価ボード)の価格が同じなら、殆どの方が、余裕のある大排気量のCortex-M4を選択するでしょう。

しかも、Cortex-M4評価ボード操作の技(=開発ソフトウェア資産)は、Cortex-M0/M0+/M3へも流用できます。経済的に厳しい個人利用のプロトタイプ開発環境としては、流用範囲の広いCortex-M4 MCUテンプレートが最適と言えます。

弊社Cortex-M4プロトタイプテンプレートは、つまずき易い階段を、楽に効率的に上るための開発支援ツールです。ご期待ください。

ルネサスARM Cortex-Mコアマイコン:RAファミリ発表

2019年10月8日、ルネサスエレクトロニクス(以下ルネサス)が、ARM Cortex-M4/M23搭載のRAファミリを発表しました。ARMコアMCU市場へ、遅ればせながら(!?)参入したRAファミリの特徴、競合他社と比較評価しました。

Runesas RAファミリ(出典:ルネサス)
Runesas RAファミリに加筆(出典:ルネサス)

RAファミリの特徴

「攻めやすく、守りにくい」、これがARMコアMCU市場だと思います。先行する競合他社は、NXP、STM、Cypress、TIなどです。

後発ルネサスが選択したARMコアは、Cortex-Mコア最高性能のCortex-M4と、低消費電力+セキュリティ重視のCortex-M23/M33(M4はRA8でマルチコア化、M33予定)です。

同じARMコアの先行他社へ攻め込むには、他社比魅力的な内蔵周辺回路が必要です。上図の静電容量タッチセンサ、アナログなどがこれに相当するはずです。Cypress特許の静電容量タッチセンサ:CapSenseとの性能比較が楽しみです。
※CapSenseの特徴は、コチラの投稿などを参照してください。

RAファミリのターゲット市場は、産業機器、ビルオートメーション、セキュリティ、メータ、家電などで、車載を除く次世代IoTエッジデバイスです。

RAファミリの市場(出典:RAファミリパンフレット)
RAファミリの市場(出典:RAファミリパンフレット)

セキュリティニーズが高いIoTエッジMCUでは、Cortex-M3クラスでも性能不足が懸念されます。シングルコアなら最低でもCortex-M4、セキュリティ強化Cortex-M23/33のRAファミリのコア選択は、理解できます。

RAファミリとRunesas Synergyの違い

ルネサスは、これまでRunesas Synergy™としてARMコアMCUを販売してきました。このRunesas SynergyとRAファミリの違いが、10月8日MONOistの“ルネサスがArmマイコンで本気出す、「RAファミリ」を発売”記事に説明されています。

筆者は、Runesas Synergy™は、ルネサスがアプリケーション開発を手伝う形式で、個人レベルでの開発には金額的に手を出しにくいMCU、一方、RAファミリは、競合他社と同様CMSIS:Cortex Microcontroller Software Interface Standardに則った形式でユーザがアプリケーション開発できるMCUと理解しています。
※CMSIS:Cortex Microcontroller Software Interface Standardは、コチラの2章などを参照してください。

これで弊社も、競合他社と同じ土俵でルネサスARMコアMCUを使える可能性がでてきました。

RAファミリの開発環境

RAファミリの開発環境(出典:RAファミリパンフレット)
RAファミリの開発環境(出典:RAファミリパンフレット)

RAファミリパンフレットによると、IDEは、e2 studio(CS+はありません)、エミュレータは、Segger J-Linkまたは、E2エミュレータ Liteです。

例えば、Cortex-M4/48MHz/Flash:256KB/RAM:32KBの評価ボード:EK-RA4M1の概要が下記です。

EK-RA4M1 MCU 評価キット
EK-RA4M1 MCU 評価キット

Mouserで¥4,539で購入可能です。他社同様オンボードエミュレータですが、Arduinoコネクタを持っていません。価格も、後発なのに他社比、高い気がします😥。

RAファミリと競合他社比較

Cortex-Mコア、内蔵周辺回路、開発環境、評価ボード、日本語技術資料の5点から、ルネサスRAファミリを、競合他社ARMコアMCUと3段階(A/B/C)評価しました。

Cortex-Mコア=A、内蔵周辺回路=A、開発環境=B、評価ボード=C、日本語技術資料=C → 総合評価=B

総合評価Bは、普通レベルということです。個別評価結果が下記です。

Cortex-M4とM23/33コア選択や、タッチセンサ等の内蔵周辺回路は、後発なので当然ルネサスの市場調査結果によるものと思われ、A評価としました。IoTエッジMCUでは、これらコアや周辺回路が必須だと筆者も思います。
※コアと周辺回路は、現在、弊社注力中のCortex-M4コアテンプレート開発とCypress)PSoC 4 CapSenseテンプレート(開発中)に傾向が一致しています。

開発環境は、多機能すぎるe2 studioなのでBです(A評価は、NXP)MCUXpressoTI)CCS Cloud)。

評価ボードは、Arduinoコネクタなしで高価なためCです(A評価は、NXP)LPCXpressoやSTM)Nucleo32)。

日本企業のルネサスですが、RAファミリ動画などは英語です。重要技術資料も英語が多く、日本語資料はC評価です(A評価は、STM)。
※ソフトウェア開発者が、日本語資料にこだわること自体、時代錯誤、時代遅れかもしれません。しかし、イタリア+フランス企業のSTM日本語翻訳資料は、内容、和訳ともに優秀です。ルネサス技術資料は、これらと比べると低評価と言わざるを得ません。

総合評価Bですので、評価ボード:EK-RA4M1入手は、ペンディングとします。ルネサスRAマイコンを、本ブログへ追加した場合、ブログカテゴリと目標とする生産物は、下図になります。

また、2番目に示したターゲット市場図から、従来MCU とIoTエッジMCUとの境界が、Cortex-M3コアの可能性が見えてきました。この境界も追加しました。

ブログカテゴリと生産物(従来MCUとIoT MCU境界追加)
ブログカテゴリと生産物(従来MCUとIoT MCU境界追加)

筆者は、従来MCUは、IoTエッジのさらに外側、つまりIoT MCUのフロントエンドで機能し、Cortex-M4ソフトウェアの一部流用や活用により生産性が高く、しかも、エッジのカスタムニーズへも柔軟に対応するMCUへ発展すると思います。ARM Cortex-Mxコア間は、ソフトウェア流用が可能です(次回、詳細説明予定)。

ルネサスは、インターシルやIDT買収でMCUアナログフロントエンドを強化したはずです。しかし、新発売RAファミリに、これら買収技術は見当たらず、期待のSynergy効果も具体的には不明です(内蔵周辺回路の静電容量タッチセンサ、アナログに見えると期待)。

残念ながら現時点では、筆者には、RAファミリが魅力的なARMコアIoTエッジMCUとは思えません。今後に期待します。

汎用MCUシェア20%超、第2位はSTM32MCU

シェア2位に躍り出たSTの汎用マイコン事業戦略”が、EE Times Japanに掲載されました。本稿は、この記事を要約し、記事記載のMCU 4ニーズの1つ、セキュリティ強化マイコン:STM32H7の暗号鍵利用によるソフトウェア更新方法(ST公式ブログ10月8日投稿)を示します。

STM32MCUは、汎用MCU世界市場シェア20%超の第2位へ

2019年9月、東京都内でSTマイクロエレクトロニクス(以下STM)による記者会見が開かれ、そのレポートがEE Times Japan記事内容です。ARM Cortex-Mコア採用のSTM32MCUが、2018年には汎用MCU世界市場シェア20%を超え第2位になった要因分析、今後のSTM汎用MCU事業方針が会見内容です。

汎用STM32MCUの世界シェア推移(出典:STM)
汎用STM32MCUの世界シェア推移(出典:STM)

車載用を除くMCUが汎用MCUです。本ブログも、この汎用MCUを対象としており、上図推移は重要なデータです。

以下、マイクロコントローラ&デジタルICグループマイクロコントローラ製品事業部グローバル・マーケティング・ディレクタ)Daniel Colonna氏の記者会見談話を中心に記事要約を示します。

STM32MCUシェア続伸要因

STM競合他社は買収や統合で成長しているが、STMは独自でシェア2位を実現。要因は、民生機器だけに集中せず、産業機器などのインダストリアル分野(=マスマーケット)に主眼を置き製品開発を行ってきたこと。マスマーケットターゲット事業方針は今後も変えず、シェア30%を目指す。

インダストリアル分野の4MCUニーズとSTM対応

演算性能の強化(STM32MP1/STM32H7)、より高度なAI実現(STM32CubeMXのAI機能拡張パッケージ)、多様な接続技術への対応(STM32WB)、セキュリティ強化(STM32Trust)の4点がインダストリアル分野MCUのニーズとそのSTMの対応(カッコ内)。

インダストリアル分野汎用MCUの4ニーズ(出典:STM)
インダストリアル分野汎用MCUの4ニーズ(出典:STM)

より広範囲なマスマーケット獲得策

モノクロからカラーLEDへ置換え(TouchGFX)、8ビットなどから32ビットMCUへ置換え(STM32G0シリーズ)で、より広範囲マスマーケットでのSTM32MCU浸透を図る。

以上が記者会見記事の要約です。

汎用MCU第2位となったSTM32MCU評価ボードは、入手性が良く安価です。コードサイズ制限なしの無償開発環境(STM32CubeIDE /SW4STM32/STM32CubeMX)も使い勝手に優れています。また、厳選された日本語技術資料も活用でき、初級/中級レベルのMCU開発者に最適だと筆者も思います。

この特徴を持つSTM32MCUに対して、弊社はSTM32G0x専用テンプレートSTM32Fx汎用テンプレートを販売中です。今後は、STM32G4テンプレートも開発を予定しています。

これまでNon ARM汎用MCU1位であったRunesasも、ARMコア他社対応か(?)ついに2019年10月8日、Cortex-MコアMCU販売を開始しました。これについては、別途投稿します。

セキュリティ強化STM32H7のソフトウェア更新

インダストリアル分野4MCUニーズのうち、演算性能とセキュリティ強化を満たすのが、STM32H7(Cortex-M7/480MHz、Cortex-M4/240MHzのデュアルコア)です。筆者個人は、MCUというよりむしろMPUに属す気がします。STMも、STM32MCU(下記右)に対して、STM32マイクロプロセッサ(下記左)と区別しています。但し、名称は違っても、そこに用いる技術は同一のはずです。

STM32MCUとSTM32マイクロプロセッサ(出典:STM)
STM32MCUとSTM32マイクロプロセッサ(出典:STM)

丁度最初に示した10月8日のSTM公式ブログに、セキュリティ強化STM32H7のファームウェア書換え手順図を見つけました。関連投稿:総務省:2020年4月以降IoT機器アップデート機能義務化予定の2章で示した3種サイバー攻撃へのウイルス感染対策です。

STM32H7ソフトウェア更新時のSFI、HSM(出典:STM)
STM32H7ソフトウェア更新時のSFI、HSM(出典:STM)

ハードウェア暗号化エンジンを持つSTM32H7は、図右上のSFI:Secure Firmware Installで暗号化、STM32G0やSTM32G4等は、図右下のSMI:Secure Module Installで暗号化し、更新ソフトウェアを準備します。どちらも、セキュリティ認証情報を含むHSM:ST Hardware Secure Module smart cardで鍵を受渡し復号化、ソフトウェア書換えを行います。

我々が開発するMCUソフトウェアの更新頻度は、PCに比べれば低いはずです。しかし、その頻度は、ウイルスの数に比例しますので、サイバー攻撃が増えればその度にこの書換えで対応することを考えると憂鬱になります。
※書換え失敗やワクチン投入による通常処理への配慮も必要で、Windows 10のようにユーザ任せの無責任な対応はMCUソフトウェアでは論外なため、開発者負担は増すばかりです😫。

TI)MSP432オープンプラットフォーム開発環境:Energia IDE

Texas Instruments)MSP432(Cortex-M4F/48MHz)評価ボード:MSP-EXP432P401R LaunchPadを使ってオープンプラットフォーム開発環境:Energia IDEの使い方を示します。Energia IDEは、簡単に言うとマイコン版Arduino IDE。Windows/Mac OS/UnixのマルチOS動作で、TIマイコンMSP430やC32xxなど、7種MCUのLaunchPad評価ボードをサポート中です。

IoT MCUの高度なセキュリティ実装を考えると、MCU開発者でもArduino IDEの使い方を知っておくのは有用だと前回投稿しました。
MSP-EXP432P401R LaunchPadを例にEnergia IDEの使い方を解説します。

Energia IDE

Energia IDEの使い方は、Arduino IDEと同じです。Single Board Computer開発で用いられるArduino IDEと同じ方法でTIマイコンのソフトウェア開発ができます。

Energia IDEインストール手順が以下です(と言っても、解凍だけで動作します)。

  1. Energia Downloadサイトから対応OSバージョンをダウンロードし解凍。Windows版では、解凍先フォルダがEnergia IDEの動作環境ですので、安心して試せます👍。
  2. 解凍先フォルダのenergia.exeクリックでEnergia IDEが起動します。デフォルトボードは、右下表示のMSP-EXP430F5529LPです。

    Energia IDE初期画面
    Energia IDE初期画面
  3. ツール>ボードマネージャでEnergia MSP432 EMT RED boards by Energiaをインストールします。
    ネットワーク環境に依存しますが、この手順2完了に少し時間がかかります。

    ボードマネジャ:Energia MSP432 EMT RED boards by Egergia追加インストール
    ボードマネジャ:Energia MSP432 EMT RED boards by Egergia追加インストール

    ※REDは、基板の版数:Rev 2.0 を示します。MSP-EXP432P401R LaunchPadには、BLACK:Rev 1.0もありますので注意してください。詳しくは、User’s Guide:SLAU597Fを参照してください。

  4. ボードマネージャでRED LaunchPad w/ msp432p401r EMT(48MHz)を選択。次に、評価ボードをPCに接続し、ツール>使用シリアルポートを選択(2ポートあってもどちらでも可)。書込装置はmspdebugを選択。
    ボードマネージャ:RED LaunchPad MSP432P401R選択
    ボードマネージャ:RED LaunchPad MSP432P401R選択

    以上で、MSP-EXP432P401R LaunchPad のEnergia IDE環境セットアップが完了です。

MSP-EXP432P401R LaunchPadのスケッチ動作

  1. スケッチ例>内蔵のスケッチ例から、例えば、Basics>Fadeを選び、マイコンボードに書き込む:➡クリックでコンパイル実行と評価ボードへの書込みが完了し、動作します。スケッチ例とは、サンプルアプリケーションのことです。他にも様々なスケッチ例があり、➡クリックのみで簡単にMSP432P401R評価ボードスケッチ例の動作確認ができます。
    ※ボード書き込み時にエラーが発生する場合は、サイトのGuideからEnergia Driver Packageをダウンロードし、管理者権限でインストールすると解決します。

    スケッチ例:Fadeの実行
    スケッチ例:Fadeの実行

    スケッチ例のソースコードは、上図のように可読性が高く、初期設定:setup()と無限ループ:loop()の2つから構成されています。

現状は、セキュリティ関連のスケッチ例はありません。しかし、セキュリティは、全てのIoT MCUに必須で共通機能ですので、そのうち提供される可能性はあると思います。色々な周辺回路や機能をすぐに動作確認できるスケッチ例は、プロトタイプ開発に有効です。

関連投稿:Arduino IDEスケッチ例のソースコード

Energia IDEプログラミング

サイトのReferenceに、functions/variables/structureの3部構成のAPI説明書があります。各APIをクリックすると、初心者でも解り易い解説とEnergia IDEで試せるサンプルコードがあります。コード中のピン番号は、Pin Mapsで評価ボード毎に示されています。

このプログラミングに関する資料の解り易さが、Energia IDE(=Arduino IDE)の特徴です。デバイスで出来ることを直感的にすぐにプログラミングする情報としては、これら2サイト情報だけで十分です。

Cortex-M4カテゴリにTI)MSP432採用

本ブログのCortex-M4カテゴリへ、MCUとしてTexas Instruments)MSP432(Cortex-M4F/48MHz)を追加します。開発環境は、本稿のEnergia IDEとTI純正無償Code Composer Studio(CCS)、3つ目にCCS cloudを使う予定です。CCS  cloudは、次回解説します。

本ブログで、シェア上位5社MCUベンダとその主要MCUを全てカバーできたことになります(関連投稿:ARM Cortex-M4ベンダと評価ボードの2章)。

CMSISを使ってCortex-M4 MCUで開発したソフトウェアは、Cortex-M0/M0+/M3への流用も可能です(関連投稿:NXP MCUXpresso SDKから見るARMコアMCU開発動向)。
プロトタイプ開発は、高性能で開発リクスが少なく、様々なセキュリティ機能を試せるCortex-M4で行い、製品化時にコストメリットを活かすCortex-M0/M0+/M3を使うなどの方法や検討もありえるでしょう。

他のCortex-M4 MCUとしては、NXP)LPC54114(Cortex-M4/M0+)、STM)STM32G473RE(Cortex-M4)、Cypress)PSoC63(Cortex-M4/M0+)などをCortex-M4カテゴリへ追加予定です。

Sony)SPRESENSEオープンプラットフォーム開発環境

2019年9月、Sony)IoT向けMPU:SPRESENSE開発環境は、オープンプラットフォーム:Arduino IDEとSDK:Software Development Kitの2段構えにしたという記事が掲載されました。

オープンプラットフォームArduino IDEとSDKの2段構え開発環境(出典:記事)
オープンプラットフォームArduino IDEとSDKの2段構え開発環境(出典:記事)

本稿は、このオープンプラットフォーム開発環境の目的について、記事内に判り易い説明があったので紹介します。

MPU:Sony)SPRESENSE

Sony版ArduinoボードのSPRESENSEは、ARM Cortex-M4F/156MHzを6個(!)搭載したマルチコアMPUです。Raspberry Pi 4でお馴染みのMPU:Micro Processor UnitやArduinoなどのSingle Board Computerは、オープンプラットフォームと呼ばれ、仕様公開が特徴です。

Cortex-M4Fコア6個から構成されるSPRESENSE(出典:Sonyサイト)
Cortex-M4Fコア6個から構成されるSPRESENSE(出典:Sonyサイト)

最近になってCortex-M4とCortex-M0+のディアルコアが出始めた新世代MCU開発にも参考になる開発環境があるかも(?)と思い記事を読みました。

全コアが同等機能を持つシステムをSMP:Symmetric Multi-Processing、一方、一部コアの機能が異なるのはASMP:Asymmetric Multi-Processingと呼びます。SPRESENSEは、1個のメインコアが全体を管理し、残り5個のサブコアへのメッセージ送信でタスク指示するASMPです。ASMPは、組込みシステムへの最適化などに向いているそうです(関連記事:ASMPのアーキテクチャを学ぶ)。

実装コア数は違いますが、新世代ディアル/マルチコアMCUもアーキテクチャはASMPになると思います。新世代MCU:Micro Controller Unitとアーキテクチャは同じ、MCUも仕様公開されていますので、SPRESENSEと新世代MCUの環境は、同じ(近い)と言えます。

MCUとMPUのデバイス差は、弊社固定ページにもありますのでご覧ください。

オープンプラットフォーム開発環境の目的

記事では、“ArduinoやRaspberry Piなどの「オープンプラットフォームユーザ」は、このデバイスを使ったら、どんな面白い商品を作れるかというチャレンジからベンダー製品を使い始める”とあります。このチャレンジ判断に適しているのが、Arduino IDE開発環境です。

「MCUユーザ」は、“ベンダー製品を手に取るとき、既にユースケースが決まっていて、MCUラインナップの中でユースケースにフィットするメモリサイズや処理性能デバイスを選ぶ”のだそうです。コスト最重視の従来MCU製品では、当然の選択方法です。

つまり、誰でも簡単に「デバイスを使って得られるサービスや機能にフォーカス」したのがArduino IDEで、どのように作ったか、その性能などを明らかにする一般的なIDEとは、その目的が異なるのです。

どうしても処理ソースコードや使用メモリ量などの(HowやWhere、Why)に目が行く筆者とは、オープンプラットフォームユーザの視点(What)が違うことが記事から理解できました。

例えば、マルチコアのサンプルアプリケーション実行は、Arduino IDEを使えば、開発環境セットアップに25分、プログラム実行に5分、合わせて作業時間30分で完成するそうです(関連記事より)。

デバイスで出来ることを、「すぐに試し判る」のがオープンプラットフォーム:Arduino IDEの目的です。

IoT MCUセキュリティ実装判断にArduino IDE環境

記事を読んだ後、IoT MCUのセキュリティ実装に関して、Arduino IDE(的)環境が適すと思いました。

セキュリティ機能は、セキュリティ専門家が開発したソースコード(ライブラリ)に対して、実装担当のMCU開発者が工夫をこらす余地はありません(頑張ってコード改良や開発しても、時間の無駄になる可能性大です)。

要は、目的のセキュリティ機能が、使用予定のIoT MCUへ実装できるか、将来追加の可能性があるセキュリティ実装に対して余力/余裕はあるか、が判れば十分です。

これを判断するには、Arduino IDEと同じような開発環境が適すと思います。IoT MCUへのセキュリティ実装や機能更新は、必須になりつつあります(前回投稿参照)。苦労して開発したIoT MCUであっても、セキュリティ機能が実装できなければ、全く役立たなくなるのです。

従って、多くのセキュリティライブラリから目的の機能を選び、簡単にIoT MCUへ実装し、動作確認できるArduino IDE(的)開発環境にも、これからのMCU開発者は慣れていることが必要だと思います。

TI)MSP432P401R評価ボード:MSP-EXP432P401R LaunchPad

Texas Instrument)MCU:MSP432P401R(ARM Cortex-M4F、48MHz、浮動小数点ユニット、DSPアクセラレーション、256KB/Flash、64KB/RAM)搭載の評価ボード:MSP-EXP432P401R LaunchPad™は、TI純正無償IDE:CCSコードサイズ制限のため、Cortex-M4カテゴリデバイスとして採用失敗したと投稿しました。

しかし、MSP-EXP432P401R LaunchPadの開発環境には、Arduino IDEによく似たEnergia IDEもあります。このEnergia IDEの詳細や、MSP-EXP432P401R LaunchPad™での使い方が分かりましたら投稿します。

Energia IDE(出典:Energiaサイト)
Energia IDE(出典:Energiaサイト)

P.S.:2019/3Q発売予定のPSoC 4000S/4100S専用タッチUIテンプレート開発も遅れが発生しており、上述MSP432P401RのCortex-M4カテゴリ採用失敗等々…トラブル続きです。猛暑でPC(と筆者)の調子が悪いのが、諸悪の根源だと思います😭。
本稿のEnergia IDEが、MSP432P401R採用失敗の挽回策になれば嬉しいのですが、暫くEnergia IDEを使ってから判断したいと考えています。

総務省:2020年4月以降IoT機器アップデート機能義務化予定

総務省は、電気通信事業法を改正し、2020年4月以降「IoT機器アップデート機能義務化を予定」しているそうです(日経ビジネス2019年9月6日有料会員限定記事、“モノのインターネットに死角あり 狙われるIoT機器”より)。

本稿は、普通のMCU開発者が知るべき最低限のIoT MCUセキュリティ対策をまとめてみたいと思います。

IoT MCUセキュリティ

記事には、“歴史の浅いIoT機器は、開発者とユーザ双方にセキュリティ意識が欠如している“、”開発者は、便利で魅力的な機能搭載を優先し、セキュリティ配慮は2の次”とあります。確かにそうゆう見方はあります。

しかし、サイバー攻撃やセキュリティ関連ニュースが溢れる昨今、開発者/ユーザともに無関心ではないハズです。むしろ、現状のMCU能力では、セキィリティ強化が無理な側面を十分知った上で妥協している(目を瞑っている)のが事実だと思います。

セキィリティ関連記事は、その性質上、英語の省略用語を多用し、漏れがない細かい説明が多いので、全体を把握したい普通のMCU開発者には、解りにくいと筆者は考えています。

そこで、全体把握ができるMCUセキュリティのまとめ作成にトライしたのが次章です。

サイバー攻撃対策

MCUセキュリティ機能は、サイバー攻撃を防ぐための対策です。サイバー攻撃には、以下3種類があります。

  1. ウイルス感染
  2. 通信傍受
  3. 通信データ改ざん

2)通信傍受対策には、暗号化が効果的です。暗号化処理には、データをやり取りする相手との間に鍵が必要で、共通鍵と公開鍵の2方式があります。共通鍵は、処理負荷が公開鍵に比べ小さく、公開鍵は、鍵を公開する分、処理負荷が大きくなる特徴があります。

3)通信データ改ざん検出には、ハッシュ関数(=要約関数)を使います。ハッシュ関数に送信データを与えて得た値をハッシュ(=要約値)と言います。送信データにハッシュを追加し、受信側でハッシュ再計算、送受ハッシュ一致時がデータ改ざん無しと判定します。

2)と3)は、データ通信が発生するIoT MCUセキィリティ機能です。暗号化、ハッシュ関数は、新サイバー攻撃に対し、次々に新しい防御方式が提案される鉾と盾の関係です。MCU外付けセキュリティデバイス(例えばNXPのEdgeLock SE050など)によるハードウエア策もあります。

PCやスマホのようなウイルス対策ソフト導入が困難なMCUでは、1)のウイルス感染対策に、MCUソフトウェアのアップデートで対応します。総務省は、IoT機器にアップデート機能とID、パスワード変更を促す機能を義務付ける予定です。
※開発者自身で溢れるウイルス状況を常時監視し、ソフトウェア対応するかは不明です。

従来のMCUソフトウェアアップデートは、UART経由やIDE接続で行ってきました。しかし、ネットワーク経由(OTA)やアクセス保護のしっかりしたソフトウェア書換えなどを、1)のアップデートは想定しています。

以上、ごく簡単ですが、MCUセキュリティ対策をまとめました。

総務省の「IoT機器アップデート機能義務化」が、具体的にどのようになるかは不明です。ただ、無線機器の技適規制などを考えると、技術ハードルは、かなりの高さになることが予想できます。

サイバー攻撃対策のIoT MCUセキュリティ
サイバー攻撃対策のIoT MCUセキュリティ

ディアルコアや超高性能汎用MCUの背景

簡単にまとめたMCUセキィリティ対策を、IoT機器へ実装するのは、簡単ではありません。

実現アプローチとしては2つあります。

1つ目は、ディアルコアMCU(例えばNXPのLPC54114、関連投稿:ARM Cortex-M4とM0+アプリケーションコード互換)や、超高性能な汎用MCU(例えばSTMのSTM32G4、関連投稿:STM32G0x専用テンプレート発売1章)が各ベンダから発売中です。

これら新世代MCU発売の背景は、従来MCU処理に加え、法制化の可能性もあるセキュリティ処理実装には、MCU処理能力向上が必須なためです。

ワールドワイドにIoT機器は繋がります。日本国内に限った話ではなく、地球規模のIoT MCUセキュリティ実装に対し、ディアルコアや超高性能汎用MCUなどの新世代MCUでIoT機器を実現するアプローチです。

2つ目が、セキュリティ機能が実装し易いMPU(例えばRaspberry Pi 4など)と、各種センサー処理が得意なMCU(旧世代MCUでも可能)のハイブリッド構成でIoT機器を実現するアプローチです。

MCUXpresso IDE v11をLPC845 Breakout boardで試す

まとめ

NXPのMCUXpresso IDE v11.0.0 [Build 2516] [2019-06-05]を使い、LPC845の評価ボードLPC845 Breakout boardの動作を確認し、サンプルプロジェクト赤LED点滅を緑LEDへ簡単に変更できる、SDK:Software Development Kitメリットを示しました。

LPCOpenライブラリなどを使った旧IDEに比べ、SDKを使うMCUXpresso IDE v11は、より早く簡単にソフトウェア開発が可能です。また、IDE更新とSDK更新が別々なため、常に最新ドライバ、BSP:Board Support Packageでの開発ができます。これもSDKメリットの1つです。

SDKは、ソフトウェア開発速度を上げる専用ライブラリ集です。MCUXpresso IDE v11のSDKを習得し、効率的なソフトウェア開発に慣れる必要があります。
これには、実際に評価ボード専用SDKを作成し、サンプルプロジェクトへ変更/修正を加え、SDKメリットを実感するのが早道です。本稿で用いたLPC845 Breakout boardは、SDK習得に好適です。

LPC8xxをアップグレートしたLPC845(64KB Flash、16KB RAM)評価ボード:LPC845 Breakout boardは、タッチパッド+デバッガ付きで低価格(¥697)、少サイズ(65x18mm)です。このサイズならそのまま装置へ実装も容易です。現場での短時間制御系アップデートや修理交換などに応用できます。

LPC845 Breakout board

LPC845 Breakout board
LPC845 Breakout board(出典:LPC84X MCU TECHNICAL OVERVIEWへ加筆)

LPC8xxシリーズは、アップグレートしたLPC84xとコストダウンしたLPC80xの2方向へ発展しました(関連投稿:NFCを使うLPC8N04のOTA)。LPC845評価ボード:LPC845 Breakout board (Cortex-M0+/30MHz)を入手しましたので、最新のLPCXpresso IDE v11を使って動作確認します。

LPCXpresso IDE v11.0.0 [2019-06-05]

最新LPCXpresso IDEは、v11.0.0 [2019-06-05]です。旧IDEからSDK:Software Develipment Kit追加、Pin設定方法が変わりました。既に旧IDEを使い慣れた方は、SDK活用の新LPCXpresso IDE v11に少し驚きを感じると思います。

LPCXpresso IDE v11ダウンロードとインストール

LPCXpresso IDE v11のダウンロードとインストールは、普通のPCアプリケーションと同じです。旧IDEではインストール後、アクティベーション手順が必要でしたが、v11は不要です。

また、デフォルトではプログラム/workspace共に専用フォルダ:MCUXpressoIDE_11.0.0_2516へ展開されます。つまり、旧IDEと共存します。ストレージ使用量は多くなりますが、共存するので安心して新旧IDEを試すことができます。

インストール後、Help>Check for Updatesを実行しIDEの更新有無を確認します。

また、最初のMCUXpresso IDE v11起動時にセキュリティソフトが警告を出すことがあります。お使いのセキュリティソフトに応じて対応してください(筆者Windows 10 Pro 1903のAvastは警告を出しましたので、例外追加で対応しました)。

LPCXprsso IDE v11インストール起動画面
LPCXprsso IDE v11インストール後、最初の起動画面

SDK Builder

SDKは、周辺回路ドライバ、サンプルプロジェクト、評価ボードサポートパッケージ:BSPなどを含む開発支援ツールです(SDKユーザガイドはコチラ)。インストールしたMCUXpresso IDEとは別に、ネット上のSDK BuilderでLPC845 Breakout board専用SDKを作成します(要ログイン)。

SDK BuilderのSelect Development Boardをクリックし、LPC845BREKOUTを選択します。後は、Build MCUXpresso SDKをクリックすると、作成したSDKの圧縮ファイル:SDK_2.6.0_LPC845BREAKOUT.zipがダウンロードされます(2.6.0は版数)。
※評価ボードによっては、Amazon-FreeRTOS、Azure IoTなどのミドルウェアもSDKへ追加可能です。

SDK設定

ダウンロードしたSDK圧縮ファイルを、LPCXpresso IDEのInstalled SDKsビューへドラッグ&ドロップするだけでSDK設定は完了です。

LPC845 Breakout boardの赤LED点滅動作

SDKにはLPC845 Breakout boardの赤LED点滅させる、いわゆるLチカサンプルプロジェクトがあります。このLチカソフトで評価ボードの動作確認をします。

IDEのQuickstart Panelビュー、Import SDK example(s)…をクリックします。Lpc845breakoutを選択後Nextをクリックします。Examplesのdemo_appsを開くとled_blinkyが現れます。これがLチカサンプルです。

Led_blinkyに☑を入れFinishをクリックすると、workspace内にlpc845breakouty_led_blinkyプロジェクトが展開されます。

LPC845 Breakout boardのLED点滅サンプルプロジェクトのインポート
LPC845 Breakout boardのLED点滅サンプルプロジェクトのインポート

何も変更せずに、Quickstart PanelビューのBuildをクリックするとコンパイルが成功します。評価ボードをPCと接続しDebugのクリックでCMSIS-DAPプローブを自動認識し、デバッグモード画面へ変わります。

後は実行などで赤LEDが1秒毎に点滅する動作が確認できます。

SDKサンプルプロジェクトそのものの動作確認は、以上のように簡単です。SDKのメリットは、プロジェクト変更や機能追加が簡単にできることです。例を次に示します。

LPC845 Breakout boardの赤→緑LED点滅の変更

赤LEDへの制御を緑LEDへ変更するには、IDEをDevelop画面からPin画面へ切替えます。切替は、Open Pinsクリック、またはIDE右上のデバイスアイコンのクリックどちらでもOKです。

LED_LED点滅からGREEN_LED点滅変更のPin画面
LED_LED点滅からGREEN_LED点滅変更のPin画面

Pin画面は、プロジェクト使用中のピン名、周辺回路などがハイライト表示されます。

lpc845breakouty_led_blinkyプロジェクトの場合は、PIO1_2とGPIOで、IdentifierにLED_REDとあります。Identifireは、ソースコード中で使えるマクロです。LED_GREENやLED_BLUEが既にあるのも解ります。このように評価ボード実装済みのハードウエアが、あらかじめSDKで定義済みです。

赤LED→緑LED変更は、Pin11のLED_GREENに☑を入れ、表示されるPIO1_0選択肢からデフォルトのGPIO,PIO_1_0を選びます。次にUpdate CodeをクリックすればPin画面の変更がソースコードへ反映されます。

LED_RED点滅からLED_GREEN点滅へのピン変更
LED_RED点滅からLED_GREEN点滅へのピン変更

ソースコード表示のDevelop画面へ切替えるには、右上のDevelopアイコンをクリックし、L16をコメントアウト、代わりにL17の追記で赤→緑LED点滅への変更完了です。ビルドして緑LED点滅動作を確認してください。

LED_RED点滅からLED_GREEN点滅へのソースコード変更
LED_RED点滅からLED_GREEN点滅へのソースコード変更

このようにサンプルプロジェクトの変更は、SDKに評価ボード実装ハードウエアが定義済みなので、ボード回路図を確認せずにすぐにできます(回路図を確認すれば万全ですが…😅)。

さて、緑LED点滅動作が確認できた後にソースコードへ下記3か所の変更を加えてください。

BSPを使った赤LEDの点滅
BSPを使った赤LEDの点滅

これは、board.hで定義済みのBSPを使った赤LED点滅へのソースコード変更です。追記したLED_RED_INIT(0)とLED_RED_TOGGLE()は、board.hに記述があります。L80:GPIO_PortToggle()よりもL81:LED_RED_TOGGLE()の方が、ソースコード可読性が高いことが解ります。

BSPは、評価ボードで使用頻度が高い関数やマクロを定義します。BSP活用でソースコード可読性が高まりケアレスミスも減ります。BSPは、SDK作成時に生成されます。

LPC845 Breakout boardのSDK活用例を示しました。SDKメリットも実感できたと思います。

LPCOpenライブラリを使ったLPC8xxテンプレートも、新しいSDK対応へUpgradeする必要があるかもしれません。SDKは、新しい評価ボードから対応中なので、残念ながら少し待つ必要があるかもしれませんが…😅。

ARM Cortex-M4ベンダと評価ボード(選択失敗談)

本稿は、模索中のCortex-M4評価ボード選択の失敗談です。

初心者・中級者のMCU習得・開発を支援するのが本ブロブの目標です。手段として、個人でも入手性の良い低価格MCU評価ボードを使い、効率良く具体的にポイントを把握できる記事作成を心掛けています。

先日のIoT市場を狙うデュアルコアMCUで、本ブログでこれまで取り上げてきたMCUコア以外にARM Cortex-M4開発経験がIoT要件になる可能性を示しました。そこで、新たにCortex-M4カテゴリをブログに加えたいと考えているのですが、今日現在、適当な評価ボードや開発環境が見つかっておりません。

ARM Cortex-M4カテゴリ

Cortex-M4カテゴリは、急増するIoT開発に対する個人レベルでの先行準備的な位置付けです。

ARM Cortex-M0/M0+/M3コアやルネサスS1/S2/S3コア習得が初級レベルの方は、開発障壁が少し高いかもしれません。なぜなら、Cortex-M4コアの知識ベースはCortex-M0/M0+/M3だからです。この高さ軽減のため、過去のブログ関連投稿をリンク付けします。

中級レベルの方は、Cortex-M4の高いMCU能力を、Cortexコア間のアプリケーション移植やRTOS活用への発展、IoTで高度化するセキュリティ機能の実装などに意識してCortex-M4カテゴリ記事をご覧頂ければ役立つと思います。

32ビットMCUベンダシェアと本ブログカテゴリ

2018年の32ビットMCUベンダシェアが、6月7日投稿InfineonのCypress買収で示されています(下図右側)。

買収成立時の自動車と32ビットMCUシェア(出典:EE Times記事)
買収成立時の自動車と32ビットMCUシェア(出典:EE Times記事)

上位5ベンダ(Runesas、NXP、STM、Cypress、TI)と、本ブログカテゴリとの関係が下表です。

例えば、NXPのLPCマイコンでCortex-M0+記事であれば、MCUカテゴリはLPCマイコン、32ビットコアカテゴリはCortex-M0+などとカテゴリが重複する場合もあります。ただ、本ブログのカテゴリ記事数(n)がベンダシェアや、Cortexコアの人気傾向を示しており、32ビットMCUベンダシェアともほぼ一致します。

2018年MCU上位5ベンダと本ブログカテゴリの関係
MCUベンダ(シェア順) MCUカテゴリ 32ビットコアカテゴリ
Runesas RL78マイコン なし
NXP LPCマイコン/Kinetisマイコン Cortex-M0/M0+/M3/M23マイコン
STM STM32マイコン Cortex-M0/M0+/M3マイコン
Cypress PSoC/PRoCマイコン Cortex-M0/M0+マイコン
Texas Instruments なし なし

※Cypress+Infineonは買収成立と仮定

ルネサスMCUは16ビットコア(S1/S2/S3)のみ掲載中です。理由は、同社32ビットコアMCU開発環境が、コンパイラ1ライセンス当たり10万円程度と高価で、個人レベルでのライセンス購入が困難なため、本ブログ対象外としたからです。

MCUベンダシェアとカテゴリとを俯瞰すると、Texas Instrument(以下TI)とCortex-M4カテゴリがないことが解ります。※32ビットMCUコアでNon ARM系のRunesasを除くと、事実上Cortexコアのみで、その中で記載が無いメジャーMCUコアがCortex-M4です。

そこで、TIのARM Cortex-M4Fマイコン、MSP432の評価ボードを調査しました。

ARM Cortex-M4F搭載MSP432評価ボード

MSP-EXP432P401R LaunchPad Kitとブロック図
MSP-EXP432P401R LaunchPad Kitとブロック図

低消費電力MSP432P401R(ARM Cortex-M4F、48MHz、浮動小数点ユニット、DSPアクセラレーション、256KB/Flash、64KB/RAM)搭載の評価ボード:SimpleLink™ LaunchPad™です(TIは評価ボードをローンチパッドと呼びます)。Digi-KeyMouser秋月電子(秋月電子は在庫限りRev 1.0 (Black)、2100円)で低価格購入可能です。

他社ARM MCU評価ボードで一般的に用いられるArduinoコネクタ増設ではなく、BoosterPack(ブースタパック)と呼ぶTI独自拡張コネクタでBLEやWi-Fi機能を追加します。また、SimpleLink AcademyトレーニングというWebベースの教材などもあります。

MSP432評価ボード単体では、情報量の多さ、価格ともに魅力的です。Cortex-M4クラスの評価ボードでも、Cortex-M0/M0+/M3プラスアルファの低価格で入手できるのには驚きました。プロトタイプ開発は全てCortex-M4で行い、製品時Cortex-M0/M0+/M3を選択する方法もありだと思います。Cortex-M4とM4Fの違いは、本稿PS:パート2動画で解ります。

MSP432P401Rの開発環境は、TI純正無償Code Composer Studio(CCS)です。但し、無償版CCSはMSP432利用時32KBコードサイズ制限付きです。当面32KBでも十分ですが、制限解除には有償版(サブスクリプション)が必要です。

低価格評価ボードがあるのに開発環境に個人での使用に障害がある事象は、Runesas 32ビットMCUと同じです。

以上から本ブログのCortex-M4カテゴリに、TI:MSP-EXP432P401R LaunchPad を使うのは、有償開発環境の点から断念しました(NXP/STM/Cypressは、無償版でもコードサイズ制限無しです)。

まとめ

2018年32ビットMCUベンダシェアから本ブログ記事を俯瞰した結果、Cortex-M4カテゴリとベンダのTexas Instrumentが欠けていることが解り、ARM Cortex-M4F搭載のTI)MSP432P401R評価ボードMSP-EXP432P401R LaunchPad導入を検討しましたが、無償CCSコードサイズ制限のため採用を見合わせました。

勤めている企業の取引の関係でベンダや開発に使うMCUは、既に決まっていることが多いです。しかし、開発者個人レベルでは、ポケットマネーの範囲内で、ベンダもMCU選択も自由です。

ARM Cortex-M4 MCU開発経験はIoT普及期には必須になる可能性があります。普及期への先行準備、また、仕事以外のMCUを手掛けることによる視野拡大、リスク回避手段に適当なCortex-M4評価ボードを選択し、Cortex-M4カテゴリ投稿を計画しています。初回は、Cortex-M4評価ボード選択の失敗談となりました。

PS:TIサイトに下記MSP432日本語版トレーニング動画(要ログイン)があります。ARM Cortex-M4Fを使ったMSP432の全体像が効率的に把握できます。

タイトル 所要時間
パート 1 : MSP432 概要 09:24
パート 2 : ARM Cortex-M4F コア 08:12
パート 3 : 電源システム 05:25
パート 4 : クロック・システム、メモリ 07:53
パート 5 : デジタル・ペリフェラルとアナログ・ペリフェラル 10:07
パート 6 : セキュリティ 05:15
パート 7 : ソフトウェア 07:29
パート 8 : MSP430 から MSP432 05:06