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起動を止めるのを忘れると、ブレークポイントで停止後、システムリセットが発生するのでデバッグになりません。注意しましょう!

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ソフトウェア生産性も高めることができます(一石二鳥)。

ARM Cortex-M4テンプレートと開発資産流用性
ARM 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プロトタイプテンプレートは、つまずき易い階段を、楽に効率的に上るための開発支援ツールです。ご期待ください。

TI)CCS Cloud IDE

Texas InstrumentsのIDE:Code Composer Studioのクラウド版が、CCS Cloud IDEです。PCインストールの従来CCS Desktop IDE、CCS Cloud IDE、前回投稿Energia IDEの3 IDE比較が下記です。

CCS DesktopとCCS Cloud、Energia IDE比較(出典:TIサイト)
CCS DesktopとCCS Cloud、Energia IDE比較(出典:TIサイト)

CCS Cloud IDEの特徴

CCS Cloud IDEの動作環境は、ブラウザと専用アドオンだけです。CCS Cloud IDE単独で、コンパイル/プログラム/デバッグが可能です。

特筆すべきは、CCS Desktop IDEとEnergia IDE両方のプロジェクトをインポートできることです。つまり、いつでもどこででも、CCS DesktopプロジェクトやEnergia IDEスケッチ例を、CCS Cloud IDEを使ってプログラミングやデバッグができるのです。

働き方改革や仕事効率化に対する具体的方策の1つにこのCCS Cloud IDEが役立ちます。移動中や空き時間に、職場で引っかかったデバッグ内容やプログラミングに、新しい解決策やヒントを発見することは良くあります。CCS Cloud IDEを使えば、スマホやタブレットでヒントをスグに試せるのです。

CCS Cloud IDEの使い方

TI Cloud Development Environmentへアクセスします。左側に表示されるCloud Agentは、ターゲット評価ボードの接続を検出し、Resource Explorerで当該サンプルプロジェクトを表示してくれる便利な機能を提供します。ブラウザには、TICloudAgent Bridgeというアドオンを追加します。

TI Cloud Agent
TI Cloud Agent

9月26日投稿で用いたMSP-EXP432P401R LaunchPad 評価ボード(Cortex-M4F/48MHz、256KB/Flash、64KB/RAM)とEnergia IDEのFadeスケッチ例でCCS Cloud IDEの使い方を示します。

Cloud Agentとブラウザアドオンを追加後、MSP-EXP432P401R LaunchPadをPCへ接続すると、Cloud Agent が、1-Device Detectedへ変わります。Resource Explorerをクリックすると、CCS Desktop IDEとEnergia IDEで提供中のMSP-EXP432P401R LaunchPadサンプルプロジェクトや資料が参照できます。

MSP-EXP432P401R Device Detected
MSP-EXP432P401R Device Detected

Resource ExploreでEnergia IDEのFadeスケッチ例を選択した例が下図です。

Resource Explorer
Resource Explorer

Import to IDEクリックでFadeスケッチのソースコードがCCS Cloud IDEへ取り込まれます。Runクリックでコンパイル後、MSP-EXP432P401R LaunchPad評価ボードへダウンロードされ、Fade動作確認ができます。Energia IDEではできないBreakpoint設定などもCCS Cloud IDEでは可能です。

CCS Cloud IDEで実行中のFadeスケッチ例
CCS Cloud IDEで実行中のFadeスケッチ例

CCS Cloud IDEの活用

CCS Cloud IDEの使い方をEnergia IDEのFadeスケッチ例で示しました。CCS Desktop IDEの場合でも同じです。Import to IDE時のソースコードが、CCS Desktop IDEのサンプルプロジェクトへ変わるだけです。

一旦プロジェクトを取り込んでしまえば、CCS Cloud IDEの動作環境は完成です。次回からは、ログインのみでクラウドMCUプログラミングができます。

クラウドベースのCCS Cloud IDEは、比較表で示したように機能的にはEnergia IDEとCCS Desktopの中間です。MCUソフトウェア開発初心者が、Energia IDEで評価ボードサービスや周辺回路の動作確認後、次にデバッグへステップアップする場合に、CCS Cloud IDEは好適な環境です。

また、中級レベル開発者でも、通常のデバッグやコーティングなら、より高機能なCCS Desktop IDEを使うまでもなく、下図に抜粋したCCS Cloud IDEの使用頻度が高いタブとコマンドだけで十分プログラミングできるのも解ります。

CCS Cloud IDEから抜粋したタブとコマンド
CCS Cloud IDEから抜粋したタブとコマンド

CCS Cloud IDEが、ターゲットMCUソフトウェア開発に、十分なコンパイル/プログラム/デバッグ能力を持つクラウドMCU IDEであることがご理解頂けたと思います。

MSP-EXP432P401R LaunchPadの目的

MSP-EXP432P401R LaunchPadは、本稿で示したように、TIのCCS Desktop IDE、CCS Cloud IDE、Energia IDEの3 IDEを使ってソフトウェア開発ができます。

開発ソフトウェアは、MSP432テンプレートです。本ブログカテゴリと、その生産物の関係が下図です。

MCUカテゴリーと生産物
MCUカテゴリーと生産物

MSP432テンプレートを開発するために選んだ、個人でも入手性が良く低価格な評価ボードが、MSP-EXP432P401R LaunchPadです。

既に各1000円(税込)販売中のテンプレートは、コチラをご覧ください。テンプレートのメリットやアプリケーション開発手順なども記載中です。

P.S.:ついでにカテゴリ:LibreOfficeの生産物が下図です。こちらは、無償です。

LibreOfficeカテゴリーと生産物
LibreOfficeカテゴリーと生産物

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カテゴリへ追加予定です。

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