MCUXpresso概要と当面の開発方法

LPCXpressoとKinetis Design Studioが新しいMCUXpressoへ統合されました。Windows 10 Version 1703で動作確認したMCUXpressoの概要について示します。

MCUXpresso概要

MCUXpressoの概要は、コチラの4分程の英語Videoが良く解ります。ポイント抜粋すると以下になります。

MCUXpressoは、3つのツール:IDE、SDK、CFGから構成され、各機能が下記です。

  • IDE機能:ソースエディト、コンパイル、デバッグ。Eclipse 4.6ベース。ローカルPCで利用。
  • SDK機能:使用デバイスのAPI生成とサンプルソフト提供。クラウドで設定し、結果をIDEにダウンロードして利用。
  • CFG機能:使用ピン、動作周波数など設定。クラウドで設定し、結果をIDEにダウンロードして利用。
MCUXpresso Overview
MCUXpresso Overview

全てが1パッケージのローカルPCで機能した旧IDE(LPCXpressoやKinetis Design Studio)を、MCUXpressoで3ツール構成にしたのは、SDKとCFGをクラウド側で分離提供し、IDEを軽量化することと、CMSIS準拠の開発環境構築が目的だと思います。CMSISはコチラの記事を参照してください。

CMSIS準拠ならMCUハードとソフトの分離が容易になり、開発済みアプリケーション資産を少ない工数で別ハード移植や再利用が可能です。また、CMSIS仕様(CMSIS-COREや-DSPなど)が修正/更新されても、その内容は全てクラウド側のSDKとCFGツールに閉じ込めることができるので、常に最新CMSIS準拠のSDKとCFGを利用したソフト開発が可能です。
ARM Cortex M系のIDEは、今後この分離構成が流行するかもしれません。

注目点は、IDEではコードサイズ制限なし、SDKではFreeRTOS v9提供(LPCXpresso最終版はv8)、CFGでは電力評価やプロジェクトクローナーです。各ツールの概要を以下に示します。

MCUXpresso IDE

MCUXpresso IDE
MCUXpresso IDE

旧LPCXpressoとの差分は、FreeRTOSタブが新設されたこと位です。コードサイズ制限なしで、添付マニュアル類も判り易く、誰にでも使い勝手が良いIDEです。MCU開発は、従来のRTOSを使わないベアメタル開発から、RTOS利用ソフト開発へシフトしつつあり、このMCUXpresso IDEもこの流れに沿った機能が追加されました。

MCUXpresso SDK

MCUXpresso SDK Builder
MCUXpresso SDK Builder

SDK BuilderでBoard、Processor、Kitsなどの対象MCUパラメタを入力し、対応するSDKパッケージをクラウドで作成後、ローカルPCへダウンロードして使います。パッケージの中身は、APIとこのAPIの活用サンプル集です。但し、2017年4月現在は、FreescaleのMCUと2017年に発売されたNXPのLPC54000対応のものしか提供されていません。

その理由は、旧Kinetis Design Studio:KDSのProcessor Expert:PEの代替だからと推測します。MCUXpressoは、KDSのPE機能がSDKとCFGに分離してクラウドへ実装されました。PEをお気に入りだったユーザは、この点に困惑すると思います。

一方旧LPCXpressoのユーザのSDKはというと、これは従来のLPCXpressoに同胞されていたLPCOpenライブラリなどがそのままMCUXpressoにも実装されています。つまり、MCUXpressoは旧LPCOpenライブラリなどが従来同様使えます。

従って、LPC54000開発とKDSユーザ以外は、MCUXpresso SDKを使うことは、今のところありません。

MCUXpresso CFG

MCUXpresso CFG Settings
MCUXpresso CFG Settings

CFGも現状はSDKと同様、FreescaleのSDKとNXPのLPC54000対応のみが提供中です。

MCUXpressoのまとめと当面の開発方法

MCUXpressoは、旧LPCXpressoと旧Kinetis Design Studioを統合した新しいIDEで、現状「フレームワークは出来たものの、完全な移行完了とは言い難い」ものです。以下に特徴を示します。

  • IDEとSDK、CFGの3ツールに分離するフレームワークは、CMSIS準拠ソフト開発に適している。
  • KDSのPE代替機能をSDKとCFGに割振っている。2017年NXP発売のLPC54000開発にも使えるが、既存NXPのMCUはSDK、CFGともに未対応。
  • LPCXpressoとKDSの今後の更新は、期待できない。将来的には、NXP/FreescaleのMCU開発にMCUXpressoを使う必要あり。
  • LPCXpressoユーザは、当面SDKとCFGを使わずにMCUXpresso IDEを旧LPCXpressoと殆ど同じ使用法で使える。
  • KDSユーザは、MCUXpresso IDEとSDK、CFGを使い開発する方法と、当面はMCUXpressoにPEをプラグインし開発する方法の2通りの開発方法が取りえる。但し、PEの更新が期待できないので、将来はMCUXpresso SDK、CFGを使わざるをえない。

当面の目安としては、LPCXpressoユーザならば、既存MCUのSDK、CFGが提供されるまで、KDSユーザならば、PE更新が必要になるまで、でしょう。

もう1つの目安が以下です。Windows 10 1703更新に相当するIDEベースEclipse 4.6(Neon)の次版4.7(Oxygen)への更新は、2017年6月の予定です。IDEベース更新から約半年でこの4.7ベースの最新IDEが各社からリリースされるとすると、2017年末から2018年初め位にはMCUXpressoへの完全移行完了となる可能性があります。

MCUのIDEは開発スピードを左右する部分だけに、仕様変更や更新が定期的に発生する部分と、各社独自の部分を分離し、トータルでパッケージ化すると、以上で示したフレームワークが重要となります。開発者は、フレームワーク要素更新にも注意を払う必要があるでしょう。

ルネサスSynergyロードマップ2017 and 2018

3月29日、ルネサス発表の“Renesas Synergy™プラットフォームに新たに3つのマイクロコントローラグループを追加、業界初の組み込み開発向け統合プラットフォームをさらに拡充”に、SynergyのS1グループのロードマップが示されました。

Synergy Loadmap 2017 and 2018
Synergy Loadmap 2017 and 2018(記事より)

Cortex-M0+ 32MHzのS1グループはROM/RAM増量

弊社対象MCUのCortex-M0/M0+クラスは、S1グループです。ROM/RAMが増量されることが解ります。無線機能は、未実装です。

S128 Block
S128 Block(ルネサスサイトより)

Cortex-M23もこのグループに属すと思いますが、S128データシートでは、ARM v6-M採用となっており、Cortex-M23のv8-Mとは異なります。昨年のSynergyでM23サポート発表とどのようにリンクするかは、不明です。

それにしても、MCU名が、以前のR8CやRL78と同様複雑と感じるのは、私だけでしょうか?Synergyのスケーラブルなマイクロコントローラという特徴や優位点からすると、MCU選定はアプリ開発と同時で良いので、名前が複雑でも関係ないのかもしれません。

mbed OS 5.4.0のLチカ動作、LPCXpresso824-MAXで確認

四半期毎更新のIoTマイコン向けRTOS、ARM mbed OS 5の最新版5.4.0がリリースされました。このmbed OS 5を使って、ARM mbed開発環境でBlinky:Lチカサンプルプログラムを、LPCXpresso824-MAX評価ボードで動作確認しました。

ARM mbed開発環境

ARM mbed開発環境は、オンラインでコンパイル環境が提供されます。ブラウザさえあれば、統合開発環境:IDEをPCへインストールすること無しにソフト開発が可能です。コンパイル出力を、USB経由で評価ボードへダウンロードすれば、動作確認も簡単です。

ARM mbed開発環境
ARM mbed開発環境

mbed OS 5が動作するCortex-M0+評価ボードは、現在6種あります(全74種対応中)。

mbed OS 5.4.0のBlinkyサンプルとFreeRTOS v8の比較

この6種評価ボードに、FreeRTOSで使用中のLPCXpresso824-MAXもありますので、mbed OS 5でLチカサンプルプログラムを作成し、FreeRTOSのそれとソース比較しました。

RTOS Blinky Comparioson
RTOS Blinky Comparioson

mbed OS 5は、Cをオブジェクト指向へ拡張したC++言語で記述します。

ハード初期設定などは、評価ボード選定時に(別の個所で)済ませるので、記述ソースはFreeRTOSに比べて少なくなります。FreeRTOSのSuspendedは、mbed OS 5では、waitingに相当します。また、mbed OS 5 APIの方が、全般的に短く記述できます。

mbed開発環境は、直ぐに試せて取っ付き易い反面、ボード差や詳細なRTOS処理内容が隠される(見えない)気がしますが、本来のアプリ早期開発には、こちらの方が細かいことは気にせずに良いのでしょう。また、ボード間の移植性も高まります(次章CMSISを参照)。

両RTOSのLチカリソース使用量比較は、止めておきます。FreeRTOSの方はDebug出力で、一方、mbed OSの方は(多分)Release出力で条件が違うと思うからです。ARM mbed環境のデバッグ方法は、いろいろありそうなので、今後調査する予定です。

CMSIS

CMSIS Structure
CMSIS Structure

CMSIS:Cortex Microcontroller Software Interface Standardは、Cortex IPコア開発元のARM規定のソフトウエア規格で、図が全体像(v4版)です(シムシスまたはセムシイスと読むようです)。最上位アプリケーションと最下位Microcontrollerの間に、7種のCMSIS-xyzを規定します(CMSIS-RTOSなどCMSIS Software Packの緑色領域)。

CMSISの目的は、アプリ側(青緑領域)から見えるハードウエアCortexコア(灰色領域)の隠蔽です。ARM Cortexコアを使うMCU各社が、このCMSIS準拠でソフト開発すれば、各社間のアプリ移植問題は解決します。つまり、CMSIS準拠アプリならば、例えARMコア以外であっても、全てのMCUで同じアプリが動作するということです。

ARMは、Cortex IPコア販売でMCUハードウエアのデファクトスタンダードになりました。CMSISは、よりCortexコアを普及させ、さらにMCUソフトウエアのスタンダードを狙うARM戦略の1つでしょう。

本家本元のARMが開発するmbed OS 5は、CMSIS-RTOS準拠のAPIを持ちます。その結果が、Lチカソースにも表れていて、ボード移植性が高いのです。

弊社マイコンテンプレートも、図のCode Templateと同等!になれば、良いのですが…。

Bluetooth 5.0対応のIoT向けマイコンPSoC 6発表

3月14日のEE Times Japanに“Cypress、低消費でより強固なセキュリティ実現”という記事が掲載されました。この記事から、2017/4Q(10月~12月)量産予定のCypressの新しいIoT MCU、PSoC 6の特徴をまとめました。

PSoC 6の特徴

  • Cortex-M4+Cortex-M0+ のデュアルARMコア
  • プロセス技術にウルトラローパワー40nm SONOS採用(従来は130nm)した結果、Cortex-M0+:15uA/MHz、Cortex-M4:22uA/MHz、ローパワーモード動作電圧:1.1V、ウルトラローパワーモード動作電圧:0.9Vを実現。消費電流は、下表参照。
PSoC 6 Current consumption
PSoC 6 Current consumption(記事より)
  • ハードウエアでのセキュア データストレージ機能を備えたTEE : Trust Execution Environment実装
  • 暗号化アルゴリズム:楕円曲線暗号(ECC)、AES(Advanced Encryption Standard)、ハッシュ(SHA-1/2/3)ハードウエア実装
  • Bluetooth Low Energy 5.0対応
  • 評価ボード:PRoC 6 BLE Pioneer Kit(CY8CKIT-062-BLE)は75米ドル。
    弊社マイコンテンプレート使用中のPRoC 4 BLE Pioneer Kit (CY8CKIT-042-BLE)は49米ドルです、ディアルコアを考慮するとお買い得?

ハードによるセキュリティ機能はIoT MCUに必須

IoTマイコンにARMコアを使う場合、新しいCortex-M23/33コアによるアプローチと、従来コアにTEEなどのセキュリティ機能を付加したアプローチの2つがありそうです。CypressのPSoC 6は、後者です。

いずれも、ハッキングやウイルス対策に、ハードによるセキュリティ対策は必須です。私個人の感触では、どの程度の処理を MCUで行うかにもよりますが、たとえ専用セキュリティハードを追加したとしても、Cortex-M0/M0+/M23クラスの処理能力では、IoT通信制御だけでも重すぎるのではないかと思います。

そこで、より能力の高いCortex-M33やCortex-M3、M4を使うか、M0クラスとのディアルコア化も解として有力かもしれません(コア性能差は、コチラを参照、Cortex-Mxの特徴はコチラを参照)。

PSoC 6はBluetooth 5.0とデュアルコアでしたが、IoT通信規格の決定だけでなく、MCUアーキテクチャ、これら両方の観察がIoT MCU選択に必要になりそうです。

Cortex-M23+mbed OS 5=セキュアIoT MCU

2017年1月13日発行“ARMの最新アーキテクチャ「ARMv8-M」が目指す「セキュアMCU」とは”の記事を読むと、ARMコアの新ラインアップCortex-M23の中身:ARMv8-Mが備えるセキュリティの概要が分かります。IoT向けマイコン:MCU実現には、Cortex-M23にARM RTOSのmbed OS 5実装が必須になりそうです。

Cortex-M0, M0+ and M23
Cortex-M0, M0+ and M23(出典:ARM)

既存MCUの脆弱箇所

IoT MCUにはセキュリティ対策が必須との記載をよく見かけます。しかし、具体的にどこが脆弱箇所で、それはなにかを目にしたにはこの記事が初めてです。Cortex-M23の謳い文句は、セキュリティに対する深い知識、経験が無くても扱えることですが、これら脆弱箇所は深くない常識?!として知らなければいけなかもしれません。

従来MCUの脆弱箇所(記事より)
従来MCUの脆弱箇所(記事より)

ARMv8-Mは、これら脆弱箇所に対して3段構えハードウエアで多段防御しています。詳細は、記事を読んでください。

ハード+ソフトのARM IoTセキュリティ戦略

重要なのは、これらの防御にもかかわらず外部との通信セキィリティ、具体的には通信データの暗号化処理は、別途IP:Cryptocell-312か、または、mbed OS 5(TLS部分)が必要になる点です。低価格IoT向けMCUでは、IP追加よりもmbed OS 5実装の方が現実的ですので、結局、下記公式が成り立ちそうです。

低価格セキュアIoT MCU=Cortex-M23+mbed OS 5

mbed OSの構造(記事より)
mbed OSの構造(記事より)

FreeRTOSなどの他社RTOSをCortex-Mコアへ適用しようか検討している方は、要注意です。Runesasは、SynergyでThreadXを使いそうです。

また、記事にあるようにMCUコードをOTA:Over The Airで更新を行うとなると従来MCUとは別次元の開発スキルが要求されます。RTOSがサポートしてくれれば良いですが、Windowsでさえも更新失敗が(たまに)ありますから…。

セキュアIoT MCU向けハード/ソフトが揃いつつあります。中小規模の従来MCU開発を長くやってきた開発者側としては、IoT MCUの構造は、従来とかなり異なる感触を得ます。Qualcomm(NXP)あたりから、IoT MCUレファレンスデザインを早期にリリースしてくれれば、よりハッキリすると思います。

ARM Cortex-M23の特徴

ARMがセキュリティ機能を統合した新プロセッサ「Cortex-M23/M33」を発表記事から、Cortex-M23とCortex-M0/M0+の相違点、開発ポイントになりそうな箇所を抜粋し、特徴を考察します。

IoTデバイスのセキュリティ

“ネットワークに繋がるIoTデバイスには、セキュリティは必須”“
”IoTデバイスにセキュリティを普及させるには、セキュリティに対する経験が全くないエンジニアでも扱うことができる「1ドル以下のセキュアなMCU設計」が必要。このソリューションがARMv8-M TrustZone。“
”ARMv8-M命令セットは、必要最小限のベースラインセットと、浮動小数点演算などの拡張メインラインセットの2階層から成り、Cortex-M23は、ベースラインセットを実装“
”Cortex-M0/M0+は、ARMv6-M命令セット。Cortex-M23は、Cortex-M0/M0+後継の位置づけ。“

Baseline Instruction Set
Baseline Instruction Set(記事より)
Cortex-M0, M0+ and M23
Cortex-M0, M0+ and M23(記事より)

整数演算プロセサのCortex-M23

“性能レンジ:0.98MIPS/MHz、2.5CoreMark/MHz、Cortex-M0+比1.6~3.2%の性能向上”

Performance of Cortex-M
Performance of Cortex-M(記事より)

“Cortex-M23は、Cortex-M0/M0+と同じ2ステージパイプラインでミニマムパイプライニング”
“Cortex-M23は、フォンノイマンアーキテクチャ”

低コストかつ低電力にセキュリティを実装

“Cortex-MシリーズのTrustZoneは、以前からあるCortex-A向けのTrustZoneとは異なる”
“ARMv8-MのTrustZoneは、ハードウエアによるステイト遷移、セキュリティモニタソフト不要、ハードウエア遷移なのでレイテンシ少で、低速MCUでも実用的なセキュリティシステム”

※Cortex-M33に関しては、本ブログ対象ではないので、記事抜粋を割愛しております。

ハードによるセキュリティ機能実装メリット

パソコンを使う人なら、セキュリティ機能が必須で重要であることは、重々承知しています。また、その副作用として、本来の処理遂行に時たまジャマ?になることも…。性能が限られたMCUではなおさらでしょう。

イメージとしては、ウオッチドックタイマが近いと思います。開発初期やデバッグ中は機能を停止させ、最終版では、必ず動作させます。動作しても、ソフト性能がむやみに消費されることは殆どありません(というか、そのようにソフトを作ります)。

また、セキュリティに対する深い知識、経験が無くても扱えることも大歓迎です。要は、ネットワークに安全確実に繋がり、本来処理を、低価格低電力で実行できさえすれば、良いのですから。セキュリティは必須でも、あくまで付加サービスです。

Cortex-M23は、Cortex-M0/M0+の置換えヒット商品の予感がします。ARM Cortex-M0/M0+へ初挑戦する方も、既にCortex-M開発経験がある方も、楽しみなデバイスが出てきました。弊社マイコンテンプレートも現在はCortex-M0/M0+のみの対応ですが、Cortex-M23 MCU発売後は、対応する予定です。

ルネサスSynergyでCortex-M23サポート発表

ルネサスが、SynergyにARM Cortex-M23を加える予定を発表しました。Cortex-M23は、コチラを参照してください。

Synergy

Synergy Lineup
Synergy Lineup(記事より抜粋)

Synergyは、2015年10月に提供開始した新しいARM Cortex-M系の開発環境(2015年10月18日の記事も参照ください)。

他ベンダ―のARM Cortex-M開発環境は、EclipseベースIDEであるのに対して、少し異なる(Apple的な)アプローチを取っています。ガラパゴスと言われなければ良いな?!と思いますが…。後発なのでプラスアルファした結果だと思います。

このSynergyに先日記載したCortex-M23を将来的に加えると発表しました。IoTデバイスを狙うなら当然です。本ブログも注視していきます。

ARM Cortex-M0+準拠セキュリティ強化プロセサCortex-M23発表

Cortex-M Series Lineup
Cortex-M Series Lineup

ARMは、Cortex-M0+準拠でセキュリティ機能を強化したCortex-M23を発表しました。本ブログはこれまで、低価格低消費電力のCortex-M0/M0+コアを対象としてきましたが、これにCortex-M23も加えます。

Cortex-Mシリーズに於けるCortex-M0/M0+プロセサの位置付けは、コチラの記事をご覧ください。

Cortex-M23コア

ARMサイトによると、Cortex-M23は、IoTデバイスに必須と言われるハードによるセキュリティを強化したTrustZoneを搭載し、Cortex-M0+ソフト再利用が可能です。
IoT向きCortex-M0/M0+という位置付けだと思います。

Comparison of Cortex M23 and Cortex M0+
Comparison of Cortex M23 and Cortex M0+

Cortex-M23コアのMCUが登場すれば、本プログでフォローします。勿論、対応テンプレートも開発する予定です。