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テンプレートへ加えるつもりです。

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

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

ルネサスのIDT買収とリスク分散

ルネサスエレクトロニクス(以下ルネサス)が米)IDT買収を発表したことは9月13日投稿済みです。
この買収にはいろいろな憶測が報じられています。これらをまとめ、技術者個人でのリスク分散を考えます。

ルネサスのIDT買収関連記事(2018年9月28日現在)

どの記事もルネサスのIDT買収を、社長兼CEO呉文精氏コメントのように肯定的には捉えていません。むしろリスクの方が大きく、買収が成功するかを危ぶむ声さえあります。

IDT技術のルネサス車載MCUへの応用/流用よりも、むしろNVIDAやインテルなど大手半導体メーカーの自動車半導体市場介入に対する衝突回避/防衛が真の買収目的だ、が各記事の主張です。

私は記事内容から、なぜ回避や防衛ができるのかはイマイチ理解できません。ただ巨大な買収額が、経営的な足かせとなる可能性があることは解ります。半導体業界の巨額買収は、ルネサスに限った話ではありません。

かなり昔、デバイス間通信にIDTの2ポートRAMを使った経験があり便利でした。IDT買収の日の丸MCUメーカー最後の生き残り:ルネサスエレクトロニクスには頑張ってほしいと思います。

技術者個人のリクス分散必要性

動きの激しいMCU半導体製品を使う技術者個人が生き残るには、リスク分散が必要だと思います。

例えば、業務で扱うMCU以外の開発経験を持つのはいかがでしょう。万一の際にも通用する技術を個人で準備しておくのです。その際には、手軽で安価、しかも実践応用もできることが重要です。

弊社マイコンテンプレートは、下記大手4メーカー6品種の汎用MCUに対応中です(各1000円税込)。

  • ルネサス)RL78/G1xテンプレート
  • NXPセミコンダクターズ)LPC8xxテンプレート
  • NXPセミコンダクターズ)LPC111xテンプレート
  • NXPセミコンダクターズ)Kinetis Eテンプレート
  • サイプレス・セミコンダクター)PSoC 4/PSoC 4 BLE/PRoCテンプレート
  • STマイクロエレクトロニクス)STM32Fxテンプレート
    ※各テンプレートに紹介ページあり

テンプレートを使うと新しいMCU開発を実践、習得できます。経験が有るのと無いのとでは雲泥の差です。
リクス分散の1方法としてご検討ください。

MCU統合開発環境の後方互換性検証

MCU統合開発環境は、後方互換が重要です。数年前に開発したプロジェクトを改良・改版する際には、最新の開発環境(IDE)でも開発当時と同じ動作が求められるからです。

ベンダー各社もこの点に留意してIDE改版を行っているハズです。ただ、リリースノートにも具体的な互換性説明などは見当たりません。そこで、MCU最新IDEの後方互換性を検証します。

本稿は、ルネサスエレクトロニクス(以下、ルネサス)の最新IDE:CS+に、弊社2015年開発のRL78/G1xテンプレートプロジェクトを適用し、発生するメッセージなどを示し、開発当時と同じ動作をするかを確認します。もちろん、これはあくまでも一例にすぎませんが、開発中にIDE更新に遭遇した際などの安心材料になれば幸いです。

ルネサス統合開発環境CS+

2018年9月最新ルネサスIDE CS+は、Ver.: V7.00.00(2018/07/20リリース)です。CS+は、業界標準のEclipseベースIDEではなくルネサス独自開発のIDEです。

好都合なことにWindows 10 1803をクリーンインストールしたので、まっさらなWindows 10へ最新CS+をインストールした条件で検証ができます(1803クリーンインストール顛末はコチラを参照)。

CS+ダウンロードサイトでカテゴリ:無償評価版を選び、分割ダウンロードか一括、CS+ for CCかCS+ for CA,CX のどれかのパッケージをダウンロード後、実行すれば必要なツール全てがWindowsへインストールされます。

統合開発環境CS+パッケージ
統合開発環境CS+パッケージ(一括ダウンロードの例)

関連投稿:CS+ for CCとCS+ for CA,CXの違い

既存プロジェクトを新しいCS+で開いた時のメッセージ

以下CS+ for CCの例で示しますが、CS+ for CA,CXでも同じです。

既存のプロジェクトを開く
既存のプロジェクトを開く。BB-RL78G13-64.mtpjをクリック。

CS+ for CCを起動し、既存のプロジェクトを開くでRL78/G1xテンプレートプロジェクトのCC-RLを選択すると、最初に警告メッセージが表示され、出力パネルにその内容、プロジェクト開発当時と新しいCS+での「プロジェクトの差分情報」が表示されます。

既存プロジェクトを開いた時に表示されるメッセージとその内容
既存プロジェクトを開いた時に表示されるメッセージとその内容

※“プロジェクト差分情報”は、新規CS+をインストールした時だけでなく、プロジェクト開発中にCS+更新に遭遇した際にも表示されます。

黒字の “デバイス・ファイルが更新……”は、CS+がサポートするMCUデバイスが増えたために発生します。あまり気にする必要はありません。

青字の “プロジェクト差分情報”は、新しいCS+を用いた結果、既存プロジェクトに生じた差分、影響のことです。

例えば、CS+のCC-RLコンパイラが改良・改版され、開発当時のコンパイル・オプションには無かった [間接参照を1バイト単位で行う] 選択肢が発生し、これに関しては、「いいえ」を選択したことなどが解ります。

これらの選択は、基本的に既存プロジェクトに影響が無い(少ない)方をデフォルトとしてCS+が選びます。このデフォルト選択が、CS+の後方互換を実現している鍵です。

後方互換の検証:プロジェクトビルド成功と評価ボードの動作確認

そのままビルド(B)>ビルド・プロジェクト(B)を実行すると、サブプロジェクトを含め全プロジェクトがリビルドされます。出力パネル青字は警告:Warring、赤字はエラー:Errorを示します。

全プロジェクトビルド結果
全プロジェクトビルド結果

出力パネルに赤字が出るのは問題ですが、青字内容に問題がなければ、新規CS+でもプロジェクトが正常にビルドできたことを示します。

そこで、ターゲット評価ボードへビルド出力をダウンロード、既存プロジェクト開発当時の動作確認ができ、最新CS+で後方互換が検証できました。

CS+の便利機能

ルネサスCS+には、プロジェクトと開発ツールをパックして保存する便利な機能があります。

CS+の便利機能
CS+の便利機能。プロジェクト開発時の環境を丸ごとそのまま保存できる。

この開発ツールとは、使用中の統合開発環境のことで、文字通りプロジェクトとCS+、デバイス・ファイル情報などのプロジェクト開発時の環境を丸ごとそのまま保存し、復元もできます。
但し、当然OS:Windowsまでは保存しなので、年2回の大規模OS更新やWindows 7サービス終了などには開発者自ら対応する必要があります。

後方互換とプロジェクト開発方針

IDEの後方互換は、開発者にとっては当然のことです。ただし、改良・改版された最新コンパイラ性能を、既存プロジェクトで最大限引き出しているかは疑問を持つ方もいるでしょう。個人的には、この点について以下のように考えます。

  • プロジェクト開発時、使用する統合開発環境のコンパイル・オプションは、最適化も含めてデフォルト設定で開発。
  • サイズ優先や速度優先の設定は、開発の最終段階で必要性がある時にのみ最小限設定し、その設定をソースに明記。

例えば、弊社マイコンテンプレートは、1つを除いて全て上記方針で開発しています。除いた1点とは、NXPのLPC8xxテンプレートのLPC810(ROM 4KB/RAM 1KB)の小ROMデバイスの1段最適化のみです。テンプレート(ひな形)の性質上、いろいろなプロジェクトへの適応性が高いのもこの方針の理由です。また、デフォルト設定と最小限設定なので、結果的に最新統合開発環境への後方互換も取りやすいと言えます。

経験上、コンパイル・オプションを操作して開発したトリッキーなプロジェクトは、設計段階(MCU選択やプログラム構成)の失敗だと考えています。個人的には、デフォルト設定で十分余裕(50%程度)がある設計がお勧めです。これを確かめるためにも、プロトタイプ開発は重要だというのが私の考えです。

MCU統合開発環境、後方互換のまとめ

MCU統合開発環境(IDE)とWindows環境の年間メジャー更新スケジュールは下図です(2018年7月9日投稿の再掲)。

主要開発環境の年間更新スケジュール
主要開発環境の年間更新スケジュール

プロジェクト開発中にこれら更新に遭遇することは少なくないでしょう。本稿は、ルネサスCS+を例に最新IDEの後方互換性を確認しました。EclipseベースのIDEでも同様です。まとめると、

  • IDE更新後、最初に既存プロジェクトを開く時の差分情報で、プロジェクトに生じた差分、影響を分析し、後方互換を検証
  • コンパイル・オプションはデフォルト設定が、更新された統合開発環境の後方互換を取りやすい

ことを示しました。

ARMが考えるIoTの3課題と4施策

ARMはMCUコア開発会社ですが、製造はしません。開発したコアのライセンスをMCUメーカーへ供給し、このコアに自社周辺回路を実装し各メーカーがMCUデバイスを製造販売します。コア供給元のARMが考えるIoTの3つの課題記事を紹介します。

ARMの課題と施策

本ブログ掲載MCUでは、NXP、STM、CypressがARMコア、ルネサスがNon ARMコアです。いまやARMコアがMCU世界のデファクトスタンダードです。つまりARMの考えは、MCUメーカー各社に多大な影響を与えると言うことです。

ARMが考えるIoTの課題が、「デバイスの多様性」、「エンドツーエンドセキュリティ」、「データの適切な利用」の3つです。そしてこれら課題に対して、「Cortex」、「Mbed OS」、「Mbed Cloud」、「PSA:Platform Security Architecture」の4つの施策で対応します。
課題と施策の内容は、Arm、IoTプラットフォーム「Arm Mbed Platform」アピールの記事に説明されています。

上記記事で、最も印象に残ったのが、ARM)ディペッシュ・パテル氏の下記コメントです。

「専門知識がないユーザーでも、デバイスメーカーが提供するデバイスを購入して、Mbed OSを使えばすぐに利用できる。重要なことはシンプルであることだ。」

MCU開発者の課題と施策

さて、これらARMの施策に対してエンドポイントMCUソフトウェア開発者である我々の課題と施策は何でしょうか?

ARMの課題「デバイス多様性」や「セキュリティ」には、Cortexコア習熟や、セキュリティ理解などが必要です。また、最近更新が盛んなMbed OS習得も加わるでしょう。

記事記載の市場規模は大きくなっても、開発時間はこれまで以上に短く、また、顧客要求も多様化、複雑化するハズです。

従って、従来のような開発方法よりむしろ、スピード重視のプロトタイピング開発が求められると思います。これには、既存ライブラリやサンプルソフト流用、活用技術を磨く必要があるでしょう。前々から言われるソフトウェアの部品化開発手法です。

流用する中身に多少不明な点があっても気にすることはありません。パテル氏コメントの「シンプルであること」を常に念頭に置きながら開発を進めることが重要です。シンプルであれば、様々な状況変化へも対応できます。開発が終わった時に振り返ると、不明内容はおぼろげながら見えるものです。

具体的な手段

弊社は、プロトタイピング開発への具体的な実現手段として、ARMコアのNXP、STM、Cypress各社、およびNon ARMコアのルネサスに対してマイコンテンプレートを提供中です。テンプレートと評価ボードを使えば、早期開発着手と汎用開発部分の使いまわしも簡単で、プロトタイピング開発に最適です。

汎用処理が出来上がったテンプレートへ、顧客要求実現の開発部分を組込めばソフトウェア全体がほぼ仕上がる仕組みです。

また、Mbed OSの仲間であるFreeRTOSを例に、マイコンRTOS習得ページもテンプレートサイトに掲載しております。ご活用ください。

IoTデバイス向け高速軽量改ざん検出技術

NECが、IoTデバイス向け軽量改ざん検出技術を開発しました。以下の特徴があります。

  1. 機器動作に影響を与えない⾼速改ざん検知(2KB実装サイズ機能を、約6msecで検査)
  2. 改ざん検知機能⾃体の保護と軽量実装の両⽴(Cortex-M23/33のTrustZone活用、4KB以内で実装)

TrustZoneのSecure World

セキュリティ強化のARMv8-MプロセッサCortex-M23とCortex-M33には、TrustZoneと呼ぶメモリ保護領域:Secure Worldの作成機能があります。このSecure Worldがあることが前提条件です。

2KBサイズ機能を6msecで検査できるのは、検査領域の絞り込みと実行コードのみのシンプルな監視方法のためで、遅延がゆるされない搬送ロボットなどのIoT機器にも適用できるそうです。

高速改ざん検出(出典:NECサイト)
高速改ざん検出。2KB実装サイズ機能を、約6msecで検査可能。(出典:NECサイト)

Secure World内へ、改ざん検出機能、ホワイトリスト、サーバ通知機能合わせて4KB以内に実装できるので、メモリ容量が少ないIoT機器にも適用できるそうです。

改ざん検知機能⾃体の保護と軽量実装(出典:NECサイト)
改ざん検知機能⾃体の保護と軽量実装。改ざん検出機能、ホワイトリスト、サーバ通知機能合わせて4KB以内に実装できる。(出典:NECサイト)

高速かつ軽量のため、低電力消費で24時間監視とリアルタイム改ざん検出の結果、IoT機器の信頼性を高めることができます。

ARM Cortex-M23/33のTrustZoneを活かしたセキュリティ強化機能です。検査機能限定の実装方法などは、全てのMCUソフトウェア開発へも応用できます。

Secure World領域があってこその技術ですが、TrustZone無しのCortex-M0/M0+/M3へも使えれば嬉しいです。Intelは、古いCPU向けのSpectre対策パッチは提供しないそうですが、既に稼働済みのCortex-M0/M0+/M3機器に向けて、せめてものセキュリティ強化策として使えるかもしれません。

関連投稿

ARM Cortex-M23の特徴

Eclipse IDEベース統合開発環境のプロジェクトImport、Renameの方法

統合開発環境のデファクトスタンダードがEclipse IDE。本ブログ対象ベンダのNXP)MCUXpresso IDE、ルネサス)e2studio、Cypress)PSoC Creator、STM)SW4STM32など全てこのEclipse IDEをベースとした統合開発環境です。

ベンダやマイコンが変わっても殆ど同じ操作でエディットやデバッグができるので、慣れが早く、本来のソフトウェア開発に集中できます。但し、オープンソース開発なので、毎年機能追加や変更があり、2018年は6月にバージョン4.8、コードネームPhoton(光子の意味)への改版が予定されています。

本投稿は、2017年版Eclipse IDEバージョン4.7、Oxygenベースの各社IDEプロジェクトインポート、リネームの方法を説明します。
弊社マイコンテンプレートを使ってソフトウェア開発をする時、これらの操作を知っているとテンプレート:ひな型活用のプロジェクト開発がより簡単です。

IDEの例としてSW4STM32を用います。IDEは、Workspace:ワークスペースと呼ぶフォルダ単位で機能します。ワークスペース内には複数プロジェクトが存在でき、2重起動ができます。

プロジェクトImport

マイコンテンプレートは、テンプレートの具体的な応用例にシンプルテンプレートプロジェクトやBaseboardテンプレートプロジェクトをArchives形式で提供します。Archives形式は、配布に都合が良くEclipse IDEの標準方法ですので、IDEダイアログに従って操作すれば「複数の方法」でプロジェクトインポートができます。

このArchiveプロジェクトの「最も簡単」なワークスペースへのインポート方法が下記です。

  • Windowsで、Archiveを適当な場所で解凍 → 事前に作成したIDEワークスペースへ解凍フォルダ毎コピー
  • IDEで、File>Import>General>Existing Projects into Workspace実行 → インポートProjects選択
Import Existing Projects into Workspace
Import Existing Projects into Workspace。プロジェクトをインポートする方法は、マルチプラットフォーム対応のEclipse IDEの場合、複数ある。

IDEで直接Archivesプロジェクトを解凍しワークスペースへインポートすることもできますが、フォルダ選択などのダイアログ操作は面倒です。マルチプラットフォーム対応のEclipse IDEたるゆえんですが、WindowsかmacOSの上で使うのであれば、この方法が簡単です。

プロジェクト名Rename

※Rename後、Renameプロジェクトの再ビルドが失敗する場合があります。Rename前に、ワークスペース毎バックアップするなどの事前対策を実施後、Renameを実行してください。

ワークスペースに複数プロジェクトが存在するには、別々のプロジェクト名が必要です。例えば、シンプルテンプレートを使って開発したプロジェクトが既にあるワークスペースへ、もう一度シンプルテンプレートを使って新たなプロジェクトを追加作成する場合を考えます。

開発したプロジェクト名は、SimpleTemplateのままです。これをRenameしないと新たにシンプルテンプレートをインポートできません。この時は、開発したプロジェクト選択後、右ボタンクリックで表示されるメニューからRenameを選択し、別プロジェクト名に変更します。

Rename Project Name
Rename Project Name。元々のEclipse IDE守備範囲外のファイル名は、手動リネームが必要。

注意点は、この操作でプロジェクト名変更をIDEは認識しますが、IDE以外のツールで作成したファイル名などは、そのままとなる点です。図はSTM)SW4STM32の場合です。Debugフィルダ下の.cfg/ioc/pdf/txtの4ファイルがそれらです。これらファイルは、手動でのRenameが必要です。これを怠るとRenameしたプロジェクトの再ビルドやデバッグが失敗します。

これら手動Renameが必要なファイルは、各社のAPI生成ツールなどに関連したファイルで、他社IDEでも同様です。元々のEclipse IDE守備範囲外のこれらファイルは、プロジェクト名Rename時、手動Renameが必要ですので注意してください。

Rename後、再ビルドが成功することを確認してください。再ビルドが失敗する場合には、プロジェクトフォルダ毎コピー&ペーストを実行し、ペースト時にRenameしたい別プロジェクト名を設定する方法でRenameを試してください。

別プロジェクトファイルのコピー、ペースト

別プロジェクトファイルを当該プロジェクトへコピー、ペーストする方法は、同じワークスペース内であれば簡単です。ファイル選択後、コピー:Ctrl+Cとペースト:Ctrl+Vでできます。

ワークスペースが異なる場合は、IDEの2重起動を使うとファイル選択ミスがありません。

IDEは、起動中でももう1つ同時起動が可能です。IDE起動時に、異なるワークスペース選択をすれば、コピー対象プロジェクトのファイルをIDEで目視しながら選択できます。もちろん、Windowsエクスプローラでファイルを直接選択しペーストも可能ですが、普段IDEで見慣れたファイル表示で選択する方がミスは少ないです。同一ファイル名の上書き前の確認も行います。

エクスプローラでファイル表示をすると、普段IDEで見慣れないファイルなども見られます。これらが選択のミスを生みます。IDEは、必要最低限のファイルのみ表示しているのです。

IDE画面のリセット

デバッグやコンソールなど複数Perspectiveを表示するIDE画面は、時に隠したPerspectiveを表示したくなります。PerspectiveをIDE初期状態に戻すのが、Window>Perspective>Reset Perspectiveです。

Reset Window Perspective
Reset Window Perspective。IDEの初期状態ウインド表示に簡単に戻せる。

この方法を知っていると、使わないPerspectiveを気軽に非表示にできるので、画面の有効活用ができます。

まとめ

Eclipse IDEベースの各社開発環境で知っていると便利な使い方をまとめます。

  • プロジェクトインポート:IDEのExisting Projects into Workspaceを使うと簡単
  • プロジェクト名リネーム:自動リネームはEclipse IDE関連のみ。API生成ツール関連ファイルは手動リネーム要。
  • 別プロジェクトファイルのコピー&ペースト:IDE2重起動を使い、ファイル選択ミスを防ぐ
  • IDE画面リセット:利用頻度の低いPerspectiveを非表示にし、画面有効活用
Eclipse Base IDE Project Import and Rename
Eclipse Base IDE Project Import and Rename

マイコンテンプレート活用の最初の段階が、テンプレートプロジェクトのワークスペースへのインポートです。これらインポートしたテンプレートへ変更を加え、開発プロジェクトにします。

この開発プロジェクト名をリネームし、同じワークスペースへ、再びテンプレートプロジェクトをインポートします。ワークスペース内は、リネームした色々な既成開発プロジェクトから成り、様々なプロトタイピング開発へも応用できるでしょう。

ワークスペースが異なるファイル操作には、IDE2重起動でファイル選択のミスを防ぎます。

これらのTipsを知っていれば、既存資産を流用、活用し、本来のソフトウェアに集中しミスなくプロトタイピング開発ができます。