NXP MCUXpresso SDKから見るARMコアMCU開発動向

NXP最新IDE:MCUXpresso v11が、SDK:Software Development Kitを使ってMCUソフトウェア開発をすることは、前回投稿で示しました。MCUXpresso SDKがサポートする評価ボード一覧が、SDKユーザガイド最新版:Rev.10、06/2019付録Bにあり、旧Freescale評価ボード:FRDMが多いですが、NXPの新しい評価ボードも追加されつつあります。

オランダ)NXPが、米)Freescaleを買収完了したのは2015年12月です。

本稿は、旧FreescaleとNXP MCU両対応のMCUXpresso SDKから、ARMコアMCU開発動向を調査し対策を示しました。

MCUXpresso SDK

MCUXpresso SDK Laysers(出典:Getting Started with MCUXpresso SDK, Rev. 10_06_2019)
MCUXpresso SDK Laysers(出典:Getting Started with MCUXpresso SDK, Rev. 10_06_2019)

ユーザガイド記載のMCUXpresso SDK層構成です。ユーザが開発するのはApplication Code。このApplication Code以外は、評価ボード:MCU Hardwareと、SDKで提供されます。色付き部分:Middleware、Board Support、FreeRTOS、Peripheral Drivers、CMSIS-CORE…がSDKの中身です。

もちろんMCU性能に応じて、初めからFreeRTOSやMiddlewareが無いSDKもあります。例えば、前回のLPC845 Breakout board SDKリリースノートを見ると、Board Support(前回投稿BSPのこと)とPeripheral Drivers(Author: Freescale)、CMSIS-CORE(Author: ARM)だけが提供中です。

CMSIS:セムシイスまたはシムシス

CMSIS:Cortex Microcontroller Software Interface Standardは、リリースノートでAuthor: ARMが示すようにMCUコア開発元ARM作成の規格で、MCUハードウェアを上位層から隠蔽します(関連投稿:mbed OS 5.4.0のLチカ動作、LPCXpresso824-MAXで確認の3章)。

Peripheral DriversやBoard Supportは、 このCMSIS層のおかげでMCUハードウェアに依存しないAPIを、ユーザ開発Application Codeへ提供できる訳です。例えば、下記旧Freescale評価ボード:FRDM-KL25Z用SDKのboard.h記述:赤LED初期設定とトグルマクロ関数は、前回投稿で示したLPC845 Breakout boardと同じです。

FRDM-KL25Z用SDK_SDK_2.2_FRDM-KL25Zのboard.h
FRDM-KL25Z用SDK_SDK_2.2_FRDM-KL25Zのboard.h

従って、LPC845 Breakout boardで開発したアプリケーションコードを、そのままFRDM-KL25Zへも流用できます。

つまり、「SDK利用によりARMコアアプリケーションコードが汎用化」したのです。

同一アプリケーションコードでFreescaleとNXP評価ボード動作の意味

旧FreescaleとNXPのMCU評価ボードが同じアプリケーションコードで動作するのは、どちらもARMコアMCUでCMSIS層付きSDKなので、開発ユーザから見れば当然です。

しかし、従来は同じARMコアであってもApplication CodeはMCUベンダ毎に異なり、ベンダが異なれば常に1から開発していました。NXPでさえ、SDKを使った今回の同一コード動作に、Freescaleを買収後、約3.5年かかっています。
※Freescale 旧IDE:Kinetis Design Studioや、NXP 旧IDE:MCUXpresso IDE v11以前に慣れた開発者は、CMSIS付きSDKの新IDE:MCUXpresso IDE v11に違和感があるかもしれません。というのは、新IDEは、どちらの旧IDEとも異なるからです。

もちろんCMSIS利用はメリットだけでなく、デメリットもあるハズです。例えば、他社と差別化するベンダ独自Peripheral性能を極限まで引出すには、直接Hardwareを制御した方がより効率的です。STマイクロエレクトロニクスのSTM32G0x MCUのLL:Low Layer APIなどにその動向が見られます(関連投稿:STM32G0x専用Edge MCUテンプレート開発)。

しかし、CMSIS利用SDKを使ったアプリケーションコード開発は、ARMコア間のアプリケーションコードやベンダ間をも跨ぐ移植性、開発速度の速さ、ソースコード可読性などの点からユーザメリット大と言えます。
※ベンダを跨ぐ移植性とは、FreescaleとNXPのMCUで同一アプリケーションが動作することを意味します。FreescaleはNXPに買収されたので、実はベンダを跨いでいませんが、CMSIS層があればアプリケーションコード移植可能な実例と思ってください。

ARM MCUコアソフトウェアの開発動向と対策

現在MCUコアは、多数派のARMコアベンダと、少数派のNon ARMコアベンダの2グループに分かれています。

多数派ARMコアベンダは、NXPのMCUXpresso SDKに見られるようにCMSIS層利用アプリケーションコード開発、既存アプリケーション資産流用、差別化Peripheral開発に力点を置くと思います。目的は、より早く、より簡単な環境提供によるソフトウェア開発効率/速度の向上です。

我々ユーザは、この環境変化に応じたアプリケーションコード汎用化手法と、もう一方の差別化機能の性能発揮手法を臨機応変、かつ、それらを混同せず、時には組み合わせて開発する必要があると思います。

P.S.:弊社テンプレートで言えば、アプリケーションコード汎用化手法が、STM32Fxテンプレート他の汎用テンプレート、一方の差別化機能の性能発揮手法が、STM32G0x専用テンプレートです。

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は、新しい評価ボードから対応中なので、残念ながら少し待つ必要があるかもしれませんが…😅。

IoTを狙うデュアルコアMCU

CypressのPSoC 6を中心にNXPとSTM、3社のARMディアルコアMCUを調査しました。Cortex-M4とCortex-M0+を使う個人でも低価格で入手できるディアルコアMCUです。ディアルコアMCUの狙い、アプリケーション、シングルコアMCUソフトウェア開発との違いなどを説明します。

Cortex-A7とCortex-M4を使ったもう1つの超高性能ディアルコアMCUも少しだけ登場します。

ディアルコアMCUの狙い、アプリケーション

ディアルコアMCUの狙い
ディアルコアMCUの狙い(出典:Cypress Cortex-M4 PSoC 6サイト)

CypressのCortex-M4コアPSoC 6サイトの上図がディアルコアMCUの狙いを示しています。

つまり、「IoT市場獲得には、右側アプリケーションプロセッサからと左側マイクロコントローラ:MCUからの2つのアプローチがあり、MCUアプローチのPSoC 6は、処理能力とセキュリティ強化を低コスト、低電力で実現した」ということです。

PSoC 6は、実現手段としてメインコアにCortex-M4(150MHz)、補助コアにCortex-M0+(100MHz)のディアルコアを採用しています。このCortex-M4+Cortex-M0+の2MCU構成は、NXP:LPC54102STM:STM32WB55RGでも見られます。CypressとSTMは、Cortex-M0+側にBluetooth Low Energy無線通信機能を実装済みです。

PSoC 6は、実装セキュリティに応じてPSoC 62/63シリーズと3種類のPSoC 64シリーズに別れます。PSoC 62/63は、PSoC 6のセキュリティ機能とユーザ独自セキュリティファームウェア(ソフトウェア)を使うデバイス(次章参照)、最上位プレミアムセキュリティのPSoC 64は、標準的なセキュリティ機能を全て含むデバイスです。

一方、アプリケーションプロセッサアプローチは、NXP:iMX 7アプリケーションプロセサのようにスマホやRaspberry Piでも用いられたCortex-A7(800MHz)がメインコアで、Cortex-M4(200MHz)が補助コアです。このアプローチは、ソフトウェア開発規模が大きく評価ボードも高価で個人開発向きとは言いにくいと思います。Cortex-A7自身がマルチコアでOS利用が前提なので更に複雑になります。

まとめると、低コスト低電力で処理能力とセキュリティ強化目的のCortex-M4+Cortex-M0+ディアルコアMCUの狙いは、IoTアプリケーションです。PSoC 63搭載の評価ボード:CY8CPROTO-063-BLEの価格は¥2,289(Digi-Key調べ)で、個人でも手が出せる価格帯です。

ディアルコアMCUのソフトウェア開発

PSoC 63 Line with BLE (Applications and Freatures)
PSoC 63 Line with BLE (Applications and Freatures)

Cypress Roadmap: MCU Portfolio、P25から抜き出したPSoC 63のアプリケーションとFeaturesです。具体的なIoTアプリケーションや、実装セキュリティ機能が解ります。
※ご参考までにこのMCU Portfolioには、CapSenseテンプレート開発で用いたPSoC 4000S/4100S仕様も解り易く掲載されています。

同じP25記載のPSoC 63ブロック図です。Cortex-M4とCortex-M0+がメモリ結合されています。

PSoC 63 Line with BLE (Hardware)
PSoC 63 Line with BLE (Hardware)

PSoC 6のソフトウェアは、Cortex-M4とCortex-M0+それぞれのソフトウェアが、2つ同時に別々に動作します。簡単に言うと、各シングルコアMCUソフトウェア同士が、同じデバイス内で動きます。メモリ結合なので、同一メモリアドレス同時アクセスの競合回避手段なども多分あるハズです(←調査不足😌)。

つまり、ディアルコアMCUソフトウェア開発と言っても、従来のCortex-M4やCortex-M0+シングルコアMCUソフトウェア開発の経験やスキルがそのまま活かせるのです。

一方のMCUから見ると、片方のMCUはインテリジェントな周辺回路と同じです。

例えば、Windowsソフトウェア開発なら、1つの機能を複数スレッドに分割し、処理効率を上げるなどのマルチコア対応の工夫が必要です。しかし、Cortex-M4+Cortex-M0+デュアルコアMCUの場合は、シングルコアのソフトウェア開発手法がそのまま使えます。

差分は、「2つのMCUに、どの機能を割振るか」です。

FPU内蔵のCortex-M4は、セキュリティなどの計算処理、高速GPIOアクセスのCortex-M0+は、IO処理やBLEモジュール管理、というのが定番(CypressやSTMのディアルコアMCUにみられる)割振りのようです。

まとめると、ディアルコアMCUソフトウェア開発は、シングルコアMCU開発経験がそのまま活かせます。しかも、別々動作の2コアを持つので、RTOSを使わずに処理分離と本当の並列動作ができます。

また、個人入手可能な評価ボード価格も魅力です。

評価ボード搭載のPSoC 63:CY8C6347BZI-BLD43(116-BGA)は、BGAパッケージなので基板実装は簡単ではありません。しかし、このPSoC 63とBLEアンテナをモジュール化したCYBLE-416045-02(14.0 mm x 18.5 mm x 2.0 mm、43-pad SMT with 36 GPIOs、下図)が評価ボードに実装済みで単体購入も可能です。

また、個人利用の場合には、評価ボードを丸ごと基板実装するのも効果的です。

EZ-BLE Creator Modules CYBLE-416045-02
CY8C6347BZI-BLD43搭載のEZ-BLE Creator Modules CYBLE-416045-02

ディアルコアMCUへの対処案

ディアルコアMCUの狙いは、巨大なIoT市場です。

各社がディアルコアMCUを発売する理由は、高度化するセキュリティ機能や、どの規格かが不確定な無線通信機能に対して、現状のシングルARMコアMCUでは、処理能力不足が懸念されるためです。
※近距離無線通信の有力候補が、BLEであることは確かです。

ディアルコアMCUならば、たとえ規格が変わっても、その影響を片方のMCU内に止めることもできます。つまり、ソフトウェア資産が無駄にならない訳です。

IoT市場へは、Cortex-M4+Cortex-M0+と、Cortex-A7+Cortex-M4のアプローチがあります。Cortex-M4を用いる点ではどちらも一致しています。FPU内蔵Cortex-M4ソフトウェア開発や経験が、IoT MCUプログラマの必須要件になるかもしれません。

シングルコアMCU開発経験が活かせ、しかもRTOSを使わずに高速並列処理を実現できるディアルコアMCUのソフトウェア/ハードウエア開発を、評価ボードへの僅かな投資で、IoTが爆発的に普及する前から準備・習得するのは、技術者リスク回避の点からも必要だと思います。

2018年IoTトレンドと2019年予想記事をEdge MCU開発者観点で読む

セキュリティ、産業IoT、通信事業者との連携、ウェアラブルデバイスという4テーマで2018年IoTドレンドとその予想結果、2019年のそれらを予想した記事がTechTarget Japanに掲載されています。

本稿はこの記事内容を、マイコン:MCU、特に本ブログ対象Edge MCU開発者の観点から読みたいと思います。

IoTサービス観点からの顧客目線記事

一言でIoTと言っても様々な観点があります。本ブログ読者は、殆どがMCU開発者なので、顧客がどのようなIoT開発を要求し、それに対して自社と顧客双方のビジネス成功をもたらす「ソリューション提供」が最も気にする点だと思います。

一方、要求を出す側の顧客は、記事記載の「IoTサービス」に注意を払います。そのサービス実現手段として、ベンダー動向やMCU開発者自身の意見を聞いてくるかもしれません。そんな時、日頃の技術動向把握結果を具体的に顧客に提示できれば、顧客案件獲得に有効なのは間違いありません。

顧客と開発者のIoT捉え方は異なる。
顧客はサービス観点でIoTを捉える。開発者はソリューション提供でIoTを捉える。

そこで、記事の4テーマ毎にEdge MCU開発者の観点、特にEdge MCU最新動向を関連投稿とともに示します。

セキュリティ

Edge MCUセキュリティ強化策として、昨年頃からMCUにセキュリティ機能を内蔵するか、または、MCU外付けに専用セキュリティチップを追加する動きが出始めました。
要するに、IoTではEdge MCUでデジタルデータ暗号化機能実装が必須になりつつあるのです。
関連投稿:守備範囲が広いSTM32G0のアクセス・ライン製品
関連投稿:IoTマイコンとセキュリティの色々なセキュリティ強化方法

産業IoT

産業機器データ収集と分析の重要性は顧客に認識されていますが、IoT導入は記事にあるように初期段階です。Edge MCUも、産業用にも流用できるメリットを示すIoT MCU新製品もありますが、車載用の新製品が多い状況です。
関連投稿:NXP新汎用MCU S32K1

通信事業者との連携

国により大きく異なる通信事業者とそのサービスや連帯を一言で表すことは困難です。ただし、日本国内でのIoTフィールドテストは、今一つ盛り上がりに欠ける感じが個人的にはします。やはり、黒船(海外発のIoT通信デファクトスタンダードとその普及)が必要かな?と思います。

ウェアラブルデバイス

Edge MCUに近距離無線通信(NFC)機能を搭載したり、AI機能(機械学習)を搭載しHuman Activity Recognition:人間活動認識を実現したりする新しいEdge MCI製品が登場しています。
関連投稿:NFCを使うLPC8N04のOTA
関連投稿:MCUのAI機能搭載

2019年2月18日速報:タイムリーなことに、Motor Fan Techという自動車関連の情報誌で、次世代ARM v8.1-Mアークテクチャが、業界最小の組み込みデバイス向けに、強力な信号処理を実現が掲載ました。次世代Cortex-Mプロセサは、機械学習(ML)パフォーマンスを最大15倍、信号処理パフォーマンスを最大5倍向上させるそうです。

IoTサービス例を顧客に示せるEdge MCUテンプレート構想

2018年3月の弊社LPC8xxテンプレートV2.5改版以降、新開発のマイコンテンプレートはありません。その理由は、記事にもあるIoTの急速な普及・変化が無かったことも1つの理由です。

これまでの弊社マイコンテンプレートの目的は、「開発者個人が低価格でMCU開発を習得すること」でした。このため、各ベンダーの汎用MCUとBaseboardを使い、そのMCU基本的動作開発までを1つの到達点としてきました。

2018年後半から新しいIoTトレンドに沿った新Edge MCUが各ベンダーから発売済みです。そこで、マイコンテンプレートも、顧客目線やその観点を取り入れた到達点へステップアップしようと思います。

顧客は単にMCUが動作するだけでなく、何かしらのサービス提供をしているIoT MCUを見たいでしょう。この「IoTサービス例を、開発者個人が、低価格かつ簡単に示せるマイコンテンプレート」が新しいEdge MCUテンプレートの構想です。

IoTサービス例を示すEdge MCUテンプレート
IoTサービス例を示すEdge MCUテンプレート

この場合の顧客とは、ビジネス顧客に限らず、開発者の上司や同僚、さらに、開発者自身でも良いと思います。開発結果がIoTサービスに関連していれば、誰でもその効果が判り易いハズです。

期待されているIoTサービスならば、開発者もMCU開発がより楽しく、その習得や応用サービスへの発展もより具体的かつアグレッシブになると思います。と言っても、クラウドを含めたIoTサービスを開発・提供するのは、個人レベルでは無理です。
従って、ほんの触り、一部分のIoTサービスになります。それでも、見る側からは、開発内容が解りやすくなります。

もはやMCUが動作するのは、当たり前です。その上で、+αとしてEdge MCUがIoTで出来るサービス例を示し、さらに、Edge MCU習得も効率的にできるのがEdge MCUテンプレートです。

今後開発するEdge MCUテンプレートは、IoTサービス指向の結果、これまでマイコンテンプレートが持っていた汎用性が少し犠牲になる可能性もあります。ただ、従来の汎用MCUの意味・位置づけもIoTで変わりつつあります。
関連投稿:RL78ファミリから解る汎用MCUの変遷
関連投稿:STM新汎用MCU STM32G0

MCU基本動作に加え、何らかのIoTサービス提供例を示す工夫をEdge MCUテンプレートへ加えるつもりです。

Arduinoコネクタを持つMCU評価ボードが多い理由

ArduinoコネクタコンパチブルMCU評価ボード例
ArduinoコネクタコンパチブルMCU評価ボード例

本稿は、Arduinoコネクタを持つMCU評価ボードが多い理由を、少し丁寧に説明します。上図は、Arduinoコネクタレベルでコンパチブル(=置換え可能)なSTマイクロエレクトロニクス、サイプレス・セミコンダクター、NXPセミコンダクターズ各社のMCU評価ボードを示しています。

Arduinoコネクタ

イタリア発で「オープンソースハードウェア概念」の発端となったArduino(アルデュイーノ、もしくはアルドゥイーノ)。その制御系とArduinoシールドと呼ばれる被制御系ボード間の物理インタフェースがArduinoコネクタ(右下)です。
I2C(SCL/SDA)/ADEF(アナログ基準電位)/DIGITAL(PWM兼用)/ IOREF(IO基準電位)/RESET/POWER/ANALOG INのピン配置が決まっています。

Arduinoコネクタのおかげで、制御系とシールドに分離して開発でき、それぞれをArduinoコネクタで接続すれば、Arduinoボードシステムが完成します。

Wikipediaによると、2013年には制御系とシールド、公式非公式合わせて140万台ものArduinoボードが販売されていて、安価にプロトタイプシステム構築が可能となっています。

Arduinoコネクタを持つMCU評価ボードが多い理由その1:市販安価シールド資産が使える

既にこれだけの数のシールドが販売中ですので、MCU開発にそのまま流用や小変更で使えるシールドもあります。

Arduinoコネクタを持つMCU評価ボードが多い理由その1が、この既製品で安価なシールド資産が使えるからです。使用部品選定やアートワークパターンなども十分に練られた既製品が入手できるのです。しかもこれらは殆どの場合、オープンソースハードウェアなので詳細が開示済みです。

シールドは縦方向に段重ね(スタッカブル)できますので、複数段を重ね機能増加も可能です。

ハードウエア基板を0から動作するレベルにまでもっていくのは、時間もコストも掛かります。市販シールドを利用したプロトタイプ開発が可能なことが、MCU評価ボードにArduinoコネクタを持つ理由です。

Arduinoコネクタを持つMCU評価ボードが多い理由その2:MCU性能評価に使える

シールドを使ってハードウエアが用意されれば、後はソフトウェアです。

図のようにシールドは、複数ベンダーのMCU評価ボードに使えますし、同一ベンダー内の異なるMCUの性能評価にも使えます。

例えば、最も重要な処理に必要なシールドと、その制御ソフトウェアのみをプロトタイプ開発し、MCU性能が重要処理に十分か否かの評価を行います。この評価結果で、コストパフォーマンスに優れたMCU選択が可能となります。

場合によっては、ピンコンパチブル性を利用して他ベンダーのMCU選択も可能です。Cortex-M系MCUはどれも似通ってはいますが、例えば、サイプレスのPSoCシリーズはアナログブロントエンド機能内蔵など、各ベンダーでそれぞれ特徴があります。これらMCU特徴を活かした開発で競合他社との差別化もできます。

MCU評価ボードプロトタイプ開発スピードを上げるマイコンテンプレート

その1もその2もポイントは、プロトタイプ開発のスピードです。効率的に、しかも精度良くプロトタイプ構築し評価するには、MCU製品で使用頻度が高いLCD出力やアナログポテンショメータ入力、LED出力などの単機能シールドを複数使うよりも、これら機能実装済みの汎用Baseboardを使う方が、より低コストにプロトタイプハードウエアの構築ができます。

関連投稿:CY8CKIT-042とCY8CKIT-042-BLEへの機能追加、サンプルソフトが直に試せるマイコン開発環境の章

弊社マイコンテンプレートは、Baseboard動作に必要なソフトウェアをBaseboardテンプレートで提供済みです。開発要件に必要なシールドを見つけ、シールド単体でMCU性能評価を行い、さらにBaseboard実装機能を付加すれば、MCU製品完成形により近いプロトタイプシステムでの評価も可能です。

MCUプロトタイプ開発をスピードアップさせるマイコンテンプレート
MCUプロトタイプ開発をスピードアップさせるマイコンテンプレート

マイコンテンプレートは、MCU評価ボードプロトタイプ開発の「速さ」をより早めます。

MCU評価ボード、IDE、開発ツール、ベンダーが変わってもテンプレート本体は不変

テンプレート本体、具体的にはアプリケーションのLauncher機能は、MCU評価ボード、IDE、コード生成ツールなどの開発ツール、ベンダー各社には依存しません。つまり、単純なC言語でできています。

従いまして、開発ツールやIDEが時代により変化・更新しても、テンプレート本体は変わりません。ご購入頂いた弊社マイコンテンプレートの付属説明資料は、発売当時の環境をベースに解説しております。しかし、最新版のIDEやコード生成ツールに更新されても、このテンプレート本体は不変ですので、安心してお使いください。

まとめ

Arduinoコネクタを持つMCU評価ボードが多い理由は、市販安価シールド資産を活用し、MCU性能評価へも活用すれば、MCUプロトタイプ開発が効率的かつ容易になるからです。プロトタイプ開発スピードをさらに上げるためマイコンテンプレートが役立つことも示しました。

マイコンは種類が多く、どのベンダーの何を使って開発すれば良いかというご質問を時々頂きます。お好きなベンダーのArduinoコネクタを持つMCU評価ボードを使ってプロトタイプ開発することをお勧めしています。制御系ベンダー差は、Arduinoコネクタで消えます。先ずは着手、あえて言えば被制御系の開発着手が先決です。

2018 IoT MCUを振り返る

今年も多くの方々に本HappyTechブログをご覧いただき、また、多くの方々にマイコンテンプレートをご購入いただいたことに心より感謝いたします。ありがとうございました。

2018年の弊社ブログ投稿を振り返って、IoT MCUの2018動向を総括します。

ノードとエッジに2層化するIoT MCU

IoT時代には、数十億個以上もの膨大な数が必要と言われるIoTエッジMCU、これが本ブログ対象マイコンです。低コスト、低消費電力、効率的ハードウェア/ソフトウェア生産性が求められます。

これらIoTエッジMCUを束ね、クラウドと無線通信するのがIoTノードMCU。IoT MCUは、ノードとエッジの2層化傾向があります。

IoT MCU日本ベンダー動向

ルネサス エレクトロニクス:アナログフロントエンド強化の買収継続
NXPセミコンダクターズ:クアルコム買収断念で独自性維持
サイプレス・セミコンダクター:超低電力Cortex-M0+製品強化
STマイクロエレクトロニクス:日本語資料強化

自動車と産業、セキュリティがIoT MCUを牽引

超高性能、セキュリティ、CAN FD、低電力が自動車向け要求、同じくセキュリティ重視だが、コストパフォーマンスも重視、低電力が産業向け要求、両要求ベクトルがIoT MCUベンダー開発を牽引中。

MCUコアのこだわり不要

要求を満たすには広いMCUカバー能力と低電力動作が必要で、Cortex-M0+とCortex-M4のマルチコアや、シングルコア動作周波数の引上げが見られます。製造プロセス微細化も進むでしょう。

エンドユーザ(顧客)は、いわゆるソリューション(解)を求めていて、要求を満たせばMCUコアが何でも構わないので、開発者は、手段であるMCUコアにこだわる必要性を少なくすることが求められます。

つまり、最適ソリューションのハードウェア/ソフトウェアを、様々なベンダー、MCUから自ら選択し、効率的に解を提供できるIoT MCU開発者がプロフェッショナルです。

そこで、ソリューション提供・提案をする開発者個人向けツールとして、弊社マイコンテンプレートを発展させる予定です。ブログ対象IoT MCUも、この基準にフォーカスし情報提供します。

以上簡単ですが2018年のIoT MCUを総括しました。2019年も引き続きよろしくお願いいたします。

SLA (Software license Agreement)

STマイクロエレクトロニクス(以下STM)のSTM32マイコン マンスリー・アップデート2018年8月 P4のコラムに、ソースコード生成ツールSTM32CubeMXのSLA(Software license Agreement)変更が記載されています。

SLAとは

SLAは、ソフトウェア利用(または使用)許諾契約(きょだくけいやく)のことです。ウィキペディアに詳しい説明があります。

コラム記載の新しいライセンスが、SLA0048 – Rev 4 – March 2018です。この新ライセンス中にSTM32CubeMXで検索してもヒットしませんし、法律文言の英文解釈能力も持ち合わせていませんので、コラムをそのまま抜粋します。

「マイコンに書き込まれた状態であれば著作権表示などは不要だが、それ以外の状態であればソースコード、バイナリいずれも著作権表示などは必要」になりました。

STM32CubeMXでHALを使ってソースコードを生成すると、ソースコードの最上部に下記コメントや、その他の部分にも自動的にコメントが挿入されます。

STM32CubeMX生成ソースコード
STM32CubeMX生成ソースコード(STM32Fxマイコンテンプレートの例)

要するに、新SLAは、これらSTマイクロエレクトロニクス提供ツールSTM32CubeMXが自動挿入したコメントを、我々開発者は、勝手に削除してはいけない、と言っているのだと思います。

IDE付属ソースコード生成ツール

マイコンのソースコード生成ツールは、STM32CubeMX以外にも、各社のIDE(統合開発環境)に付属しており、

  • ルネサスエレクトロニクス:コード生成
  • NXPセミコンダクターズ:SDK、Processor Expert
  • サイプレス・セミコンダクター:Generate Application

などがあります(固定ページのAPI生成RADツール参照)。これらツールが自動生成するソースコードには、開発者が解りやすいように多くのコメントが付いています。

殆どのIDE付属エディタは、最上部の著作権関連コメントを畳んで表示することが可能ですし、これらコメントは、コンパイル後、つまりマイコンに書き込まれる状態では削除されますので、普段は注意を払わない開発者が殆どだと思います。

これらコメントも、STM32CubeMXと同様、各社のSLA違反になる可能性がありますので、生成ソースコードでのコメント削除はせず、オリジナル出力のまま使うことをお勧めします。

マイコンテンプレート

弊社販売中のマイコンテンプレートも、上記コード生成ツールのソースコード出力は、そのまま使っております。

マイコンテンプレートの版権は、ご購入者様個人に帰属します。但し、テンプレートそのものの転売、配布はご遠慮ください。お願いいたします。🙏

NXP新汎用MCU S32K1

NXPセミコンダクターズ(以下NXP)から車載・産業機器向けの、新しい汎用Cortex-M0+/M4 MCU S32K1ファミリが発売中です。
同社の汎用MCUと比べ、何が新しいかを調べました。

S32K1の特徴(汎用MCUとの差分)

セキュリティ強化ARMコアは、Cortex-M23/M33があります。ところが、NXPのS32K1ファミリは、従来のCortex-M0+/M4コアを使います。Cortex-M0/M0+/M3汎用MCUと比べると、差分として以下の特徴があります。

AEC-Q100グレード1規格準拠

AEC-Q100:Automotive Electronics Council、車載用電子部品信頼性の規格化団体の規格AEC-Q100は、世界標準規格で欧米の車載向け集積回路の規格。製品使用温度範囲によりグレード0~3まであり、グレード0が-40℃から+150℃で最も広範囲、グレート1は-40℃から+125℃。

セキュリティ強化ハードウェア内蔵MCU

SHE準拠Cryptographic Services Engine (CSEc) - AES128、セキュアブート、ユニークID

専用IDEのソフトウェア開発

S32 Design Studio(Processor Expert)、無償、コードサイズ制限なし

車載・産業 両方向けの汎用MCUで最低15年供給

S32K11x(Cortex-M0+):S32K116/S32K118(2018/7発売)、評価ボード$49
S32K14x(Cortex-M4):S32K142/S32K144/S32K146/S32K148(2017/12発売)、評価ボード$49/$149

S32K MCUs for Automotive and Industrial Applicationsから抜粋したS32K1ファミリの特徴が下図です。図はAEC-Q100グレード0と表記がありますが、Cortex-M0+のS32K11xは、データシートによるとグレード1です。

S32K1特徴
S32K1の特徴 (出典:S32K MCUs for Automotive and Industrial Applications)

S32K118EVB-Q064はDigiKeyで購入可能

新汎用MCUのセキュリティ強化策と専用IDE:S32 Design Studio(Processor Expert)

IoTでは汎用MCUであってもセキュリティ強化が必須です。現在、対策として3アプローチあります。

  1. 汎用コアMCUに、セキィリティ強化回路を内蔵(本稿)
  2. 汎用コアMCUに、外付けセキュリティデバイスを追加 → 関連投稿:セキュリティ強化デバイス:A71CH
  3. セキュリティ強化コアを採用 → 関連投稿:セキュリティ強化ARMコアCortex-M23/M33

1のメリットは、2と比べ部品点数が少ないこと、3と比べ従来の汎用コア開発との親和性が高く、セキュリティ関連開発が容易になる可能性があることです。

専用IDE:S32 Design StudioのAPI生成ツールは、旧FreescaleのProcessor Expertです。NXPが、なぜ既存LPCXpresso IDEでなく、専用S32 Design studioとProcessor Expertを用いたかは不思議です。が、Processor Expertという優れたAPI生成ツールのことを知っている開発者にとっては朗報になるかもしれません。

S32K1の魅力:車載・産業機器・IoT全共用

現在のS32K1ファミリ想定アプリケーションは下記です。車載・産業向けに別々のS32K1が有るわけではなく共用です。

S32Kアプリケーション
S32Kアプリケーション(出典:車載・産業機器向け Arm® Cortex®ベース S32Kマイクロコントローラ (REV 3.1))

2017~2018年に供給が始まり、最低15年の供給保障、全てに評価ボードもあります。Cortex-M0+とCortex-M4間の接続は、次世代車載ネットワークCAN FDです。

S32K14x(Cortex-M4)がNode MCU化しIoT無線通信機能を実装すれば、S32K11x(Cortex-M0+)をEdge MCUとして利用可能で、S32K1が「車載・産業機器・IoT全てを狙える新しい汎用MCU」に大化けする可能性はあると思います。

関連投稿:Node MCUとEdge MCU、気になる点2の章参照

そのほか、FlexIO、FlexTimerなどの新しい周辺回路も実装されていますので、S32K1を引き続き調査する予定です。

投稿記事の表示、検索方法

本ブログは、マイコン:MCU関連情報をWordPressというソフトウェアを使って投稿しています。今回は、WordPressブログ投稿記事を効率的に表示、検索する方法を3つ示します。

※WordPressは、ブログサイト制作時に便利なツール。機能追加が容易なプラグインや、外観を簡単に変更できるテーマが多数あるので、カスタマイズも容易で、運営者が投稿のみに専念できる。

カテゴリ選択

各投稿の下には、カテゴリとタグ(キーワード)が表示されています。

投稿カテゴリーとタグ
各投稿の下に表示されるカテゴリーとタグ

カテゴリ選択は、1つのMCU投稿をピックアップして表示する最も簡単な方法です。

例えば、カテゴリのRL78マイコンをクリックすると、日付の新しい順にRL78関連投稿のみが表示されます。PCなどの大画面表示の時は、左端にカテゴリ一覧が表示されるので選択が簡単になります。

PCのカテゴリ表示
MCU毎の投稿を簡単にピックアップできるPCのカテゴリ表示

カテゴリ選択でブログを表示すると、興味のあるMCU投稿がまとまるので便利です。投稿数が多い時は、複数ページに渡りピックアップされます。表示ページ一番下に複数ページへのリンクが表示されます。

複数ページのリンク
カテゴリ投稿数が多い時に表示される複数ページのリンク

ページ番号が大きい、つまり日付の古い投稿は、そのMCUの選択理由や、IDE:統合開発環境インストール方法など最も基本的でMCU開発初期に必要となる情報が記載されています。古い順に読むとより容易にMCU理解が進むかもしれません。

タグ選択

カテゴリとは別に、投稿下にタグと呼ばれる、いわゆるキーワードが示されています。

投稿のタグ(キーワード)
各投稿の下に表示されるタグ(キーワード)

投稿内容で興味が湧いたキーワード(例:リアルタイムOS)がこのタグ内にある場合は、タグをクリックすると、キーワードにより投稿記事がまとめられます。タグ検索は、複数カテゴリに跨った横断的な検索方法です。

自分の興味があるMCUと他社MCU比較などに使うと便利です。

検索窓

ブログ右上にあるSearch:検索窓を使っても投稿の検索ができます。

検索窓
検索窓による投稿記事検索

タグに無いキーワードや、2018年4月など時期を検索窓に入力してクリックすると関連投稿が表示されます。

まとめ

ブログ投稿記事を効率的に表示、検索する方法を3つ示しました。

  1. カテゴリ選択:MCU毎の投稿まとめに最適
  2. タグ選択:キーワードでの横断的な複数MCU比較や理解に適す
  3. 検索窓:タグ以外のキーワードや、投稿時期での検索に適す

本プログは、複数MCUの内容を、時系列で投稿するので、興味ある対象が様々な雑音で読みにくくなる可能性はあります。この場合には、上記3方法で投稿をまとめると読み易くなると思います。

また、手動で関連する投稿を添付する場合もあります(関連投稿を自動選択するWordPressプラグインもありますが使っていません)。

但し、技術者リスク分散の点からは、雑音も耳に入れておくのも良いと思います。どの投稿もチョットした空き時間で読めるように、A4で1~2ページの文章量です。本ブログをご活用いただき、MCU情報整理やプロトタイプ開発に役立つマイコンテンプレートに興味を持っていただければ幸いです。

関連投稿:ルネサスのIDE買収とリスク分散:技術者個人のリスク分散必要性の章参照

Windows 10 1809更新とマイコンIDE

Windows 10 1809更新

Windows 10のRed Stone最後の大型更新RS5 、Windows 10バージョン1809配布が始まりました。

1809更新2方法

Windows Updateで更新

Windows Update更新プログラムのチェックで1809への更新が開始されます。
但し、これは運が良ければの話で、PCの更新準備が整っていても「最新の状態です」が表示され更新を待たされる場合があります。

手動で更新

Windows 10 October 2018 Updateの今すぐアップデートをクリックし、アップデートツールをダウンロードすると、手動で1809更新開始ができます。

1809更新時間と操作

どちらの方法でも、1809プログラムのダウンロードとインストールに1時間、その後、再起動して新しいWindows 10 1809の自動設定に1時間、合計約2時間程度かかります(PCや通信リンク速度によって異なりますので目安です)。

ダウンロードとインストール中は、通常のPC操作やソフトウェア開発は可能です。再起動は、自動的に始まります。
つまり、何らかの操作を行っている場合は、再起動前に終了しなければなりません。

新Windows 10自動設定中は、PC操作はできませんし、操作不要で設定完了します。
つまり、再起動したら1時間は待つしかありません。

Windows 10 1809の各社マイコンIDE動作

ブログ掲載中マイコンIDE(ルネサス:CS+、NXP:LPCXpresso、Cypress:PSoC Creator、STM:SW4STM32)は、私のWindows 10 1809では正常に動作しました。