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

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エッジ端末開発中に陥りがちな視野狭窄を防ぎ、課題を効果的、プライオリティ付けて解決するために、開発と並行して他社アプローチを知るメリットを示しました。

IoT MCUとAI

ARM Cortex-Mコア利用のIoT MCU現状と、次のムーア則を牽引すると言われるAI(人工知能)の関係についてまとめました。

Cortex-Mコア、IoT/組込みデバイス主要ポジション堅持

ARMベースチップ累計出荷個数は1,800億個以上(出展:ニュースルーム、February 16, 2021)
ARMベースチップ累計出荷個数は1,800億個以上(出展:ニュースルーム、February 16, 2021)

2021年2月16日、英)ARM社は、ARMチップの2020年第4半期出荷が過去最高の67憶個、累計出荷個数1800憶個以上、Cortex-Mチップも4半期最高44憶個出荷で「IoT/組込みデバイス主要ポジション堅持」と発表しました(ニュースルーム)。

Cortex-Mチップの出荷内訳は不明ですが、Cortex-M4やCortex-M0+などコア別の特徴が解るARM社の解説は、コチラにあります(フィルタのProcessorファミリ>Cortex-Mを選択すると、提供中の全10種Cortex-Mコア解説が読めます)。

筆者は、セキュリティ強化コアCortex-M23/33/35P/55を除く汎用IoT/組込みデバイスでは、Cortex-M4/M0+コア使用数が急増していると思います。

関連投稿:Cortex-M33とCortex-M0+/M4の差分

半導体ムーア則、牽引はチップレット

ムーアの法則 次なるけん引役は「チップレット」、2021年2月16日、EE Times Japan

次のムーア則を牽引するAI処理能力(出典:AI Hardware Harder Than It Looks)
次のムーア則を牽引するAI処理能力(出典:AI Hardware Harder Than It Looks)

半導体製造プロセスを牽引してきたのは、PCやスマホでした。しかしこれからは、人工知能:AIで急増するAIデータ処理能力を実現するため、レゴブロックのようにコアの各モジュールを歩留まり良く製造・配線するチップレット手法が必要で、このチップレット、つまりAIが次の半導体ムーア則を牽引するというのが記事要旨です。

このチップレット手法で製造したIoT MCUやMPUへ、主にソフトウェアによるAI化は、シンギュラリティ後のAI処理量変化にも柔軟に対応できると思います。

関連投稿:今後30年の半導体市場予測

ルネサス:ハードウェアアクセラレータコアCNN(Convolutional Neural Network)

ルネサスのCNNアクセラレータ(出典:ニュースルーム)
ルネサスのCNNアクセラレータ(出典:ニュースルーム)

2021年2月17日、ルネサスは、世界最高レベルの高性能/電力効率を実現するディープラーニング性能を持つCNNアクセラレータコアを発表しました(ニュースルーム)。これは、主にハードウェアによるAI化の例です。

ADAS実現に向け、性能と消費電力を最適化した車載用コアです。このコアに前章のチップレット手法を使っているかは不明です。3個のCNNと2MB専用メモリの実装により、60.4TOPS(Tera Operations Per Second)処理能力と13.8TOPS/W電力効率を達成しています。

車載で実績を積めば、IoT MCUへも同様のハードウェアアクセラレータが搭載される可能性があります。

まとめ

凸版印刷社は、画像認識AIを活用し、古文書の“くずし字”を解読支援するツールを開発しました(2021年2月16日、IT media)。このように、AIは、半導体技術のムーア則だけでなく、IoT MCUアプリケーションや人間生活に浸透し、牽引しつつあります。

エッジAIをクラウド接続IoT MCUへ実装する理由は、クラウドAI処理とクラウド送信データ量の両方を軽減することが狙いです。AI処理をエッジ側とクラウド側で分担しないと、チップレット手法を用いて制御チップを製造できたとしても、コスト高騰無しに急増するAIビックデータ処理を実現することが不可能だからです。

IoT MCUのエッジAIが、ソフトウェアまたはハードウェアのどちらで処理されるかは判りませんが、必須であることは確実だと思います。実例を挙げると、STマイクロエレクトロニクスは、既にSTM32Cube.AIにより汎用STM32MCUへAI/機械学習ソフトウェアの実装が可能になっています。

今後30年の半導体市場予測とルネサス動向

Runesas

半導体不足が騒がれています。これがCOVID-19の一時的なものか否かが判る下記記事と、最新のルネサスエレクトロニクス動向を関係付け、今後のMCU開発について考えました。

2050年までの半導体市場予測~人類の文明が進歩する限り成長は続く、2021年1月14日、EE Times Japan

今後30年の半導体市場予測

本ブログ読者は、殆どが現役の「日本人」MCU開発者です。定年退職が何歳になるかは分かりませんが、上記記事の2050年まで、つまり、今後30年の半導体市場予測は、在職中のMCU開発を考える上で丁度良い時間の長さです。

予測ですので、大中小のシナリオがあります。我々開発者にも解り易い結論だけをピックアップすると、概ね下記です。

  • 今後、先進国と新興国中間層人口は、COVID-19で人類滅亡しない限りそれぞれ5億人/10年で増加し、2050年に先進国が30億人、新興国中間層が40億人、貧困層が20~30億人の人口ピラミッド構成へ変遷
  • 1人年間の半導体消費量は、先進国が150ドル、新興国中間層が75ドル
  • 2050年の半導体市場は、2010年比2.5倍の7500憶ドルへ成長

ルネサス動向

英)Dialog買収車載半導体改良「AI性能を4倍に」など、SoCアナログ機能増強、ADAS実現やIoTに向けた動きが、2021年になってからのルネサス最新動向です。

これら動向の結果が出るまでには、年単位の時間が必要です。しかし、前章の2050年半導体市場2010年比2.5倍へ向けての行動の1つとすると、なぜ今か(!?)という疑問に対して、理解できます。

2倍化MCU開発

2倍化MCU開発

MCUも半導体の1つです。半導体市場が増えれば、それらを制御するMCU量も増えます。2010年比2.5倍なら、現在の2倍程度MCU開発も増えると思います。

従来と同じ人員と開発方法では、量が2倍になれば、2乗の4倍の労力が必要になります。新しい手法やその効率化なども導入する必要がありそうです。ルネサス同様、今スグに着手しなければ乗り(登り)遅れます。

使用した半導体の貴金属部分はリサイクルされますが、搭載ソフトウェアやハードウェアパターンは回収されずに消費されます。開発物の資産化、最新プロセスで大容量Flash搭載の新開発MCU、新開発手法にスグに対応できるMCU開発者が生き残るかもしれません。

関連投稿:開発者向けMCU生産技術の現状

MCU利用者

先進国だけでなく、新な対象として新興国中間層へもMCU利用者が広がります。新興国中間層は、先進国よりも10億人も多い予想で、1人当たりはより低コスト半導体(=MCU開発)が求められます。

この新興国中間層向けのMCUアプリケーションを検討するのも良いかもしれません。

2045年のシンギュラリティ

Singularity:和訳(技術的特異点)は、人類に代わって人工知能:AIが文明進歩の主役になることです。

最初の記事にも、2045年と言われるシンギュラリティは、一層半導体市場を広げる可能性があるとしています。IoT MCUにもエッジAIが組込まれるなど、今後のMCU開発もAI化は必然です。



開発者向けMCU生産技術の現状

先端半導体の供給不足
先端半導体の供給不足

COVIC-19の影響で自動車、ゲーム機、PC、5Gスマホに搭載される先端半導体の供給不足が発生中です。自動車は生産調整、ゲーム機も品薄のため販売中止のニュースが流れています。一方で、任天堂Sonyは、ゲーム機好調で、業績上方修正も発表されました。

本稿は、これら先端半導体とMCUに使っている半導体の違いを、筆者を含めたマイコン開発者向けにまとめました。

先端半導体供給不足

AppleやQualcommなどの半導体ベンダの多くは、設計・開発は行うものの、生産は台湾TSMCやUMCなど世界に数社しかない先端半導体受託生産会社(ファウンドリー)へ製造依頼するファブレス企業です。このファウンドリーの先端半導体生産量がボトルネックとなり供給不足が発生しています。

需要に追いつくよう生産設備も増設中ですが、スグには対応できません。その結果、価格競争が起こり、ゲーム機など高パフォーマンスで高価格でもOKなデバイスが優先、一方、コスト要求の強い自動車向けデバイスなどは後回しになった結果が、最初のニュースの背景です。

MCU半導体と先端半導体の差

半導体の製造や生産技術は、ムーアの法則に則り、年々微細化が進みます。これは、MCU半導体でも先端半導体でも同じです。違いは、「製造プロセスの世代」と「大容量フラッシュ搭載の有無」です。

最先端半導体の微細化技術は、28nm→14nm→7nmと製造プロセス世代が進み現在5nmなのに対し、MCU半導体は、現在28nmの1つ手前、40nmです。

※微細化の指標は、いかに細いロジック配線を実現できるかで表されnm:nanometerは、1 nm = 0.001 µm = 0.000001 mm:10億分の1メートル。

MCU半導体の微細化が遅れる理由は、MCUデバイスには簡単に微細化できない大容量Flashメモリの内蔵が必須だからです。

つまり、我々が開発するアプリケーションは全てMCUに内蔵される訳で、ここがPCやゲーム機の外付けメモリ+キャッシュ内蔵の制御系と根本的に異なる点です。

最新MCU微細化技術

上記の難しい大容量Flash微細化にも、技術革新が起きつつあります。詳細を知りたい方は、世界最小のメモリセルで最先端マイコンの低価格化を牽引する相変化メモリの記事を参照してください。

IoT MCU開発には、エッジAIや無線通信、高度セキュリティ、OTA:Over The Air更新など従来MCUに無い多くのIoT機能追加が必要です。これら機能実装には、更なる大容量Flash搭載が必須です。

IoT MCUの将来
IoT MCUの将来

大容量Flashの低価格実装と製造プロセスの世代が進めば、MCUデバイスの開発アプリケーション適用幅は大きくなると筆者は思います。つまり、より汎用化すると思います。

現在のMCUは、アプリケーション毎に内蔵周辺回路やFlash/RAM容量が異なるなど多品種でデバイス選択時、開発者を悩まします。しかし、近い将来、IoT MCUデバイス選択に開発者が悩むことも無くなるかもしれません。

関連投稿:無線STM32WBと汎用STM32G4比較の6章

MCU大手ベンダは自社製造中

NXP/ST/Renesas などの大手MCUベンダもファウンドリーを利用しますが、どこも自社工場でも製造を行っています。各社の会社紹介パンフレットには、必ず自社製造拠点の図がありますし、販売後10年間のデバイス供給保証も謳っています。

ARM社提供のCortex-Mコア設計図は同じでも、それを活かす実装設計・開発・製造がベンダ毎に異なるので他社差別化ができる訳です。

また、これらMCUベンダは、自社デバイスと並行して自動車向けデバイスの設計・開発・製造も行っています。ADASやMCU微細化技術の進化、ファウンドリーの供給不足状況などが、MCUベンダ各社に今後どのように影響するかは注目して行きたいと思います。

関連投稿:5G、Wi-Fi6、NXP、STマイクロエレクトロニクスの3章:NXP対応

まとめ

  • MCU半導体と先端半導体には、製造プロセス世代と大容量Flash搭載有無に差がある
  • 現状のMCU半導体は、大容量Flash搭載の40nmプロセス、先端半導体は、5nmプロセス
  • IoT MCUの更なる大容量Flash実装に向け、MCU微細化技術革新が起こりつつある
  • 大容量Flash低価格実装と製造プロセス進化によりIoT MCUはより汎用化する
  • COVID-19による先端半導体供給不足がMCU半導体ベンダへ影響するかは、要注目

Blogテーマ変更とMCU開発顧客満足

本Blogテーマを、今週~来週にかけて変更中です。期間中は、画面表示が乱れる可能性もありますがご容赦ください😌。Blogツール:WordPressにご興味が無い方は、最後の章:MCU開発顧客満足をお楽しみください。

オープンソースCMSのWordPressによるBlog投稿

Blogテーマ変更理由

本Blogは、WordPressというオープンソースCMS(Contents Management System)を使って投稿しています。テーマとは、Blog表示の見た目を変える、着せ替え洋服のようなものです。テーマ変更理由は、2つです。

  1. 約2年前に導入されたWordPressの新しいGutenbergエディタ対策
  2. 昨年後期から続くサイトマップトラブル対策

Gutenbergエディタ

従来のWordPress標準エディタは、Classicエディタと呼ばれ、Web版無償Microsoft Wordのようなものです。基本的な文章エディタ機能を提供し、使い方も簡単でした。これに対し、新しく標準となったGutenbergエディタは、ブロック単位の編集・加工を行うなど操作性や使い方が大きく変わりました。

※Gutenbergエディタは、15世紀に活版印刷技術を発明したヨハネス・グーテンベルクにちなんで命名されました。WordPressの記事投稿に際し、活版印刷登場ほどインパクトがあると言うことです。

旧Classicエディタを使い続けたい多くのブロガーのために、標準Gutenbergエディタを無効化し、Classicエディタを復活するプラグインが提供され、筆者もこれを使い続けてきました。

但し、Gutenbergエディタは、毎年改良され機能や使い方も進化、この進化系Gutenbergエディタ対応の新しいテーマも増えてきました。

xmlサイトマップ

xmlサイトマップは、GoogleやYahoo、Bingなどの検索エンジンへ、弊社Blogの投稿内容等を知らせる手段です。

原因不明ですが、昨年後半から投稿数は週一で増やしているにも係わらず、サイトマップの有効ページ数が減り続けています。検索エンジンにマップされなければ、投稿しても読者に発見されず苦労が報われません。

ネット情報によると、プラグイン間の相性など様々な原因がありえますが、解決しません。いわゆるPCとアプリケーションとの相性問題と同じようです。

そこで、1のGutenbergエディタ対策時に、新テーマ導入と同時にプラグインを変える/減らすなどして対処しようと考えました。

Blogテーマ変更結果

今回のBlogテーマ変更の結果、WordPressの新Gutenbergエディタは習得しました。

しかし残念ながら、サイトマップトラブルは、更に悪化しました。プラグイン相性だけでなく、新導入テーマにも関係している可能性もありますが、依然として原因不明です。

算定措置として、Gutenbergエディタと新テーマ利用へ変更し、追加プラグインは最小にします。サイトマップトラブルは、継続検討とします。

MCU開発顧客満足

MCU開発でも課題に対し期待する成果が得られない等は、筆者には日常茶飯事です。費やした時間やコストは、戻ってきませんが、実際にやってみなければ本当は判らない事だらけなのがMCU開発業務です。

MCU開発業務は、以下2点の配慮が必要です。

  1. スケジュール立案時は、マージンを織り込む
  2. 成果に直結しない結果でも、今後に活かす

※織り込んだマージンを使わず成果が出た時は、未消化マージンをリフレッシュ休暇に替えます😁。

今回の対策も、年末年始の予定でした。しかし、新テーマの多さやその理解に時間がかかり、結局マージンを使い果たし1月末実施、そして少ない成果となりました。顧客は、自分自身ですが顧客満足は低いです。

しかし、成果に直結しなくても得た(貴重な!?)結果もある訳です。これを今後に活かす事が、費やした時間やコストを無駄にしない唯一の策で、しかも長い目で見れば、顧客満足にも繋がると信じます😤。

MCU開発は、日々の努力が、即成果に結びつかなくても、将来必ず顧客を満足させる結果・スキルになると自分を信じて続ける心構えが重要です(日本では、周囲になかなか理解してもらえないと思いますが😭、欧米開発者は、これがあたりまえの文化でした)。

無線STM32WBと汎用STM32G4比較

STマイクロエレクトロニクスの近距離無線通信機能付きSTM32WB(Cortex-M4/64MHz)と、汎用メインストリームSTM32G4(Cortex-M4/170MHz)を比較します。

Bluetoothなどの超省電力無線通信は、IoTデバイスに好適です。無線機能付きSTM32WBのIoTアプリケーション開発方法を調査し、汎用STM32G4を使ったSTM32WBのIoTアプリケーション開発の可能性とメリットを検討しました。

ディアルコアSTM32WBとシングルコアSTM32G4

STM32WBとSTM32G4、どちらもARM Cortex-M4コアを持つMCUです。違いは、STM32WBが、無線処理専用Cortex-M0+コア/32MHz内蔵のディアルコアMCUという点です。

Cortex-M4とM0+コア間のアプリケーションは、プロセス間通信コントローラ(IPCC)によりノンブロックイングで割込み利用のメッセージ交換が可能です。IPCCは、コアをSleep/StopモードからRunモードへ復帰させることもできますので、両コアは別々に低消費電力動作ができます。

STM32WBシリーズの紹介スライドP2から抜粋したSTM32WBとSTM32G4の位置づけが下記です。ワイヤレスマイコンのSTM32WLとSTM32WBの違いは、WLはLoRaWANなど、WBはBluetoothなどのサポート無線規格が異なる点ですが、Cortex-M4とM0+のディアルコア構成は同じです。

STM32WBとSTM32G4の位置づけ(出典:STM32WBの紹介)
STM32WBとSTM32G4の位置づけ(出典:STM32WBの紹介)

無線コプロセッサ:Cortex-M0+コア

STM32WBのCortex-M0+コアは、Bluetooth 5、ZigBee、OpenThreadなど2.4GHz帯無線通信処理専用です。ユーザ(開発者)は、利用する無線規格(BLE⇋ZigBeeなどのブリッジも可能)を選択し、STマイクロエレクトロニクス開発の無線専用ファームウェアをCortex-M0+へダウンロードします。但し、このファームウェアに手を加えることはできません。

言い換えれば、Cortex-M0+側の無線処理はSTの動作保証付きで、ファームウェアバージョンアップなどのメインテナンスは必要ですが、ユーザ変更などは不必要、ブラックボックスとして扱える訳です。

つまり、見た目はディアルコアですが、STM32WBのCortex-M0+は無線コプロセサで、外付け無線モジュールと同等です。従って、ユーザが開発するSTM32WBのIoTアプリケーションは、シングルコアのSTM32G4と同じ手法で開発が可能です。

Bluetooth 5(BLE含む)とサンプルプログラム

STM32WBの無線規格は、Bluetooth5やZigBeeなど複数プロトコルをサポートしています。このうち、IoTセンサの少量データ収集アプリケーションに好適なBluetooth5とBLEの詳細は、Bluetooth Low Energyプロトコルの基礎知識に説明があります。BLEを利用するIoTセンサ・アプリケーションを開発する場合には、最低限必要となる知識です。

STM32WBには、開発環境STM32CubeWBP-NUCLEO-WB55評価ボードで動作する様々なBLEサンプルプログラムがあります。サンプルプログラムの解析やこれらを応用したIoTアプリケーション開発時、BLE基礎知識が役立ちます。

また、P-NUCLEO-WB55評価ボードとスマートフォンをBLE接続し動作するサンプルプログラムもあります。

FSU: Firmware Upgrade Services

ディアルコアSTM32WBのCortex-M4アプリケーション開発時は、Cortex-M0+ファームウェアも同時にFlashへ書込みます。この点が、シングルコアSTM32G4開発と異なる部分です。

このFlash書込みには、STM32CubeProgrammmerのコマンドライトツール(CLI)で提供されるFSU:Firmware Upgrade Servicesを使います(動画説明はコチラを参照してください)。

簡単に言うと、Cortex-M4とCortex-M0+でメモリ共有中のFlashへ、ユーザ開発Cortex-M4アプリケーションを書込む時に、同時に通信Cortex-M0+ファームウェアも更新する仕組みで、手順さえ守れば通常のSTM32CubeIDEを使ったシングルコアSTM32G4のFlash書込み同様簡単です。

Flash書込み後は、STM32G4と同じ方法でアプリケーションデバッグを行います。

無線通信機能付きディアルコアSTM32WBと汎用シングルコアSTM32G4比較結果

P-NUCLEO-WB55とNUCLEO-G474RE
STM32WB評価ボードP-NUCLEO-WB55(左)とSTM32G4評価ボードNUCLEO-G474RE(右)

本稿で示したSTM32WB関連情報は、昨年末に行われたSTマイクロエレクトロニクス日本語ウェビナー資料から抜粋したもので、STM32マイコン体験実習(Bluetooth®編)でオリジナル動画とスライドが公開中です。また、STM32WBトレーニング資料Cortex-M4トレーニング資料も参考にしました。

前章までで、無線通信機能付きディアルコアSTM32WBと汎用シングルコアSTM32G4を比較し、下記を得ました。

  • ディアルコアSTM32WBのCortex-M0+側は、通信コプロセサでブラックボックとして扱える。
  • 例えば、IoTセンサデータ収集などのCortex-M4側IoTアプリケーションを、HAL(Hardware Abstraction Layer)APIで開発すれば、通信部分は異なるがデータ収集部分はSTM32WBとSTM32G4で共通開発できる。
  • STM32WBとSTM32G4で異なる点は、評価ボードへのFlashプログラミングだが、手順は簡単。
  • STM32WBのFlashプログラミングで用いたSTM32CubeProgrammerは、STM32G4のRoot of Trustで用いたもので、STM32WBでもSTM32G4と同様のRoot if Trustを実現できる。

HAL APIはコチラの関連投稿などを、STM32G4のRoot of Trustはコチラの関連投稿を参照してください。

STM32WBのIoTアプリケーションを汎用STM32G4で開発

最初の図に示したCortex-M4動作最高周波数の64MHzと170MHz、デバイスFlash/RAM容量差に注意すれば、STM32WBのIoTアプリケーションを汎用STM32G4で開発することは、可能でメリットもあると思います。

前提条件として、HAL API開発であること、STM32WBのIoTアプリケーション用Flash/RAM容量が、無線通信コプロセサCortex-M0+が使っても十分残ること、無線通信の代用としてUSARTなどの有線通信を使うこと、などです。FreeRTOS利用が良い場合があるかもしれません。

無線コプロセサCortex-M0+使用容量は、かなり少なく(ウェビナーでは使用量が公表されましたが数値未取得)Cortex-M4 IoTアプリケーション用空き容量は十分あります。また、汎用STM32G4の方が高速動作のため開発制約条件も緩いです。無線では、通信断時のエラー処理検討が必要ですが、有線ですのでエラー処理なしで本来の通信処理は開発可能です。

つまり、STM32WBの無線通信エラー処理以外は、ほぼ全て汎用STM32G4で代用開発が可能です。

Cortex-M4クラスMCUは、どれも高速で大容量Flash/RAMを実装し高いポテンシャルを持っています。つまり、IoTプロトタイプ開発とその評価には、最適なデバイスです。

汎用STM32G4で代用開発済みアプリケーションをSTM32WB/STM32WLへ移植し、IoTプロトタイプ開発をスピードアップするメリットは、差分開発、つまりIoT特有機能の差分を開発ができることです。

ある程度MCU開発経験を持つ開発者が、従来MCU開発では少なかった無線通信や高度なIoTセキュリティなどのIoTアプリケーション特有の重点ポイントに注力でき、即座にIoTプロトタイプ開発(代用開発含む)とそれを評価するツールとなること、これが弊社Cortex-M4テンプレートの目標です。

評価の結果、仮にMCUやIoTセンサ、無線機能の再選択が必要となっても、開発部分の多くが次に即座に流用できるソフトウェア資産となるには、汎用STM32G4によるIoTプロトタイプ開発が有効だと思います。

具体的には、従来テンプレートとは「対象者レベルと目的を変える」ことを検討中です。

  • 従来Cortex-M0/M0+/M3テンプレートは、対象者が初心者/中級レベル開発者で、MCU基本動作(Simpleテンプレート)とADC/LCD動作(IoT汎用Baseboardテンプレート)を提供し、基本的なMCU理解と開発が目的のテンプレート
  • Cortex-M4テンプレートは、対象者が中級レベル以上の開発者で、MCU基本動作などは省き、IoTプロトタイプ開発高速化が目的のテンプレート

本稿説明がすんなりとご理解頂ければ、中級レベル以上の開発者、Cortex-M4テンプレート対象者だと思います。

Cortex-M4テンプレートの対象レベルと目的
Cortex-M4テンプレートの対象レベルと目的

News

2021年1月12日、STM32CubeとMicrosoftのAzure RTOSが統合、STM32マイコン開発環境で協力というニュースが発表されました。STのCortex-M4テンプレートは、FreeRTOSとAzure RTOSの両方が必要かもしれません。

STブログに、上記の詳細情報があります。

Kinetis Lテンプレート発売

FRDM-KL25ZとIoT汎用Baseboardを使った、NXP Kinetis Lシリーズ向けテンプレートを1000円(税込)で発売します。

IoT Baseboardテンプレート
IoT Baseboardテンプレート

IoT BaseboardテンプレートのVCOM
IoT BaseboardテンプレートのVCOM

IoT Baseboardテンプレート右横から
IoT Baseboardテンプレート右横から

Kinetis LシリーズとFRDM-KL25Z

超低消費電力と高性能を特徴とするNXPのKinetis Lシリーズは、2013年旧Freescale発売のCortex-M0+コア汎用マイコンです。FRDM-KL25Z(Cortex-M0+:48MHz、Flash:128KB、RAM:16KB)は、このKinetis Lシリーズ汎用マイコン習得ができる低コスト評価ボードです。

FRDM-KL25Zは、MCUXpresso SDK内にFreeRTOSとUSBのサンプルプロジェクトもあり、またmbed開発も可能です。様々なMCUアプリケーション開発に汎用的に使え、初心者から中級レベル以上の方でも満足できる仕様を持っています。

今年で発売から8年経過したKinetis Lシリーズは、最新のNXP開発環境MCUXpresso IDE/SDK/CFGでサポートされており、弊社Kinetis Lテンプレートもこの最新開発環境で開発しました。

Kinetis Lテンプレート

FRDM-KL25Z評価ボードのVCOMGPIOタッチスライダなどの基本的な使い方は、本ブログで既に説明してきました。

問題は、これら使い方を複数組み合わせてアプリケーションを開発する段階になった時、具体的にどうすれば開発できるかがマイコン初心者には解りにくく、つまずき易い点です。

Kinetis Lテンプレートは、この問題に対して1つの解決策を示します。詳細は、Kinetis Lテンプレートサイトと、付属説明資料のもくじ(一部ダウンロード可能)を参照ください。

FRDM-KL25Zで動作確認済みのKinetis Lテンプレートには、FRDM-KL25Z単体動作のシンプルなテンプレート応用例(Simpleテンプレート:下図)と、LCDやポテンショメータが動作し、様々なArduinoシールド追加も簡単にできるIoT汎用Baseboardとを併用したテンプレート応用例(IoT Baseboardテンプレート:最初の図)の2種類を添付しています。

Simpleテンプレート
Simpleテンプレート

SimpleテンプレートのVCOM
SimpleテンプレートのVCOM

マイコン初心者や中級レベル開発者の方が、テンプレート付属説明資料とSimpleテンプレートを利用するとKinetis Lシリーズの効率的習得、IoT Baseboardテンプレートを利用するとLCD/ADC動作済みでシールド追加も容易な段階からアプリケーション開発やIoTプロトタイプ開発が直に着手できるツールです。

これらテンプレートに、もくじ内容の付属説明資料を付けて1000円(税込)で販売中です。購入方法は、コチラを参照ください。

FRDM-KL25ZのFreeRTOSとUSB

MCUXpresso SDKが提供するFRDM-KL25Z評価ボードFreeRTOSサンプルプロジェクトは、弊社MCU RTOS習得(2020年版)で解説したNXP LPCXpresso54114 (Cortex-M4:100MHz、Flash:256KB、RAM:192KB)と同じ内容です。このRTOS習得ページを参照すれば、FRDM-KL25ZによるFreeRTOS理解も容易です。

また、難易度は高くなりますがUSBサンプルプロジェクトも、参考になる情報満載です。これらFreeRTOS、USBサンプルプロジェクトは、中級レベル以上のマイコン開発者に適しています。

初心者、中級レベル向け弊社Kinetis Lテンプレート付属説明資料には、FreeRTOS、USB関連情報は情報過多になるため含んでおりません。

テンプレート付属説明資料の範囲
テンプレート付属説明資料の範囲

しかし、テンプレートを使ってKinetis Lシリーズマイコン開発を習得すれば、スキルを効率的にレベルアップでき、難易度が高いFreeRTOSやUSB開発へも挑戦できます。

つまり、Kinetis Lテンプレートは、初心者、中級レベルの上級マイコン開発者への近道とも言えます。

あとがき

年末年始休暇中に、Cortex-M0+コアのKinetis Lテンプレート発売に何とかたどり着きました。

2021年は、Cortex-M4コアテンプレート化、無線やセキュリティなどのIoT MCU重要課題に対してサイト/ブログを見直すか?とも考えております。皆様のご意見、ご要望などをinfo@happytech.jpへお寄せ頂くと参考になります。

本年も引き続き、弊社マイコンテンプレートサイトと金曜ブログ、よろしくお願いいたします。

2020マイコンテンプレート案件総括

COVID-19パンデミックの2020年も残すところ2週間になりました。2020年の金曜ブログ投稿は本日が最後、次回は2021年1月8日(金)とし休暇に入ります。

※既存マイコンテンプレートは、年中無休、24時間販売中です、いつでもご購入お持ちしております。

2020マイコンテンプレート案件総括

  1. 🔴:Cortex-M4コア利用のマイコンテンプレート開発(2020年内)
  2. 🟡:FRDM-KL25ZとIoT汎用Baseboard利用のKinetis Lテンプレート発売(12月)
  3. 🟢:IoT MCU向け汎用Baseboard開発(10月)
  4. 🟢:STM32FxテンプレートV2発売(5月)
  5. 🟢:STM32G0xテンプレートV2発売(5月)

1のCortex-M4テンプレート開発は、STM32G4のRoot of Trustと、NXP LPCXpresso54114のRTOSサンプル解説で、Cortex-M4テンプレート化には程遠い状況です(赤ステータス)。

2のKinetis Lテンプレート(FRDM-KL25Z、Cortex-M0+/48MHz、Flash:128KB、RAM:16KB)は、添付説明資料作成が未着手です(黄ステータス)。

3のArduinoプロトタイプシールド追加、IoT MCU汎用Baseboardは完成しました(緑ステータス)。

4と5のSTM32FxテンプレートSTM32G0xテンプレート発売までは、ほぼ順調に進みました(緑ステータス)。

対策としてブログ休暇中に、2のKinetis Lテンプレート完成と、これに伴うHappyTechサイト変更を目標にします。
1のCortex-M4テンプレート開発は、2021年内へ持越します。

ブログ記事高度検索機能(1月8日までの期間限定)

休暇中、ブログ更新はありません。そこで、読者の気になった過去の記事検索が、より高度にできる下記Googleカスタム検索機能を、1月8日までの期間限定で追加します。

上記検索は、WordPressのオリジナル検索(右上のSearch…窓)よりも、記事キーワード検索が高度にできます。少しでもキーワードが閃きましたら、入力してご活用ください。

あとがき

激変の2020年、テンプレート関連以外にも予定どおりに進まなかった案件や、新に発生した問題・課題も多数あります。例年より少し長めの休暇中、これらにも対処したいと考えております。今年のような環境変化に対し、柔軟に対応できる心身へ変えたいです(ヨガが良いかも? 3日坊主確実ですが…😅)。

本年も、弊社ブログ、HappyTechサイトをご覧いただき、ありがとうございました。
今後も、引き続きよろしくお願いいたします。よいお年をお迎えください。

Cortex-M33とCortex-M0+/M4の差分

STマイクロエレクトロニクスが、STM32マイコン体験実習(セキュリティ編①~⑤)という動画でCortex-M33 TrustZone解説とSTM32L5(Cortex-M33/110MHz、Flash/256/512KB、RAM/256KB)のセキュリティ実習を行っています。

このセキュリティ編①:31min17secから、IoT MCU向けセキュリティ強化Cortex-M33コアのARM TrustZoneマイコンと、通常Cortex-M0+/M4コアマイコンとの差分を抽出しました。TrustZoneマイコン基礎知識の習得が目的です。

Cortex-M33とCortex-M0+/M4差分

セキュリティ編動画①~⑤概要

①P3(動画①、スライドP3を示します)に、動画①~⑤の概要が示されています。動画①でCortex-M33コアの解説、②でSTM32L5開発環境の準備、後半③~⑤でSTM32L5評価ボード:NUCLEO-L552ZE-Q(¥2,303 Mouser)を使ったセキュリティ演習という構成です。

本稿は、動画①から、ARM TrustZone Cortex-M33コアと通常Cortex-M0+/M4コアとの差分を一覧表にしました。

※ARM公式差分情報を知りたい方は、①P48の参考文献が参考になります。

Cortex-M33とCortex-M0+/M4の差分

オンデマンド動画ですので、好きな個所で止める、再生読度を変えるなどが可能です。動画①は、筆者が経験したTrustZone解説の中で最も分かり易い動画です。

特にP36/P37/P39は、4段階に増えたステート処理内容が具体的に判りTrustZoneマイコン特徴理解に役立ちます。
また、P19は、様々なセキュリティレベルと対応STM32MCUのセキュリティ機能差が一目で判る重要な資料です。

要旨(ARM TrustZone Cortex-M33と通常Cortex-M0+/M4差分)
7 ソフトウェア攻撃防御策がTrustZone。物理攻撃対策はセキュアマイコン(≠汎用MCU)が有効。
12 Secure呼出し=予め決めた手順で内蔵周辺回路(I2C/SPI/RAMなど)へアクセスする技術
Security Isolation=Secure呼出しを使い通常アクセスと隔離・分離する技術
ARM TrustZone=Security Isolationを対象MCUで柔軟に構成する技術
16 タンパ=物理攻撃を検出→検出後バックアップレジスタやSRAM自動消去
JTAGピン無効化→設定後はGPIOなどで運用
WRP(WRite Protection):数KB単位設定可能
RDP(ReaD Protection):JTAG読出し禁止→読出検出でプログラム実行停止→PORで解除
Secure Memory=起動時のみ読出し可能な領域
17 MPU(Memory Protection Unit):最大16個メモリ領域の読書き、命令実行許可/禁止設定
18 セキュリティは単独では効果が薄く、複数重ね攻撃への敷居を上げ強化(暗号鍵保存例掲載)
19 STM32マイコン内蔵セキュリティ機能差一覧。TrustZone対応はSTM32L5のみ(2020/12時点)
STM32G0/G4(Cortex-M0+/M4)でもSRAM RDP機能などあり
22 TrustZoneは、アドレス空間とバス通信の両方をハードウェア監視しアクセス制御
23 アドレス空間監視=コア内蔵SAU IDAU、バス通信監視=TZ(TrustZone) ControllerとAHBバス
24 STM32L5は、内部FlashアクセスにST独自Flashレジスタとオプションバイトで保護
26 TrustZone-aware周辺回路=DMA1&2/GPIO…などAHB接続回路は個別セキュリティ設定要
上記以外がSecurable周辺回路=UART/SPI…などでAHB/APBブリッジがアクセス監視
29 従来MCUベアメタル開発は、mainループも割込みハンドラも常に特権モード動作の1段階
30 従来MCUのRTOS開発は、割込みハンドラ/RTOSが特権モード、ユーザタスクは非特権の2段階
32 Secureステート追加TrustZoneは、4段階化→各層の処理配置がTrustZoneソフト設計第一歩
35 Secureソフトと従来ソフトのプロジェクト差一覧
(セキュリティ関連設定はSecureソフトのみ可能でmain関数はあるがmainループなしなど)
36 TrustZoneマイコンベアメタル開発の4段階ステート処理配置例(TrustZoneソフト設計例1)
37 TrustZoneマイコンRTOS開発の4段階ステート処理配置例(TrustZoneソフト設計例2)
38 TrustZoneソフト開発時、Secureソフトと通常ソフトの2プロジェクト作成必要
39 TrustZoneソフトの基本実行フロー(Secureソフトから通常ソフトへの処理内容一覧)
40
41
42
Secureステートと通常ステートのアドレス空間の見え方差まとめ
44 動画①全体まとめ
45 STM32L5開発時のキーポイント一覧(全18項目)
46 STM32L5開発時のキーポイント演習項目一覧(18項目中9項目を動画③~⑤で演習)
48 おすすめARMv8-M(Cortex-M33コア)TrustZone参考文献一覧

TrustZoneマイコン開発は工数2倍、スキルも必要

動画①は、他ベンダのARM Cortex-M33 TrustZoneマイコン開発でも基礎知識が得られます(※P24のST独自Flashレジスタとオプションバイト保護は除く)。IoT MCU向けセキュリティ強化Cortex-M33コアで導入されたTrustZoneを活用するには、①の理解は最低限必要です。

従来Cortex-M0+/M4に比べ、Cortex-M33シングルコア開発でもSecureと通常(Normal)ソフトウェアの2プロジェクト必要、メモリ空間と周辺回路のセキュリティ設定必要(メモリ分割損も生じると予想)、JTAGピン無効化など、従来のアプリケーション開発とそのデバッグに加え、ソフトウェア攻撃対策TrustZone導入による工数やその動作確認/解除などの手間が余分に必要になります。

このTrustZone導入オーバーヘッドは、少なくないです(セキュリティ編②~⑤でオーバーヘッド工数が判ります。補足章に動画②~⑤リンク添付)。Cortex-M33コア最高速度が110MHzと他コア比高速で、Flash/RAMも大容量なのは、このオーバーヘッドのハードウェア対策だと思います。

TrustZoneマイコンのソフトウェア開発工数は、同じアプリケーションの通常マイコン開発の2倍程度は必要になると思います。また、TrustZone起因のトラブルに対する分析スキルも必須です。

ソフトウェア攻撃に対する防御壁の高さは、言い換えると、ソフトウェア開発のし難さと等価です。セキュリティレベルが上がるにつれ、開発コストも上がります。

全てのIoT MCUがTrustZone対応MCUである必要は無いと思います。コスト重視の場合は、従来Cortex-M0+/M4コアでセキュリティ強化対応(例えば、関連投稿:STM32G0/G4のRoot of Trust(1)~(3)など)でも使える可能性があります(関連投稿:IoT MCUコア次世代像のIoT MCUコアの3層構造最下層のFront End IoT MCUに相当)。

セキュリティは、強固な方が良いのは当然ですが、それ相応の追加コストも生じます。セキュリティ対コストの観点からIoT MCUの選択が必要となるでしょう。

* * *

セキュリティ対策は、いわば自動車保険のようなものです。保険代金の負担は、開発者かエンドユーザか、エンドユーザがTrustZone導入オーバーヘッドを理解することは難しいと思いますので悩ましい問題です😅。

Cortex-M33 TrustZoneマイコンは、ソフトウェア開発者が記述した処理を攻撃とマイコンが誤認識(正常認識)した場合は、無視、あるいは最悪、マイコンを使用不能にします。見つけにくい無視された処理が、開発者起因か、あるいはTrustZone起因かを分析できるスキル、これが、通常マイコン開発との最大の差分です。

STM32マイコン体験実習は、TrustZone起因スキルを習得できるよく考えられた教材です。

補足

STM32マイコン体験実習(セキュリティ編②
STM32マイコン体験実習(セキュリティ編③
STM32マイコン体験実習(セキュリティ編④
STM32マイコン体験実習(セキュリティ編⑤

関連投稿:STM HTML版マンスリー・アップデートの見かた4章の全体像リンク集なども役立ちます。

Cortex-M33コア以外でTrustZone技術を用いたマイコンは、Cortex-M35P、Cortex-M23があります。