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コネクタで消えます。先ずは着手、あえて言えば被制御系の開発着手が先決です。

MCUパラメタ設定を改善したSTM32CubeMX version 5

2018年12月STマイクロエレクトロニクス(以下STM)のMCUコード生成ツール:STM32CubeMXがversion 5にメジャー更新しました。本稿は、このSTM32CubeMX version 5について主に旧version 4をご利用中の方を対象に説明します。初めてSTM32CubeMXを利用される方は、インストール方法などは旧version 4で示したコチラの関連投稿と同じですのでご覧ください。

STM32CubeMX version 5への更新方法

STM32CubeMXは、スタンドアロンアプリケーションとして動作させる場合と、Eclipse IDEのプラグインとして動作させる場合があります。更新が簡単なのは、先に説明するスタンドアロン版です。Eclipse IDEは、SW4STM32を例にプラグイン更新方法を示します。

スタンドアロン版STM32CubeMXの更新方法

デフォルト設定を変えてなければ、STM32CubeMX起動時に自動的に更新を検出しInstall Nowクリックで最新版がダウンロードされます。ダウンロード後、一旦STM32CubeMXを終了し、再起動でversion 5への更新が始まります。

STM32CubeMX version 5への更新(スタンドアロン版)
STM32CubeMX version 5への更新(スタンドアロン版)

スタンドアロンの場合は、更新開始時Access Errorが表示されることもあります。この時は、「管理者として実行」で更新プロセスが始まり、STM32CubeMX version 5の初期画面になります。

STM32CubeMX version 5初期画面
STM32CubeMX version 5初期画面

Eclipse IDE(SW4STM32)プラグイン版STM32CubeMXの更新方法

Eclipse IDEのプラグインでSTM32CubeMX機能を追加した場合は、旧プラグインを削除した後にversion 5プラグインをインストールします。SW4STM32のプラグイン削除は、Help>About EclipseからInstallation Detailsボタンをクリックし、Installed Softwareタブから旧STM32CubeMXを選択、Uninstallまたは、Updateクリックで行います。

旧版STM32CubeMXプラグイン削除
旧版STM32CubeMXプラグイン削除

Uninstallの方が確実です。削除後、新しいSTM32CubeMX version 5プラグインを再インストールすれば、スタンドアロンと同じ初期画面が示されます。SW4STM32のUpdate checkでは、STM32CubeMXの更新を検出できませんので、手動でプラグイン削除、更新された新プラグインのインストールが必要です。

STM32CubeMX version 5改善点

version 5のユーザマニュアルUM1718 Rev 27から、以下の点がversion 4から改善されました。
関連投稿:MCU更新情報取得方法と差分検出ツール、の “2PDF資料を比較するDiffPDF” の章参照

・MCUパラメタ設定にマルチパネルGUI採用(UM1718、5章)
・CMSIS-Packサポート(UM1718、7章)
・X-Cube-BLE1ソフトウェアパック(UM1718、14章)
・ST-TouchGFX追加(UM1718、17章)

一言で言うと、5章:カラフルになったパラメタ設定、7章:CMSIS-Pack追加が可能、14章と17章:2チュートリアル追加です。CMSIS-Packとチュートリアルは、必要に応じて理解すれば良いでしょう。

そこで、基本操作の5章STM32CubeMX version 5のパラメタ設定を、弊社STM32F0シンプルテンプレートで用いたSTM32CubeMX version 4プロジェクトファイルを使って説明します。
※STM32F0シンプルテンプレート(¥1,000販売中)をご購入頂いてない方のために、上記プロジェクトファイルのみをコチラから無料でダウンロードできます(zipファイルですので解凍してご利用ください)。

マルチパネルGUIによるMCUパラメタ設定改善の実例

Open Existing Projectsで上記STM32F0シンプルテンプレートプロジェクトファイル:F0SimpleTemplate.iocを選択すると、旧versionで作成されていること、FWも更新されていて、最新環境へ更新(Migrate)するか、FWはそのままSTM32CubeMXのみ更新(Continue)かの選択肢が表示されます。
※MigrateとContinueの差は後述します。

旧版プロジェクトファイルを開いた時のメッセージ
旧版プロジェクトファイルを開いた時のメッセージ

今回は、Migrateを選択すると、見慣れたPinout & Configuration画面が現れます。

STM32F0シンプルテンプレートのプロジェクトを開いた画面
STM32F0シンプルテンプレートのプロジェクトをversion 5で開いた画面

Connectivity >を開くと、STM32F0シンプルテンプレートで使用中USART2の各種パラメタ設定値がマルチパネルで表示されます。

STM32F0シンプルテンプレートプロジェクトのUSART2マルチパネル画面
STM32F0シンプルテンプレートプロジェクトのUSART2マルチパネル画面

このマルチパネル表示がversion 5で最も改善された機能です。従来版では、複数タブで分離表示されていた設定が、1画面のユーザインタフェース:UIに集約されました。より解りやすく、より簡単にMCUパラメタ設定ができます。

その他の機能は、カラフルな見た目になってはいますが、旧versionと殆ど同じと考えて良いと思います(開発元には失礼ですが…😅)。不明な点は、HelpでUM1718が直に表示されるので調べられます。

また、販売中の弊社STM32Fxテンプレート付属説明資料のSTM32CubeMXは、version 4で説明しておりますが、この程度の改版ならば、説明資料をversion 5用に作り直さなくても、ご購入者様に内容をご理解頂けると思います。

旧版プロジェクトファイルを開いた時のMigrateとContinueの差

STM32CubeMXは、UIをつかさどる共通部分と、STM32MCUファミリ毎の個別ファームウエア:FW部分の2つから構成されています。本稿は、UI共通部分の更新を説明しました。FWもバグとりや、ファミリへの新MCU追加などで更新されます。周辺回路の初期化CコードやHAL:Hardware Abstraction Layer library 、LL: Low-Layer library利用のAPI生成は、FW部分が担います。

Migrateは、このUIとFWを同時に最新版へ更新します。一方、Continueは、UI部分のみ更新しFWは既存のままです(安全側更新とも言えます)。FW更新で既製ソフトウェアへ悪影響がでる場合には、Continueを選択することもあるでしょう。しかし、基本的にはUI、FWともに最新版へ更新するMigrateが本来の更新方法です。

万一FW更新でトラブルが発生した時は、デフォルトでSTM32Cube>Repositoryフォルダに新旧FWがzipファイルで保存されていますので、FWのみ元に戻すことも容易です。

*  *  *

Postscript:24日午前3時~午前4時5分に実施されたSTM32G0 and STM32CubeMX 5.0ウェブナーどうでしたか? 解りやすいスライドが豊富で、STM32G0の良さがより理解できました。全機能無償のKeil uVision5対象デバイスにSTM32L0、STM32F0とSTM32G0も加わりました。STM32CubeMX 5.0と評価ボードNUCLEO-G071RBを使ったLチカコード生成も解りやすかったですね😃。
※タイムリーなことに、1月25日STM公式ブログ上で上記一連の処理がYouTubeに投稿されました。

さて、ウェブナー参加で目から鱗が落ちたのは、STM32G0の広い応用範囲と低電力動作を活かすには、デバイス間移植に優れるHAL APIよりも、デバイス最適化のLL API利用が適してかもしれない点です。
HAL利用のSTM32Fxテンプレートとは異なるアプローチ、例えば、STM32Gxテンプレートの新開発が必要になりそうです👍。

関連投稿:HALとLLの違いは、STM32CubeMXの使い方、“STM32CubeMXの2種ドライバライブラリ”の章参照
関連投稿:STM32Fxテンプレートのアプローチは、STM32評価ボードNUCLEO-F072RB選定理由参照

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年も引き続きよろしくお願いいたします。

STM新汎用MCU STM32G0

2018年12月4日、STマイクロエレクトロニクス(以下STM)の公式ブログで新汎用MCU STM32G0、Cortex-M0+/64MHzを発表しました。以下の特徴があります。
※汎用=メインストリームと本稿では考えます。

新汎用STM32G0、Cortex-M0+/64MHz、メインストリーム90nmの特徴

STM32メインストリームMCU
STM32メインストリームMCU:STM32FxとSTM32G0の違い(出典:STM32 Mainstream)
  • 「メインストリーム初の90nmプロセスMCU」:従来メインストリームSTM32F0は180nmプロセス
  • 「ハイブリッド」:STM32L4(90nmプロセス)の低消費電力とSTM32F0のメインストリームの両方をハイブリッド
  • 「モアIO」:64ピンパッケージSTM32F071比較でIOピン9本増加、48ピンでもIOピン7本増加
  • 「単一電源供給」:PCBパターン設計が容易
  • 「セキュリティハード内蔵/非内蔵」:128/256ビットAES、セキュアブート、乱数発生器、Memory Protection Unit (MPU)
  • 「USB-C」: IPによりUSB-Type-C可能
  • NUCLEO-G071RB board」:低価格評価ボード提供中、「STM32G081B-EVAL board」:$382
STM32G0ラインナップ (出典:STM公式ブログ)
供給中の3種製品とSTM32G0ラインナップ (出典:STM公式ブログ)
STM32G0 Product Lines(出典:STM32G0 Serie Presentation)
STM32G0 Product Linesから3種製品の違いが解る(出典:STM32G0 Series Presentation)

STM32G0オンライントレーニング

データシートよりも解りやすいSTM32G0オンライントレーニング資料が多数あります(要ログイン)。

例えば、以下のような興味深い情報が得られます。各数ページの英文スライド形式ですので、STM32G0以外のMCUを使用中の方でも、チョットした空き時間に読めます。

  • STM32G0 Series Presentation:内蔵ハードウェアによりValue/Access/Access & Encryptionの3種製品特徴
  • ARM Cortex-M0+ (Core):Cortex-M0とM0+の差、Memory Protection Unit 説明
  • Safety:安全基準とその実現方法
  • Random Number Generator (RNG):アナログノイズに基づいた32ビット乱数発生
  • STM32G0 Boards:NUCLEO-G071RB board解説

STM32CubeMX V5.0.0

STM32G0のコード生成は、STM32CubeMX V5.0.0からサポートされました。

V4までと同じSW4STM32、TrueSTUDIO、両方のIDEで使えます。STM32CubeMX V5が提供するMCUファームパッケージで、本ブログ関連を抜粋したのが下表です。

STM32CubeMX V5.0.0提供MCUファームウェア版数
対象MCU firmware(評価ボード、STM32G0ボード暫定) 最新Version
STM32F1(STM32F103RB、Cortex-M3/64MHz V1.7.0
STM32F0(STM32F072RB、Cortex-M0/48MHz V1.9.0
STM32G0(V5で新設、STM32G071RB、Cortex-M0+/64MHz V1.0.0

STM32Fxテンプレートでも使用中のHAL(Hardware Abstraction Layer)ライブラリでコード生成すれば、STM32F1、STM32F0とSTM32G0間で、流用/応用が容易なソフトウェア開発ができると思います。

まとめ

新発売のSTM32G0は、90nmプロセス初のメインストリーム汎用MCUです。一般的に製造プロセスを微細化すれば、動作クロックが高速になり電力消費も低下します。さらに、STM32G0は、Cortex-M0より性能が向上したCortex-M0+コアの採用により、Cortex-M3のSTM32F1クラスに並ぶ高性能と超低消費電力動作をハイブリッドした新汎用MCUと言えます。

周辺回路では、IoTで懸念されるセキュリティ対策をハードウェアで実施、IOピン数増加、PCB化容易、USB-Type Cインタフェース提供など、各種IoTエッジMCU要求を満たす十分な魅力を持つMCUです。

競合するライバルMCUは、Cortex-M0+のNXP S32K116/S32K118(2018/7発売)などが考えられます。

関連投稿:NXP新汎用MCU S32K1

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を引き続き調査する予定です。

Cortex-M0/M0+/M3比較とコア選択

デバイスが多く選択に迷う方も多いマイコン:MCU。周辺ハードウェアも異なるので、最初のMCUコア選択を誤ると、最悪の場合、開発のし直しなどに繋がることもあります。

本稿は、STマイクロエレクトロニクスのSTM32マイコンマンスリー・アップデート10月号P8のトレーニング資料、STM32L0(Cortex-M0+)掲載のARM Cortex-M0/M0+/M3の比較資料を使ってMCUコア選択方法についての私案を示します。

STM32L0(Cortex-M0+)トレーニング資料

各種STM32MCU(Cortex-Mx)毎の非常に良くできた日本語のテクニカルスライド資料が入手できます。例えばSTM32L0(Cortex-M0+)は194ページあり、1ページ3分で説明したとしても、約10時間かかる量です。他のMCU(Cortex-Mx)資料も同様です。

開発に使うMCUが決まっている場合には、当該資料に目を通しておくと、データシート読むよりも解りやすいと思います。しかし、Cortex-Mxコア差を理解していない場合や、開発機器の将来的な機能拡張や横展開等を考慮すると、どのMCU(Cortex-Mx)を現状開発に使うかは重要検討項目です。

ここで紹介するSTM32L0(Cortex-M0+)トレーニング資料には、Cortex-M0+特徴説明のため、通常データシートには記載が無いCortex-M0やCortex-M3との違いも記載されています。

そこで、STMマイコンのみでなく一般的なARMコアのMCU選択に重要な情報としても使えるこの重要情報ページを資料から抜き出しました。

Cortex-M0/M0+/M3比較

バイナリ上位互換性

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

先ず、P22のCortex-Mプロセッサのバイナリ互換性です。この図は、Cortex-Mxコアの命令セットが、xが大きくなる方向には、上位互換であることを示しています(ただし再コンパイル推薦)。逆に、xが小さくなる方向は、再コーディングが必要です。

つまり、Cortex-M0ソースコードは、M0+/M3/M4へも使えるのです。Cortex-Mxで拡張された命令セットの特徴を一言で示したのが、四角で囲まれた文章です(Cortex-M3なら、“高度なデータ処理、ビットフィールドマニピュレーション”)。
さらに、STM32MCU内臓周辺ハードウェアは、各シリーズで完全互換なので、同じ周辺ハードウェア制御ソースコードはそのまま使えます。

もちろんxが大きくなるにつれコア性能も向上します。しかし、よりCortex-Mx(x=+/3/4)らしい性能を引き出するなら、この四角文章のコーディングに力点を置けば、それに即した命令が用意されているので筋が良い性能向上が期待できる訳です。

超低電力動作Cortex-M0+、39%高性能Cortex-M3

P22ではCortex-M0とM0+の違いが解りません。そこで、P19のCortex-M0/0+/3機能セット比較を見るとCortex-M0+が、Cortex-M0とCortex-M3の良いとこ取り、中間的なことが解ります。また、Cortex-M3が、M0比39%高性能だということも解ります。

Cortex-M0_M0+_M3セット比較(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0_M0+_M3セット比較(出典:STM32L0(Cortex-M0+)トレーニング資料)

具体的なCortex-M0+とCortex-M0との差は、P20が解りやすいです。Cortex-M0+は、性能向上より30%もの低消費動作を重視しています。また、1サイクルの高速GPIOも特徴です。Cortex-M0+は、M0の性能を活かしつつより既存8/16ビットMCU市場の置換えにチューニングしたからです。

Cortex-M0とCortex-M0+の比較(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0とCortex-M0+の比較(出典:STM32L0(Cortex-M0+)トレーニング資料)

さらにP21には、低電力化に寄与した2段になったパイプラインも示されています。Cortex-M0/M0+は、今年初めから話題になっている投機的実行機能の脆弱性もありません。

Cortex-M0とCortex-M0+のブランチ動作(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0とCortex-M0+のブランチ動作(出典:STM32L0(Cortex-M0+)トレーニング資料)

関連投稿:Cortex-Mシリーズは、投機的実行機能の脆弱性はセーフ

共通動作モード:Sleep

Cortex-M0とCortex-M0+の低消費電力モード(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0とCortex-M0+の低消費電力モード(出典:STM32L0(Cortex-M0+)トレーニング資料)

低電力化は、Cortex-M0+で追加された様々な動作モードで実現します。この一覧がP70です。つまり、Cortex-M0+らしさは、M0にない動作モード、LP RUNやLP sleep (Regulator in LP mode)で実現できるのです。

逆に、SleepやSTANBYの動作モードは、Cortex-M0/M0+で共通です。さらに、Cortex-M3でも、アーキテクチャが異なるので数値は異なりますが、SleepとSTANBY動作モードはM0/M0+と共通です。

ここまでのまとめ:Cortex-M0/M0+/M3の特徴

Cortex-M0/M0+/M3の特徴・違いを一言で示したのが、下表です(関連投稿より抜粋)。

各コアの特徴は、MCUアーキテクチャや命令セットから生じます。但し、M0/M0+/M3でバイナリ上位互換性があるので、全コアで共通の動作モードがあることも理解できたと思います。

ARM Cortex-Mx機種 一言で表すと…
Cortex-M0+

超低消費電力ハイパフォーマンスマイコン

Cortex-M0

低消費電力マイコン

Cortex-M3

汎用マイコン

Cortex-M4

デジタル信号制御アプリケーション用マイコン

関連投稿:ARMコア利用メリットの評価

MCUコア選択方法

  1. Cortex-M0またはCortex-M0+コアでプロトタイプ開発を行い、性能不足が懸念されるならCortex-M3コア、さらなる消費電力低下を狙うならCortex-M0+コアを実開発で選択。
    プロトタイプ開発に用いるソースコードは、そのまま実開発にも使えるように、全コアで共通の動作モードで開発。
  2. 早期にプロトタイプ開発を実開発に近い形で作成するために、弊社マイコンテンプレートを利用。

1.は、本稿で示した内容を基に示したMCUコア選択指針です。低消費電力がトレンドですので、プロトタイプ開発の段階から超低消費電力のCortex-M0+を使うのも良いと思います。しかし、初めから超低消費動作モードを使うのでなく、全コアで共通動作モードでの開発をお勧めします。

理由は、万一Cortex-M0+で性能不足が懸念される時にCortex-M3へも使えるソースコードにするためです。プロトタイプ開発の段階では、ソースコードの実開発流用性と実開発の評価を目的にすべきです。チューニングは、実開発段階で行えばリクスも少なくなるでしょう。

2.は、プロトタイプ開発実現手段の提案です。マイコンテンプレートは、複数のサンプルソフトを結合して1つにできます。実開発に使える(近い)サンプルソフトさえ見つけられれば、それらをバラック的にまとめて動作確認できるのです。これにより、当該コアのプロトタイプ評価が早期にできます。

また、マイコンテンプレートで使用したSTM32評価ボードは、ボードレベルでピンコンパチなのでCortex-M0/M0+/M3への変更も簡単です。

関連投稿:マイコンテンプレートを使ったアプリケーション開発手順

MCUコア選択の注意事項:重要度評価

ARMコア向けの弊社マイコンテンプレートは、全てCortex-M0/M0+/M3共通の動作モードで開発しています。
その理由は、テンプレートという性質・性格もありますが、本稿で示した他のARMコアへのソースコード流用性が高いからです。試しに開発したソースコードであっても、無駄にはならないのです。

最後に、P184、P185に示されたCortex-M0(STM32F0)とCortex-M3(STM32L1)、Cortex-M0+(STM32L0)のADCの差分を示します。

Cortex-M0/M0+/M3のADC比較1(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0/M0+/M3のADC比較1(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0/M0+/M3のADC比較2(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0/M0+/M3のADC比較2(出典:STM32L0(Cortex-M0+)トレーニング資料)

STM32MCU内臓周辺ハードウェアは、各シリーズで完全互換と先に言いましたが、スペックを細かく見るとこのように異なります。

このハードウェア差を吸収するのが、STM32CubeMXで提供されるHAL(Hardware Abstraction Layer)です。つまり、STMマイコンを使うには、コア選択も重要ですが、STM32CubeMX活用も同じように重要だということです。もちろん、STM32FxマイコンテンプレートもSTM32CubeMXを使っています。

ARMコアは、バイナリ上位互換ができる優れたMCUコアです。MCUベンダーは、同じARMコアを採用していますが、自社のMCU周辺ハードウェアレベルにまで上位互換やその高性能を発揮できるような様々な工夫・ツールを提供しています。

開発MCUを選択する時には、コア選択以外にも多くの選択肢があり迷うこともあるでしょう。多くの場合、Core-M0/M0+/M3などの汎用MCUコアでプロトタイプ開発を行えば、各選択肢の重要度評価もできます。スペックだけで闇雲に選択するよりも、実務的・工学的な方法だと思います。

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

本ブログは、マイコン: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更新中断、μT-Kernal、IoTマイコン

Windows 10 1809更新によりユーザファイルが消失するトラブルが発生しています。このためMicrosoftは、Windows 10 1809への更新を一時中断しました。

Windows 10更新でマイドキュメントフォルダ消失!

消失フォルダは、よりによってC:\User\[user name]\Documentsだそうです。マイコンIDEのプロジェクトファイルをマイドキュメントフォルダへ設定している方(私がそうです)は、1809更新を待った方が良いかもしれません。

幸い私の3台のPCは、全て問題なく1809更新に成功し、Documentsフォルダも無事でした。

よく言われる最悪を避けるには、個人データのバックアップです。しかし、Windows機能更新時に、最も守るべきユーザデータを壊す/消すという不具合は、OSとしては許されません。Fast/Slow リングで検証できなかったのでしょうか?

μT-Kernal

OSと言えば、マイコン向けのリアルタイムOS:μT-Kernalの解説がトランジスタ技術2018年10月号の組込みOS入門という別冊にあり、第2章~第6章にリアルタイムOS(RTOS)の説明があります。

また、トロンフォーラムへの登録が必要ですがルネサスRL78/G14向けにポーティングしたμT-Kernalを無料でダウンロードできます。

※μT-Kernalは、ITRONベースに2003年公開の32ビットマイコン向けオープン・ソースRTOS。

本ブログではこれまでRTOSとしてFreeRTOSを紹介してきました。μT-Kernalと比較するとより理解が進むと思います。

関連投稿:マイコンRTOS習得

IoTマイコンとRTOS

IoTマイコンにRTOSを使うと、今回のWindows 10のようなトラブルを招く可能性が生じます。ただIoT通信手段が何になるにせよ、高度なセキュリティや公共リソース利用のための通信処理をマイコンで行うには、RTOSが必要になると思います。

この状況ならいっそのことIoTマイコンには、Cortex-M4(または同等クラス)とCortex-M0/M0+マルチコアを導入し、Cortex-M4でIoT関連処理、Cortex-M0/M0+で従来のMCU処理に2分割、さらにIoT関連処理はMCUベンダーが全て無償提供してくれればIoT MCUの爆発的普及が進むと思います。

つまり、Cortex-M4のIoT関連処理がWindows 10に相当する訳です。これならIoT通信手段やセキュリティが変わってもCortex-M4部分のソフトウェアをOTA(Over The Air)で変えれば対応できます。我々開発者は、本来のマイコン処理に集中できます。
理想的な空想ですがね…。

関連投稿:OTAについてIoT端末の脆弱性対応はOTA:Over The Air更新が必須の章参照

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では正常に動作しました。