効果的MCU学習と開発方法

MCU開発者は、常に新しい事柄を学習しつつ、同時に開発成果の出力が求められます。MCU開発者の学習と開発の参考になる2記事を見つけたので紹介します。

  1. ソフトウェア開発者が「学習」について知っておくべき10のこと、2023年12月12日
  2. 時間外労働と生産性低下の意外な関係、2023年12月11日

※英語版は、参照。

MCU学習と開発の参考になる2記事
MCU学習と開発の参考になる2記事

AI要約が望ましいのですが、無いので筆者が要約します。是非、ご自身で読んでください。

参考記事1要約:学習10のこと

人間記憶の仕組み、学習の仕組み、初心者とエキスパートの違いを示し、ソフトウェア開発者が学習を改善するための10個の事柄(#1~#10)解説。

筆者が特に印象に残った内容が、下記。

  1. 多くのコードを読み「理解」が、プログラミング熟練度を向上(#3)
  2. 1日の学習時間は、90分が限度(#5)
  3. 問題・課題のトライ順序を変える(ランダム化)のは解決に効果的(#5)
  4. エキスパートが初心者の目で見られなくなる「エキスパート盲点」は多い(#8)
  5. 休憩や散歩でトライ戦略を再検後、やり直す(#10)

参考記事2要約:意外な関係

欧米と日本、13000従業員の労働時間と生産性の調査結果。開発作業と生産性の関係説明。

印象に残った内容が、下記。

  1. 休憩無し従業員は、燃え尽き症候群の可能性が1.7倍(休憩時間と生産性)
  2. 理想的集中時間は、1日4時間。最長会議時間は、2時間。(仕事に集中できる時間)

know-how をリビルド

英語の「know-how」から来た外来語、日本語カタカナ表記「ノウハウ」は、専門的な知識や技術、手法という意味です。

知的財産の1つのため、日本発の公開例は少ない気がします。しかし、海外発know-howは、有用情報が多数あります。和訳が無くても、Microsoft Word翻訳やブラウザ翻訳を使えば、英文know-howが手軽に日本語化できます。

MCU開発者は、これら know-how活用をお勧めします。

但し、自分なりの解釈や理解を加えることが重要だと思います。これは、参考記事1が示したプログラミング熟練度を向上させるには、多くのコードを読み、その「理解」が大切なことと全く同じです。

つまり、 万人向け know-howをガイドとし、自分の頭で考えて理解する、これが、本当の学習や習得になるからです。ソフトウェア開発者的に言うと、「リビルド」です。

Summary:効果的MCU学習と開発方法

効果的MCU学習と開発には集中と多様性が必要
効果的MCU学習と開発には集中と多様性が必要

know-howの2記事を参考に、筆者がお勧めする効果的なMCU学習と開発方法をまとめます。

MCU開発者には、集中と多様性が必要です。

限られた集中時間(90分~4時間)に最大開発成果を上げるには、回り道のようでも1日の作業時間を、プログラミングとその他作業に分離して作業すべきです。

プログラミングも課題を複数に分け、壁に遭遇した場合には、そこに拘らず別課題プログラミングへ変えるなどが効果的です。課題への集中と、拘らずに変えることができる多様性が、効果的MCU開発になります。

多様性具体例の1つに、MCUベンダのサンプルコードと評価ボード活用があります。

自社ハードウェアが手元にある場合でも、逆にない場合はなおさら、評価ボード上で類似サンプルコードを動かすと、柔軟で多様な開発視点が得られます。これにより、例えば、隠し製品機能などの実装などもありえるでしょう。

その他の作業には、MCU関連の新しい学習なども含みます。

これら作業も、休憩やコーヒーブレイク、散歩などを挟みつつ様々な内容に分割しましょう。気分転換効果が期待できます。隠し製品機能などのアイデアも生まれ易いでしょう。

Afterword:盲点解決:サンプルコードと評価ボード

紹介した2つのKnow-how記事は、ソフトウェア開発者作業時間の科学的分析結果に基づいています。

MCU技術資料は、エキスパート盲点だらけです。内容が判り難いのは、読者のせいではありません。紹介Know-howやAI Copilotなどが、効率的な盲点解決手段を与えるでしょう。

一方、自ら気づき難い開発者のソフトウェア盲点やバグ解決手段が、サンプルコードと評価ボードです。

サンプルコードと評価ボードは開発者自身のソフトウェア盲点を浮き彫りにする
サンプルコードと評価ボードは開発者自身のソフトウェア盲点を浮き彫りにする

確実に動作するサンプルコードと評価ボードは、自分のソフトウェア盲点を浮き彫りにします。また、頭の中だけでなく、具体的なソフトウェア動作を目視することで、楽しく開発が続けられます。

MCU攻略の秘訣は、多様性を忘れず、楽しく、面白く開発に集中(集中時間はタイマ等で管理)、学習することだと思います。


HALとMCUソフトウェア開発

HAL:Hardware Abstraction Layer APIを使えば「MCUデバイスに依存しないソフトウェア開発」ができる。そこで、汎用MCUでプロトタイプソフトウェアを作り製品MCUを選択。これが、前投稿でした。
主題は、製品MCU選択方法です。

今回は、この方法の基になる「MCUデバイスに依存しないソフトウェア開発ができる」部分を、もっと具体的に説明します。

MCUソフトウェア開発の鍵HAL API

前投稿最後に示したSTM32デバイスとユーザアプリケーション移植性の両方を満たすHALスタック図を具体化します。

弊社STマイクロ関連テンプレートに採用したSTM32F0/F1/G0/G4デバイスとNucleo評価ボード、一般的なベアメタルソフトウェア開発を想定し作り直したHALスタック図が、下図です。UtilityやMiddlewareは使いませんので空白にしています。

User ApplicationとHAL間は、HALドライバを用います。例として、GPIO接続のLEDをトグル出力するHAL API関数:HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin)で説明します。

ベアメタルソフトウェア開発のHALスタック図
ベアメタルソフトウェア開発のHALスタック図

HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin)

STマイクロのHALドライバは、接頭語に必ずHAL_が付きます。ソース上も判別し易いです。

HAL_GPIO_TogglePin(xPort, yPin)は、MCU Port名xのPin番号yを使うGPIOに対して、トグル(HighからLow、またはLowからHigh)出力するドライバ関数です。

例えば、STM32G0評価ボード:Nucleo-G071RB実装ユーザLED:LD4は、PA5接続です。トグル出力は下記です。

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5)   //物理GPIOポートA、5番ピンをトグル出力

STM32G4評価ボード:Nucleo-G474RE実装済みユーザLED:LD2も、同じくPA5接続ですので、全く同じHALソフトウェア記述で、ユーザLD2のトグル出力ができます。

Nucleo評価ボードBSP

Nucleo-G071RBとNucleo-G474REは、どちらも64ピンMCUパッケージで、たまたま同じ物理記述ポート名とピン番号が、ユーザLEDに接続済みでした。

しかし、一般的には開発MCUや評価ボードで異なるポートとピンへユーザLEDが接続されます。

そこで、物理記述GPIOAやGPIO_PIN_5と、評価ボードの論理記述LD2やLD4を結び付けるのが、BSP:Board Support Packageです。この結び付けにより、異なる物理記述ポート、ピン番であっても、同じ論理記述のDemonstrationやUser ApplicationでLEDを動作させることが可能になります。

具体例で示すとNucleo-G071RBのBSPは、STM32CubeIDEのmain.hに展開され、LD4関連は下記です。

#define LD4_GPIO_Port  GPIOA  //LD4_GPIO_Portを物理GPIOポートAと定義
#define LD4_Pin  GPIO_PIN_5     //LD4_Pinを物理5番ピンと定義

Nucleo-G474REのBSPは、LD2関連main.hが下記です。

#define LD2_GPIO_Port  GPIOA  // LD2_GPIO_Portを物理GPIOポートAと定義
#define LD2_Pin  GPIO_PIN_5     // LD2_Pinを物理5番ピンと定義

LD2とLD4の部分が異なります。BPSは、評価ボードのハードウェア毎に異なります。

各評価ボードのソースコードを読む時は、LD2やLD4と論理記述した方が、物理記述のGPIOAやGPIO_PIN_5よりも判り易いため、これらdefine文を使います。

評価ボード非依存ソフトウェアテクニック

評価ボード単位のソースコードを読む時は、実装中のLD2やLD4と論理記述した方が判り易いです。

では、様々な評価ボードで共通に動作するUser Applicationを開発する場合は、どうすれば良いのでしょうか?

答えは簡単です。論理記述をLD2やLD4から、より上位の論理記述へ結び付ければOKです。例えば、下記です。

#define BOARD_LED_PORT  LD4_GPIO_Port    //BOARD_LED_PORTをLD4_GPIO_Portと定義
#define BOARD_LED_PIN  LD4_Pin         //BOARD_LED_PINをLD4_Pinと定義

このように評価ボード単位のdefine文を、上位実装LEDや論理ピンへ再定義すれば評価ボード非依存のソフトウェアが開発できます。

define文は、開発者が、ソースコードを読み易くするための機能です。define文で再定義しても、コンパイル時に最終物理対象(GPIOAやGPIO_PIN_5)に置き換わるため、処理速度が遅くなるような弊害はありません。

STM32Cube MCU Packages Manager

さて、HALスタック図では1個のHALも、実はMCU毎に異なります。

このMCU毎に異なるHALを、STM32CubeIDEへ実装するツールが、STM32Cube MCU Packages Managerです。

MCU毎に異なるFirmware(HAL)をSTM32CubeIDEへ実装するSTM32Cube MCU Package Maneger
MCU毎に異なるFirmware(HAL)をSTM32CubeIDEへ実装するSTM32Cube MCU Package Maneger

STM32Cube MCU Packages Managerは、プロジェクトのハードウェア設定ファイル(icoファイル)を開いた状態で、Help>Manage Embedded Software Packagesで表示できます。上図は、STM32C0/F0/F1/G0/G4のPackage部分を抜粋しています。

このSTM32Cube MCU Packages Managerで、最新のFirmware Packageを開発に使うか、それとも、古いFirmware Packageを使うかが選択できます。上図は、STM32G0ソフトウェア開発に最新Firmware V1.6.1を開発に使うことを選択中の例です。

Firmware Package版数の訳

このMCU Firmware Packageが、HALの実体です。

例えば、STM32G0 Firmware V1.6.1は、旧Firmware V1.6.0と上位のUser Applicationに対しては同じHAL APIを提供しますが、その実体は、旧HALのバグ修正や販売中のSTM32G0 MCUに応じて中身が変わります。

つまり、このFirmware Packageが、MCU差や過去のHAL版に依存しないHAL APIを、User Applicationへ提供する仕組みそのものです。

MCU発売後、経過時間が長くなると、同一MCUでも多くのFirmware Package版が選択可能になります。

お勧めは、最新Firmwareです。

複数のFirmware版が存在する理由は、STマイクロがMCU供給を最低10年保証しているためです。新MCUパッケージ追加発売時は、新しいFirmware版で対応します。簡単に言うと、MCU開発履歴が版数に現れる訳です。

つまり、開発者が、顧客提供時Firmwareをそのまま継続開発に使いたい場合には、最新版だけでなく過去のFirmwareも選択肢になる訳です。

実際の選択は、icoファイルのProject Managerタブの一番下、Firmware Package Name and Versionで設定します。

Summary:HAL APIソフトウェア開発

BSPとMCU Firmwareによりハードウェア依存性が無いHAL APIsが提供
BSPとMCU Firmwareによりハードウェア依存性が無いHAL APIsが提供

MCUソフトウェアは、HAL APIを使うとMCUに依存しない移植性の高いUser Applicationソフトウェアの開発ができることを説明しました。

User ApplicationとHAL API間のハードウェア依存性を無くす手段として、評価ボード毎に異なるBSPや、MCU毎に異なるMCU Firmware Package(HAL)を用います。

汎用MCUを使ったHAL APIプロトタイプ開発ソフトウェアは、MCU変更に対して移植性が高いため、User Applicationソフトウェアの資産化も期待できます。

Afterword:MCU説明の難しさ

本稿の内容は、中級以上のMCU開発者にとっては、自明の理です。しかし、この自明の理を説明するのは、結構大変です。本稿も、説明不足の箇所が多々あります。

MCU開発では、この自明の理の部分が多いため、開発者レベルを上げる障壁は高くなります。例えて言うと、スマホが初めての方に、その取扱い方法を文書だけで説明するようなものです。

本稿は、STマイクロのHALを例に説明しました。これは、現在MCU毎に販売中の弊社STM32F0/F1/G0/G4テンプレートを、MCU共通のSTM32MCUテンプレートへ発展させる布石でもあります。

本稿内容が、すんなり判る開発者には、STM32共通MCUテンプレートは、多分不要(ご自分で開発できる)ですし、判らない方には、STM32共通テンプレートよりも個別STM32F0/F1/G0/G4テンプレートの方が使い易いと思っています。

今回のような長文は、筆者の苦手な分野です。が、時々は挑戦すべきと考えております。ご質問や判り難い箇所のご指摘も大歓迎です。読者の方々からのレスポンス、お待ちしております。



ソフトウェア視点のMCU選び方

MCU選び方をソフトウェア開発視点から示します。
具体例としてSTマイクロのSTM32MCUで説明しますが、他MCUベンダでも同様です。

Summary:HALドライバ+汎用MCUプロトタイプ開発で選定

例え同じベンダでも色々な内蔵ハードウェアと、処理性能、価格も異なるMCUは、製品MCUの選択肢が広すぎるのが難点です。

製品MCUハードウェア選定ミスを少なくし、かつ、ソフトウェア開発も効率的にできる方法として、汎用MCUを使いHALドライバで早期に製品プロトタイプ開発を行い評価する方法を示しました。

製品MCU選択肢の広さ

STマイクロのSTM32MCUポートフォリオ(出展:STM32ウェビナー資料)
STマイクロのSTM32MCUポートフォリオ(出展:STM32ウェビナー資料)

ベンダ例としてSTマイクロのCortex-Mコア系MCU選択肢の広さを示します。

STM32MCUポートフォリオを性能やシリーズ別に示したのが上図です。この図でターゲット製品のMCUシリーズを大まかに選定するのが、第1選定段階です。

第2段階では、各シリーズのFlash/RAM容量、内蔵ADCやUASRT数など製品時に必要になる周辺回路からハードウェア的に最適なMCUデバイスを選定します。

STM32MCU製品セレクタ例
STM32MCU製品セレクタ例

この選択方法は、MCU処理性能やソフトウェアを格納するFlashやRAM容量は、最終製品にならないと実際は判りません。しかし、周辺回路や動作電圧などのハードウェア条件は、明らかなのでこれらからMCU選定はできます。

但し、メインストリーム、つまり汎用MCUであっても、STM32C0、STM32F0/F1、STM32G0/G4シリーズと選択肢があり、処理性能も異なります。更に、ハイパフォーマンスSTM32H5/H7や、超低消費電力STM32U5などの汎用MCU比性能を極めたシリーズもあります。

これら多く広いMCU選択肢から、入手性やコストから製品MCUを決めるのが、一般的に用いられる「ハードウェア視点MCU選択方法」です。

HALドライバソフトウェア開発メリット

HALとは、Hardware Abstraction Layerドライバです。このハードウェアは、MCUを指します。つまり、MCU差を抽象化=隠して開発できるAPIを上位ユーザアプリケーションへ提供するのがHALです。

例えば、STM32C0でも、STM32G4でも同じHALドライバでGPIOアクセスができます。つまり、HALドライバを利用すれば、STM32C0とSTM32G4で同じアプリケーションが使える訳です。

従って、STM32C0で性能不足の場合には、開発ソフトウェアはそのままSTM32G4へ移植ができます。逆の性能過多の場合でも同様です。ユーザ開発アプリケーションのMCU間移植性が高いのがHAL利用ソフトウェアのメリットです。

HAL+汎用MCUプロトタイプ開発

汎用MCUを使って製品のプロトタイプ開発を行えば、製品化時、よりハイパフォーマンスMCUの必要性や、より低消費電力MCUの必要性が、使用した汎用MCUとの相対比較で可能です。

また、HALを使えば、プロトタイプ開発アプリケーションが製品MCU上でも動作します。

つまり、製品MCUのオーバー/アンダースペック選定ミスを減らす評価ができ、かつ、プロトタイプ開発アプリケーションの製品移植性も高いため、結果として効率的な製品開発が可能になるのが、「ソフトウェア視点MCU選択方法」です。

拡大MCUハードウェアとMCUソフトウェア移植性を満たすHAL

拡大STM32MCUデバイスとユーザアプリケーション移植性の両方を満たすHAL
拡大STM32MCUデバイスとユーザアプリケーション移植性の両方を満たすHAL

MCUベンダは、最初の図で示したように進化する半導体製造プロセスやよりアプリケーション寄りのコストパフォーマンス最適MCUデバイスを提供し続けます。

MCU製品開発側は、増え続けるMCUデバイス間のソフトウェア移植性や開発時間の短縮も必要です。

HALドライバは、これら進化・拡大するMCUハードウェアとMCUソフトウェア移植性要求を同時に満たす機能です。

HALによる汎用MCUプロトタイプ開発は、参考になるサンプルコードが多いため開発時間も少なく、開発アプリケーションがユーザ資産として多くのMCUでの活用も期待できます。

Afterword:汎用MCU選び方

汎用MCUも多くの選択肢があります。STマイクロのお勧めデバイスは、最新製造プロセスで入手性が良く低価格なSTM32G0/4シリーズ評価ボードです。

Flash/RAM容量も入手性優先で選定して構いません。容量不足時は、機能分割しプロトタイプ化すれば済むからです。

ソフトウェア視点MCU選択方法は、プロトタイプ開発が必要です。短期間で効率的に製品プロトタイプを仕上げ、このプロトタイプから製品MCU要求条件やソフトウェア動作ポイントなどを評価します。

プロトタイプと最終製品が近ければ近い程、これら評価精度は上がります。しかし、精度に拘る必要はありません。製品企画時に、とにかく製品のように動くプロトタイプを早く仕上げ、これから製品MCUを評価すれば、闇雲に選定するより良いからです。

MCU開発者は、手元にベンダ汎用MCUシリーズの評価ボードと弊社テンプレートがあれば、直ぐに製品のように動くプロトタイプが仕上がります。


STM32 Developer Zone

STマイクロが、STM32 MCU/MPU開発者向け総合ポータルサイトSTM32 Developer Zoneを開設しました(2023年6月)。ベテラン/初心者ともに開発に役立つページリンクが多数集約されています。

ポータルサイトのリンク構成を解かり易くするため、フォルダ形式の一覧表示にしました。

STM32 MCU Developer Zone

STM32 MCU Zone (Home) MCUプロジェクトを開始
1-MCU製品ポートフォリオ
2-開発ボード&ハードウェアツール
3-ソフトウェア開発ツール
4-組込みソフトウェア
5-ソリューション
6-開発リソース
アプリケーション別ソリューション AIソリューション
ワイアレス&コネクティビティ
セキュリティフレームワーク
コミュニティ&サポート STコミュニティ
ナレッジ共有
パートナ設計サービス
オンラインサポート(要ログイン)

下図マイクロプロセッサ:MPU(STM32MP1/Cortex-A7+Cortex-M4)以外の全マイコン:MCU情報が、このSTM32 MCU Developer Zoneに集約されています。

STM32 MCUとMPU境界(出展:STM32C0シリーズセミナ資料に加筆)
STM32 MCUとMPU境界(出展:STM32C0シリーズセミナ資料に加筆)

MPUに比べ、AIソリューション等のアプリケーション別ソリューション情報も豊富です(関連投稿:AI MCU)。

また、初心者向きMCUプロジェクト開始リンクがあり、Step1で評価ボード選択、Step2でSTM32CubeIDEを使ったMCU開発手順の説明もあります。

STM32 MPU Developer Zone

STM32 MPU Zone (Home) MPU組込みソフトウェアツールの詳細
1-MPU製品ポートフォリオ
2-開発ボード&ハードウェアツール
3-組込みソフトウェア
4-ソフトウェア開発ツール
5-ソリューション
6-開発リソース
コミュニティ&サポート STコミュニティ
ナレッジ共有
パートナ設計サービス
オンラインサポート(要ログイン)

高度なHMIや複雑処理向けのCortex-A7搭載MPUは、現在STM32MP1シリーズだけです。従って、STM32 MPU Developer Zoneサイト構成は、MCU比シンプルです。

2023年第4四半期にこのSTM32MP1に加え、Cortex-A35、Cortex-M33搭載でセキュアIndustry 4.0、およびエッジ・コンピューティング・アプリケーション向けSTM32MP2シリーズが追加予定です。

ポータルサイトHTMLとリンク構成

ウェブサイトの図や文字、ハイパーリンクの表示には、HTMLが使われます。HTMLで記述したリンク集約ポータルサイトは、肝心のリンク構成が読者に解り難い欠点があります。モニタで一度に表示できる領域が限られるため、リンク構成は、読者がサイト全体を把握した後になるからです。

そこで、本稿は、誰でも見慣れたフォルダ形式で、STM32 MCU/MPU Developer Zoneのリンク構成を示しました。

ポータルサイトは随時更新されますが、リンク構成を把握していれば、常に所望最新リンクへのアクセスも容易です。

注)本稿は、2023年6月9日現在のリンク先を示しています。最新リンクへは、MCU/MPU Developer Zoneホームからアクセスしてください。

Afterword:European Chips Act(欧州半導体法)

欧州半導体法は、EU内の製造活動強化、欧州設計エコシステム刺激、バリューチェーン全体スケールアップとイノベーションを支援するもので、これによりEUは、世界市場シェアを2030年に20%倍増させるという目標を目指しています。

STマイクロとGlobalFoundriesは、2023年6月5日、フランス・クロルで両社共同運用の300mmウエハー工場新設計画の合意を締結と発表しました。総投資額は75億ユーロの見込みで、フランス政府が最大29億ユーロを援助します。

生産だけでなく、より開発し易いMCU/MPUへ向けたオランダ)STマイクロの活用、今後も注目が必要です。



Cortex-MとRISC-V

NVIDIA買収先で成立見通しが未だに不透明なARM社Cortex-Mと非営利団体運営のRISC-V、両MCUコアの顧客利用動向記事が公開されました(2022年1月14日、ITmedia)。

極簡単に要約すると、ARM顧客の多くが現在NVIDIAと競合関係にあるため、買収成立時、Cortex-M利用の顧客将来製品の代替コア用意(=Plan B)が必要で、代替コアにRISC-Vが急浮上している、という内容です。

ARM顧客とは、エッジAIや車載半導体製品を供給中のMCUベンダ(Renesas、NXP、STマイクロなど)を指します。Plan Bは、代替案と訳されます。これは、実行案Aのトラブル時、Aの次のBが、第2の案という意味です。

半導体業界は常に変化し、これに伴い案A達成に何らトラブルが無くても、その将来性に変化が生じる可能性もあります。“Backup”としてのPlan B必要性を感じた記事です。

オープンアーキテクチャRISC-V

Cortex-M代替として急浮上のRISC-V
Cortex-M代替として急浮上のRISC-V

RISV-Vは、カルフォルニア大学バークレイ校開発のオープンアーキテクチャMCUコアで、Cortex-MのようなCISC(Complex Instruction Set Computer)命令系を、より縮小した命令系(Reduce Instruction Set Computer)へ変え、低電力動作に適すなどの特徴を持ちます。

Cなどの高級言語ソフトウェア開発者にとっては、CISC/RISC差はあまり気になりませんが、コンパイラを開発するMCUベンダにとっては、他社差別化を生む重要なパラメタです。

MCU性能の支配項は、

・MCUコア(CISC or RISC)
・コンパイラ
・製造プロセス(≒最高動作周波数)
・内蔵周辺回路

の4項目で、ARM Cortex-M使用中ベンダなら、MCUコアとコンパイラはARM供給品なので各社共通です。つまり、製造プロセスと内蔵周辺回路でしか他社差別化手段がありません。

NVIDIAがARMを買収した場合、競合他社へのMCUコアやコンパイラ供給に、自社利用品と差を付ける可能性もあります。Cortex-M使用中のMCUベンダ各社が、ARM買収成立を嫌う理由が、これです。

そこで、オープンアーキテクチャでコンパイラ開発自由度も高いRISC-Vコアが、競合他社のCortex-M将来製品コアのPlan Bとして急浮上した訳です。

ARMコアMCU開発で出遅れたRenesasは、早々とRISC-V対応MCU開発を発表しました。NXPやSTマイクロのRISC-Vコア利用は不明ですが、Renesas同様、Plan Bを持っているのは確実です。

我々開発者が、今すぐRISC-V開発を始める必要性は低いと思います。むしろ、Cortex-M代替に、低価格高性能無線機能付きESP-WROOM-32を習得した方が役立つと個人的には思います。RISC-VESP-WROOM-32の関連投稿は、リンク先を参照してください。

MicrosoftのOffice、Windows分離売却可能性

Microsoftが買収を発表した大手ゲーム会社Activision Blizzard
Microsoftが買収を発表した大手ゲーム会社Activision Blizzard

半導体業界の大きな一角を占めるMicrosoftの大手ゲーム会社Activision Blizzard買収ニュースが1月19日発表されました。買収理由は、コチラの記事が示すメタバースです。COVID-19が大きく影響しているコンタクトレス・テクノロジのメタバースは、関連投稿の3章を参照してください。

Microsoft動向で気になるのは、確定内容ではありませんが「OfficeとWindowsを売却すべき」という1月17日発表記事です。Microsoftは営利団体です。Windows 11不具合の多さ、新機能の魅力無さなど、最近のWindowsに対するMicrosoftの力の入れようの低下とも符合します。

OfficeやWindows(特にGUI)は、既に製品完成の域に達しています。手間暇が掛かるDOS-VベースのコンシューマーOS企業と、最新コンタクトレス・テクノロジやAzure、高度セキュリティ投資との親和性も高いパブリッククラウド企業とは、別会社の方が、利用者、投資家にとっても判り易いと思います。

エンタープライズ顧客重視で将来性も高いパブリッククラウド企業地位を、MicrosoftがAmazonやGoogleよりも高めたいなら、足枷の可能性もあるOffice、Windows分離売却も可能性ありと思います。

Plan B評価の違い

M&A:Mergers(合併)and Acquisitions(買収)は、半導体業界では当たり前です。激変する半導体業界のMCUベンダとMicrosoft動向記事を紹介しました。

日本社会では、Plan B評価がまだ低いのですが、MCU開発者として、「個人レベルのPlan B必要性」を感じた記事でした。日本人と外国人上司のPlan B評価の違いは、コチラの記事を参照してください。

組込み開発 基本のキ:RTOS vs. ベアメタル

RTOS vs. BareMetal
RTOS vs. BareMetal

2022年最初の投稿は、RTOSとベアメタルを比較します。RTOSを使わないベアメタルMCU開発者が多いと思いますので、RTOS開発メリット/デメリットをベアメタル側から評価、RTOSデバッグツール紹介とベアメタル開発の意味を考えました。

RTOS目的

Flexible Software Package構成
Flexible Software Package構成

ルネサスRAファミリのFlexible Software Package構成です。左上Azure RTOSやFreeRTOSの中に、ConnectivityやUSBがあります。これらMCU共有資源を管理するシステムソフトウェアがOSで、PCのWindowsやMac、Linuxと機能的には同じです。

Real-Time性が必要な組込み用OSをRTOSと呼び、FreeRTOSやAzure RTOSが代表的です。これは、IoT MCU接続先が、Amazon Web Services(AWS)クラウドならばFreeRTOSライブラリ、Microsoft AzureクラウドならAzure RTOSライブラリ(図のConnectivity)利用が前提だからです。

※2021年のIoTクラウドシェアは、コチラの関連投稿からAWS>Azure>GCPの順です。

RAファミリに限らず、クラウド接続のIoT MCUは、これらRTOSライブラリを使ったRTOS開発になります。

RTOSメリット/デメリット

例えば、ベアメタルでUSB制御を自作する場合は、USB 2.0/3.0などの種類や速度に応じた作り分けが必要です。ライブラリがあるRTOSなら、USBポートへの入出力記述だけで利用可能です。RTOSが共有資源ハードウェア差を吸収し、アプリケーションが使い易いAPIを提供するからです。

RTOSの資源管理とは、MCUコア/Flash/RAM/周辺回路/セキュリティなどの共有資源を、アプリケーション側から隠蔽(≒ブラックボックス化)すること、とも言えます。

RTOSアプリケーションは、複数タスク(スレッドと呼ぶ場合もあり)から構成され、タスク間の優先制御もRTOSが行います。開発者は、単体処理タスクを複数開発し、それらを組み合わせてアプリケーションを構成します。RTOSアプリケーション例が下図、灰色が開発部分、コチラが関連投稿です。

Data flow diagram for a smart thermostat(出展:JACOB'S Blog)
Data flow diagram for a smart thermostat(出展:JACOB’S Blog)

RTOS利用メリット/デメリットをまとめます。

メリットは、

・RTOSライブラリ利用により共有資源活用タスク開発が容易
・移植性の高いタスク、RTOSアプリケーション開発が可能
・多人数開発に向いている

デメリットは、

・複数タスク分割や優先順位設定など、ベアメタルと異なる作り方が必要
・共有資源、特にRAM使用量がタスク数に応じて増える
・RTOS自身にもバグの可能性がある

簡単に言うと、RTOSとベアメタルは、「開発作法が異なり」ます。

ソフトウェア開発者は、RTOS利用と引換えに、自己流ベアメタル作法を、RTOS作法へ変えることが求められます。RTOS作法は、標準的なので多人数での共同開発が可能です。もちろん、ベアメタルよりもオーバーヘッドは増えます。このため、RTOS利用に相応しい十分なMCUコア能力も必要です。

RTOSタスク開発 vs. ベアメタルアプリケーション開発

最も効果的なRTOS作法の習得は、評価ボードを使って実際にRTOSタスク開発をすることです。弊社FreeRTOSアプリケーションテンプレートは、この例です。

それでも、RTOSタスク開発作法を文章で記述すると、以下のようになります。

開発対象がアプリケーションからタスク(スレッド)へ変わることが、ベアメタルとの一番の違いです。Windowsタスクバーにあるフィルダ表示や、ペイントなどと同様、タスクは、単機能の小さいアプリケーションとも言えます。

このタスクを複数開発し、複数タスクを使ってRTOSアプリケーションを開発します。タスクには、それぞれ優先順位があり、他のタスクとの相対順位で実行タスクがRTOSにより決まります。タスクの状態遷移が、RTOSへの備え:第2回、タスク管理で示した下図です。

FreeRTOS Task States
FreeRTOS Task States

ベアメタルアプリケーションとは異なり、優先順位に応じてタスクが実行(Running)され、その実行も、定期的に実行可能状態(Ready)や待ち状態(Suspended)、停止状態(Blocked)へRTOSが変えます。これは、リアルタイムかつマルチタスク処理が、RTOSの役目だからです。遷移間隔などは、RTOS動作パラメタが決めます。

ベアメタル開発は、開発者が記述した通りに処理が実行されますが、RTOS開発のタスク実行は、RTOS任せです。RTOS開発難易度の上がる点が、ここです。

一般的なIoT MCUは、シングルコアですので、実行タスク数は1個、多くの他タスクは、Not Running(super state)状態です。RTOSがタスクを実行/停止/復活させるため、スタックやRAM使用量が急増します。

これら文章を、頭の中だけで理解できる開発者は、天才でしょう。やはり、実際にRTOSタスクを開発し、頭の中と実動作の一致/不一致、タスク優先順位やRTOS動作パラメタ変更結果の評価を繰返すことで、RTOS理解ができると凡人筆者は思います。

ベアメタル開発者が手早くRTOSを理解するには、既にデバッグ済みの複数RTOSタスク活用が便利で、FreeRTOSアプリケーションテンプレートは、この要求を満たしています。概要は、リンク先から無料ダウンロードできます。

文章でまとめたFreeRTOS解説が、コチラの弊社専用ページにあります。また、本ブログ検索窓にFreeRTOSと入力すると、タスク開発例などが参照できます。

RTOSデバッグツール

percepio tracealyzer
percepio tracealyzer

さて、RTOS作法に則ってタスク開発し、RTOS動作パラメタも適切に設定しても、思ったように開発タスクが動作しない時は、ブラックボックスRTOS自身のバグを疑う開発者も多いでしょう。RTOSのバグ可能性もありえます。

この疑問に対して強力にRTOS動作を解析できるFreeRTOSデバッグツールがあります。資料が無料でダウンロードできますので、紹介します。

※このツールを使うまでもなく、弊社FreeRTOSアプリケーションテンプレートは、正常動作を確認済みです。

まとめ:RTOS vs. ベアメタル

IoT MCUのクラウド接続 → 接続クラウド先のRTOSライブラリ必要 → RTOSライブラリ利用のRTOS開発が必要、という関係です。

RTOS開発は、ベアメタルと開発作法が異なる複数タスク開発です。タスクは、優先順位に応じてRTOSがMCU処理を割当てます。また、MCU共有資源がRTOSアプリケーションから隠蔽されるため、移植性が高く多人数での大規模開発にも向いています。

一方で、RTOSオーバーヘッドのため、ベアメタルよりも高いMCU能力が必要です。

シングルコアMCUでは、RTOSとベアメタルのハイブリッド開発は困難です。開発者がRTOSを利用するなら、慣れたベアメタル開発から、RTOSタスク開発への移行が必要です。

ベアメタル開発経験者が、効果的にRTOSタスク開発を習得するには、評価ボードと複数RTOSタスクが実装済みの弊社RTOSアプリケーションテンプレートの活用をお勧めします。

ベアメタル開発意味

RTOSのタスク処理待ち(セマフォ/Queue)を使うと、ベアメタルよりも排他/同期制御が簡単に記述できます。それでも、全てのMCU開発がRTOSへ移行することは無いと思います。様々なセンサデータをAD変換するエッジMCUは、ベアメタル開発、エッジMCUを複数個束ねクラウドへ接続するIoT MCUは、RTOS開発などがその例です。

MCU開発の基本は、やはりRTOS無しの「ベアメタル開発」です。

IoT MCU開発者スキルの階層構造
IoT MCU開発者スキルの階層構造

ベアメタル開発スキルを基にRTOSを利用してこそ、RTOSメリットを活かしたタスクやアプリケーション開発ができます。共有資源ブラックボック化、多人数開発のReal-Time OSは、「ベアメタル開発の補完」が起源です。

PC OSとは全く逆のこの生い立ちを理解していないと、効果的なRTOS利用はできません。近年MCU性能向上は著しいのですが、向上分をRTOSだけに振り分けられる程余裕はなく、IoTセキュリティなどへも配分する必要があります。

この難しい配分やRTOS起因トラブルを解決するのが、ベアメタル開発スキルです。弊社マイコンテンプレートは、主要ベンダのベアメタル開発テンプレートも販売中、概要ダウンロード可能です。

組込み開発 基本のキ:バックナンバー

2022年最初の投稿に、筆者にしては長文すぎる(!?)のRTOS vs. ベアメタルを投稿したのは、今年以降、RTOS開発が急速に普及する可能性があるからです。

クラウド接続からRTOS必要性を示しましたが、セキュリティなど高度化・大規模化するIoT MCU開発には、移植性の高さや多人数開発のRTOSメリットが効いてきます。

また、半導体不足が落ち着けば、RTOS向き高性能MCUの新しいデバイスが、各ベンダから一気に発売される可能性もあります。スマホ → 車載 → IoT MCUが、半導体製造トレンドです。

※現状のMCUコア関連投稿が下記です。
Cortex-M33とCortex-M0+/M4の差分
Cortex-M0からCortex-M0+変化
Cortex-M0/M0+/M3比較とコア選択

IoT MCU開発が複雑化、高度化すればする程、前章のベアメタル開発や、組込み開発の基礎技術:基本のキの把握が、開発者にとって益々重要になります。

組込み開発、基本のキ:バックナンバーを示します。年頭、基本を再確認するのはいかがでしょう?
組込み開発 基本のキ:組込み処理
組込み開発 基本のキ:IoT MCUセキュリティ



組込みMCU開発お勧めブログ

組込み開発全般に参考となる英語ブログを紹介します。特にRTOS関連記事は、内容が濃く纏まっていて、実践開発時の示唆に富んでいます。

JACOB's Blog
JACOB’s Blog

RTOSカテゴリー

組込み開発コンサルティングも行うBeningo Embedded社は、高信頼の組込みシステム構築と低コスト・短時間での製品市場投入を目標としています。この目標に沿って、複雑な組込み開発概念を、シンプルに解り易く解説しているのが、同社ブログです。

特に、RTOSカテゴリーは、FreeRTOS開発方法を整理する時、参考になります。最新RTOSの3投稿をリストアップしたのが下記です。

2021年5月4日、A Simple, Scalable RTOS Initialization Design Pattern
2020年11月19日、3 Common Challenges Facing RTOS Application Developers
2020年10月29日、5 Tips for Developing an RTOS Application Software Architecture

Data flow diagram for a smart thermostat(出展:JACOB'S Blog)
Data flow diagram for a smart thermostat(出展:JACOB’S Blog)

開発中の弊社FreeRTOSアプリケーションテンプレートは、「ベアメタル開発経験者が、FreeRTOS基礎固めと、基本的FreeRTOSアプリケーション着手時のテンプレートに使えること」が目的です。従って、必ずしも上記お勧めブログ指針に沿ったものではなく、むしろ、ベアメタル開発者視点でFreeRTOSを説明しています。

弊社テンプレートを活用し、FreeRTOSを理解・習得した後には、より実践的なRTOS開発者視点で効率的にアプリケーションを開発したいと思う方もいるでしょう。もちろん、弊社FreeRTOSアプリケーションテンプレートからスタートすることを弊社は推薦しています。

しかし、Windows上でアプリケーション開発する時は、初めからWindows作法やGUIを前提として着手するように、RTOS上でMCUアプリケーションを開発する時も、従来のベアメタル開発に固執せず、RTOSオリエンテッドな手法で着手するのも1方法です(ベアメタル経験が少ないWindows/Linux世代には、親和性が高い方法かもしれません)。

推薦ブログは、この要望を満たすRTOS手法が豊富に掲載されています。

また、上記RTOS関連3ブログを(掲載図を「見るだけでも良い」ので)読んで、ピンとこなければ、RTOS理解不足であると自己判断、つまり、リトマス試験紙としても活用できます。

問題整理と再構築能力

ベアメタル開発経験者が、RTOSを使ってMCUアプリケーション開発をするには、従来のBareMetal/Serial or Sequential動作からRTOS/Parallel動作へ、考え方を変えなければなりません。弊社FreeRTOSアプリケーションテンプレートは、この考え方を変えるための橋渡しに最適なツールです。

橋を渡りきった場所が、RTOSの世界です。RTOS環境での組込み開発問題を整理し、シンプルに解決策を示すには、知識や経験だけでなく、問題再構築能力が必要です。JACOB’S Blogをご覧ください。RTOSに限らず組込み関連全般の卓越した問題再構築能力は、掲載図を見るだけでも良く解りますよ😄。

半導体不足とMCU開発案

3月26日投稿で危惧した半導体供給不足が深刻化しており、MCU開発者へも影響が出始めています。コチラの記事が、具体的な数字で深刻さを表していますので抜粋し、MCU開発者個人としての対策私案を示します。

半導体不足の深刻さ

今回の半導体不足は、通常時に比べ2倍以上のリードタイム増加となって現れています。

通常時と現在(半導体不足時)のリードタイム比較
発注から納品までのリードタイム 通常 現在
MCU、ワイヤレスチップ、パワーIC、Audio Codec、

パワーモジュール、GPUチップ

8~12週 24~52
ロジックIC、アナログIC、ASIC、電源用MOSFET、受動部品 8~12週 20~24週
LCDパネル 6~8週 16~20週
CPU 8週 12~20週
メモリ、SSD 6~8週 14~15週
PCB(基板)製造 2~4週 8~12週

記事によると、特にMCUとワイヤレスチップのリードタイムが長くなっており、52週!ものもあるそうです。

表記した第1行目の部品で半導体不足が語られることが多いのですが、PCB(基板)製造へも影響しているのは、MCU/ワイヤレスチップ供給不足により、基板作り直しが生じるため、またロジックIC以下の部品も同様に製品再設計の影響と推測します。

MCU、ワイヤレスチップの供給不足がリードタイム激増の主因、それ以外の部品リードタイム増加は、主因の影響を受けた結果と言えるでしょう。

半導体供給の意味

日本では半導体は、別名「産業のコメ」と言われます。世界的には、「戦略物資」という位置付けです。半導体で米中が対立するのは、政治体制だけでなく、近い将来の経済世界地図を大きく変える可能性があるからです。

半導体製造は、国際分業化が進んできましたが、今回の半導体不足の対策として、国や企業レベルでは全て自国や自社で製造を賄う動きもでてきました。持続的経済成長には、食糧と同じように半導体の自給自足が必須だということです。

MCU開発対策案

MCU開発者個人レベルでの半導体不足対策は何か、というのが本稿の主題です。

MCU開発者は、半導体を使った顧客要求の製品化が目的です。半導体不足の対策は、「代替MCUの開発能力と製品化方法の見直し」だと思います。例えると、COVID-19収束のため、複数ワクチンの中から入手しやすいものを利用するのと同じと言えば解っていただけるかもしれません。目的と手段を分けるのです。

製品化方法の見直しとは、評価ボード活用のプロトタイプ開発により製品完成度を上げ、最終製品化直前まで制御系の載せ替えを可能とすることです。CADやIDE消費電力シミュレーションなどを活用し、プロトタイプの製品完成度を上げます。

製品完成度を上げる段階で、更なるMCU能力の必要性や低消費電力性などが判明することも多々あります。載せ替え可能な制御系でこれら要求に対応します。プロトタイプ開発着手時に、候補となる複数ベンダのMCU評価ボードを事前準備しておくのも得策です。

MCU評価ボード載せ替えプロトタイプ開発案
MCU評価ボード載せ替えプロトタイプ開発案

現在も様々なMCU新製品が発表されています。評価ボードは、これら新MCUの販売促進ツールですので、個人でも比較的安く、早く調達できます。また、ワイヤレスチップ搭載済みでArduinoなどの標準インターフェースを持つ評価ボードならば、この標準インターフェースで独自開発ハードウェアと分離した製品設計ができるので、制御系を丸ごと別ベンダの評価ボードへ載せ替えるのも容易です。

つまり、第2 MCU開発能力と評価ボードを標準制御系とし、自社追加ハードウェアと分離したプロトタイプ開発により、第1 MCU供給不足と顧客製品化の遅れを少なくすることができます。標準インターフェース分離により、PCBを含めた自社追加ハードウェア開発部分の作り直しは無くすことも可能です。少なくとも、1章で示した半導体不足主因(MCUやワイヤレスチップの不足)に対して対処できます。

複数ベンダのMCU開発を経験すると、ソフトウェアやハードウェアの作り方も変わります。

ソフトウェア担当者は、万一のMCU載せ替えに備え、共通部分と個別部分を意識してソフトウェア化するようになります。ハードウェア担当者は、自社追加ハードウェアの単体試験をソフトウェア担当者に頼らずテストプログラム(TP)で自ら行うようになり、次第にソフトウェア開発能力も身に付きます。

このプロトタイプ開発の最終製品化時は、制御系評価ボードの必須部品のみを小さくPCB化するなどが考えられます。制御系は、他の部分に比べ故障率が高く、制御系のみを載せ替え可能な製品構成にしておけば、故障停止時間の短縮も図れます。

MCU評価ボードの制御系のみを小さくPCB化するイメージ(出展:マルツ超小型なRaspberry Pi)
MCU評価ボードの制御系のみを小さくPCB化するイメージ(出展:マルツ超小型なRaspberry Pi)

最新MCU情報

上記プロトタイプ開発でも通常時は、第1 MCUで開発完了でしょう。実際に第2 MCU制御系へ載せ替えるのは、半導体供給リスクに対する最後の手段です。そこで、最新MCU情報をピックアップし、第2 MCUを選ぶ参考にします。

・2021年3月31日、ARMv9発表

Cortex-M33などのセキュリティ強化コアARMv8発表から約10年ぶりに機械学習やデジタル信号処理能力強化の最新コアARMv9をARMが発表。MCUベンダ評価ボードはこれから。

・2021年4月6日、STマイクロエレクトロニクスSTM32G0で動作するエッジAI

AIによる推論だけでなく学習も行えCortex-M0+コアでも動作する新アルゴリズムMST:Memory Saving Tree搭載のSTM32G0により既存機器のエッジAI実現可能性が拡大。販売中の弊社STM32G0xテンプレートは、コチラを参照。

・2021年4月15日、MCUXpresso54114の150MHz動作:

開発中のFreeRTOSアプリケーションテンプレートで使うMUCXpresso54114評価ボード搭載のCortex-M4コア最高動作周波数は、旧データシートでは100MHzでした。しかし、MCUXpresso SDKベアメタルサンプルプログラム診ると、追加ハードウェア無しで1.5倍の150MHz動作例が多いのに気が付きます。

LPCXpresso54114の150MHz動作
LPCXpresso54114の150MHz動作

動作クロックを上げるのは、MCU処理能力を上げる最も簡単な方法です。そこで、最新データシートRev2.6(2020年9月更新)を確認したところ、Maximum CPU frequencyが100MHzから150MHzへ変更されていました(Table 44. Revision History)。

データシートも最新情報をチェックする必要がありました。製造プロセスが新しいMCUXpresso54114やSTM32G4(170MHz)などの最新Cortex-M4コアMCUは、どれも150MHz程度の実力を持つのかもしれません。

非接触型体温計と放射温度計

COVID-19の影響で、どこの入口でも見かける非接触型体温計は、遠赤外線センサとLCD温度表示で1000円台から購入できます。一方で、「体温計ではありません」と明記した放射温度計も見た目は同じですが、価格は2倍程度違います。

同じ温度センシング機器でも、価格が異なる理由を探ります。

温度センシング設計ガイド

エンジニアのための温度センシング設計ガイド
エンジニアのための温度センシング設計ガイド

アナログセンサの老舗、Texas Instrumentsのホームページから“エンジニア向け温度センシング設計ガイド”が無料でダウンロードできます。体温、システム温度、周囲温度、液体温度の4種類の温度センシング設計上の課題とその解決方法、センサ利用のアナログデジタル変換(ADC)基礎知識が記載されています。

主にハードウェア設計ガイドですが、MCUソフトウェア開発者も、各種センサ特徴、線形性、第7章の温度補償などが参考になると思います。

温度検出テクノロジーの比較(出典:エンジニアのための温度センシングガイド)
温度検出テクノロジーの比較(出典:エンジニアのための温度センシングガイド)

価格と利益

ビジネスは、利益の上に成立します。低価格でも大量に開発機器が売れれば利益も増えます。機器の価格は、様々なパラメタから成る関数ですが、ここではごく単純化し下式と仮定します。

価格=f(実装機能、想定利用者(≒販売数量))

同じ温度センシング機器でも価格が異なるのは、実装機能が異なるからです。

そこで、TI温度センシング設計ガイド第4章、体温監視から課題と解決方法をピックアップします。

実装機能と想定利用者

想定利用者を疾患患者やアスリートとすると、国際標準に準拠した医療体温計要件である校正後、精度±0.1℃以内、35.8℃~41.0℃の読取りと表示が必要です。但し、アプリケーションの温度読取り間隔は、電池節約のため10秒~60秒でも十分です。

これら機能を非接触型体温計へそのまま実装すると、開発に時間がかかるだけでなく、価格も上がるのは当然です。

CODIV-19の現状では、入口対象者の多くはコロナ患者ではない可能性が高いので、医療体温計レベルの要件は不要でしょう。また、計測機器に必須の測定値校正処理も、一般向けには無理な作業です。

このように、機器使用者/利用者を限定すれば、開発機器への実装機能も絞ることができます。

例えば、電源投入時にのみセンサ校正をソフトウェアで行い、温度読取り間隔は数秒以内に早くし、販売価格を2000円前後に目標設定すれば、一般向け非接触型体温計としてベストセラーになるかもしれません。

開発速度

目標設定が適切でも、開発が遅れれば先行他社に利益を取られます。早く開発できるスキルは、日頃の自己鍛錬が必要です。最新の開発手法やその試行も、通常の開発と並行して行うとスキルに磨きがかかります。

弊社マイコンテンプレートは、複数の公式サンプルソフトウェア流用・活用が容易で、アプリケーションの早期開発ができるなど、自己鍛錬にも適しています。

まとめ

Texas Instrumentsの温度センシング設計ガイドを基に、非接触型体温計と放射温度計の機器価格差は、ADC実装機能、想定使用者が異なるためと推測しました。利益を得るには、開発速度の向上努力も重要です。

ソフトウェアとハードウェアのインタフェースさえ解れば機器開発は可能です。しかし、ADCは、IoT MCUの最重要技術です。ソフト/ハードの垣根を越えた知識や理解が、結局は利益を生む機器開発に繋がることを言いたかった訳です。

新IoT MCU:SubRISC+と組込みJava開発

2021年2月19日、東工大は、ARM Cortex-M0比1.4倍、電力効率2.7倍、エネルギー効率3.8倍のIoT向き新MCU:SubRISC+を65nmプロセスで開発しました。本稿は、このIoT MCU:SubRISC+と、IoTエッジ端末ソフトウェア開発にJavaを使う手法を紹介します。

これらが何をIoTエッジ端末の開発課題にとらえ、それにどのように対処しているかを知るメリットを示します。

様々なIoT開発課題と対処方法

開発プロジェクトが始まると、数か月~数年はその対象デバイスや開発方法に、開発者は係りっきりになります。具体的なIoT開発課題や対象デバイスを深く知ることができますが、問題のとらえ方や視野が狭くなる弊害もあります。

開発と並行して競合する別のアプローチを知ると、この弊害を抑え、課題や問題を多角的、効果的に解決する手立てになります。

例えば、開発中のCOVID-19ワクチンが、変異済み、または変異が予想されるウイルスへも十分な効果が見込めれば、人類にとって役立つでしょう。このための第一歩が、変異ウイルスを知ることと同じです。

SubRISC+

IoTエッジ端末の課題を、「小型化と低消費電力性」と捉え、解を示したのが東工大のSubRISC+です。

従来のプロセサは、実務アプリケーションでは殆ど使われないムダな命令も準備されています。このムダを削減し開発されたプロセサをRISC(リスク、Reduced Instruction Set Computer)プロセサと呼びます。従来プロセサは、RISCに対してCISC(シスク、Complex Instruction Set Computer)と呼ばれます。

関連投稿:ARM MCU変化の背景

SubRISC+は、このRISC手法をIoTエッジ端末の心電図、加速度センシングなどのヘルスケアや、ウェアラブル端末アプリケーションで必須となる命令4個に適用し、CISCのARM Cortex-M0(命令60個)比、小型化省電力化を両立、条件次第ではLR44アルカリボタン電池で約100日連続稼働が可能となります。

小型マイクロプロセッサの比較(出典:東工大ニュース 2021.02.19へ加筆)
小型マイクロプロセッサの比較(出典:東工大ニュース 2021.02.19へ加筆)

なお、SubRISC+は、想定アプリケーション以外へも汎用性(チューリング完全)を持つのでIoTセキュリティ向けなどへの応用も今後目指しています。

Java利用の組込みソフトウェア開発

「C/C++を使った組込みIoTソフトウェア開発の困難さ」の課題に対して、Java開発キット(JDK)で解を示したのが、Azul System社の“IoT組み込みソフトウェア開発に、オープンソースJavaの利用が最適である理由”です。

出展:Ian Skerrett, IoT Developerへ加筆
出展:Ian Skerrett, IoT Developerへ加筆

IoTエッジ端末にもC/C++の代わりにJava利用の仮想マシン(JVM)開発を提案し、ハードウエア非依存のIoTアプリケーション開発ができること、C/C++特有のポインタ利用なし、メモリ管理不要、マルチスレッド環境の無料またはオープンソースIoT APIがあること、などの特徴があります。

結果として、IoT市場への製品投入時間短縮、組込み以外のルータ/クラウド開発者採用が可能、開発コスト削減が可能になるそうです。

他社を知るメリット

例えば、Cortex-M0よりも電力効率が良いCortex-M0+コアとLR44電池を使ってIoTエッジ端末を開発中なら、「100日連続稼働がセールスポイント」になることがSubRISC+から判ります。1個のLR44で足りないなら、複数並列で使うなどの対策も開発中にとれます。

また、IDEシミュレーションを活用し「センサセンシングの電力消費を抑える工夫」を重点的に行うと差別化に効果的など、製品改良プライオリティを付ける手掛りにもなります。

筆者はJava利用開発経験がありませんが、IoTエッジ端末開発に必要となる無線機能やセキュリティなども含めたAPIが提供され、しかもハードウエア非依存だとすると、「本来のIoTエッジ端末アプリケーションそのものに注力した開発」ができます。また、顧客対応に横展開するのも容易でしょう。

IoT市場の変化は激しく、無線やセキュリティ仕様などは、国や地域により大きく変わる可能性もあります。少しでも早く低コストでIoTエッジ端末を市場投入できれば、デファクトスタンダード製品になる可能性もあります。

東工大開発IoT MCU:SubRISC+とAzul 社IoT端末ソフトウェア開発Java利用を例に、IoTエッジ端末開発中に陥りがちな視野狭窄を防ぎ、課題を効果的、プライオリティ付けて解決するために、開発と並行して他社アプローチを知るメリットを示しました。