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

最新ARM Cortex-Mマイコン動向とIoT MCUを特徴付ける3要素

最新ARM Cortex-Mマイコン:MCU製品からその動向を調査します。前稿ルネサスエレクトロニクス(以下ルネサス)RL78ファミリの汎用MCU変遷に続き、ARM Cortex-MコアMCU編という位置づけです。最後に両者を比較し、IoT MCUを特徴付ける3要素についての私見を示します。

最新ARM Cortex-Mマイコン製品の特徴

本ブログ掲載中のベンダ各社とMCUです。

ブログ掲載中の各社MCU
ブログ掲載中の各社MCU

ルネサス以外は、全てARM Cortex-Mコアを用いています。これらをARMコア製品、一方ルネサスはNon ARMコア製品と呼ばれます。現在のMCUは殆どがARMコア製品です。

各社ともIoT向けのMCU新製品を発売中です。その中からNXPセミコンダクターズ(以下NXP)のLPC51U68 MCU(2018年3月発売)をピックアップし特徴を抽出します。

LPC51U68は、8/16ビット置換えを狙う低消費電力Cortex-M0+コアを最大100MHz動作まで高め、USB2.0、256KB ROM、96KB RAM実装、12bit 5Mspsと高機能ADC内蔵のMCUです。

LPC51U68 MCU Block Diagram (出典:LPC51U68 Fact Sheet)
LPC51U68 MCU Block Diagram (出典:LPC51U68 Fact Sheet)

コア速度のアプリケーション対応(置換えからIoT市場開拓へ)

32ビットCortex-M0/M0+コア本来の目的は、既存8/16ビットMCUの置換えです。従ってこれまでは、既存MCU(例えばルネサスS1/S2/S3コア)速度と同等の30~50MHzがCortex-M0/M0+コア動作速度でした。しかし、NXPはより低速で低消費電力な8MHzや15MHzのコア速度の新製品を発表しました。

関連投稿:8MHz Cortex-M0+コア採用のLPC8N04

関連投稿:15MHz Cortex-M0+コア採用のLPC80x

つまり、既存MCU置換えだけでなく、よりアプリケーションに適したコア速度採用のARMコア製品の一環として開発されたのが紹介した100MHz動作のLPC51U68です。

ARMコア製品は、8/16ビット置換えから、IoTアプリケーション市場開拓への展開も始めたと言えるでしょう。

IoT向きの周辺回路実装(汎用からIoTアプリケーションMCUへ)

従来MCUもUSB接続でプログラムダウンロードやデバッグはできます。これらに加えLPC51U68のUSBは、USB 2.0ホスト機能もライブラリで提供します。PC同様、USBキーボードやデータロガー用に簡単に大容量USBメモリがMCUに接続できるので、HMI(Human Machine Interface)に優れたIoTデバイスが開発できます。

ADCもE-meterなどにも使いやすいような高機能版が用いられています。

ROM/RAM容量が増えるのは、これらIoT向け周辺回路を制御・活用するために必要で、副次的なものと言えるでしょう。

評価ボードLPCXpresso51U68 (OM40005) Development Board価格も¥3,518(DigiKey調べ)であることから、これだけ機能が増えても、従来ARMコア製品と同レベルで入手できると思われます。

LPCXpresso51U68 (OM40005) Development Board
LPCXpresso51U68 (OM40005) Development Board

最新ARM Cortex-Mマイコン動向まとめ

NXP)LPC51U68だけでなく、競合他社Cortex-M0/M0+/M3新製品についても同様の傾向が見られます。最新Cortex-Mマイコンの動向をまとめたのが下記です。

  1. IoTアプリケーションのためコア動作速度を数MHz~100MHz超の範囲で電力消費最適化
  2. USBホスト機能や高機能アナログなど、IoTアプリケーション対応高機能周辺回路を実装

一方、前稿Non ARMコア製品のルネサスMCU動向をまとめると、

  1. 低消費電力16ビットS1/S2/S3コアの使い分けで、きめ細かな電力消費へ対応
  2. アナログ機能やモータ制御機能を追加実装し、IoTアプリケーションMCUへ展開

どちらも、無線通信やセキュリティの要求が高いIoT MCUに対して、従来の汎用MCU製品のままでは対応しにくく、より具体的なIoTアプリケーションへ向けた機能拡張を行い、セミASSP的なIoT MCU製品となっています。
※セミASSP:汎用MCUをベースに、特定アプリケーション向けに調整したMCU。汎用MCU開発に慣れた開発者が、特定アプリ開発に臨む時、ASSPに比べ馴染みやすく開発障壁が低い。

ARMコア製品が柔軟性や拡張性に富み、一方で、Non ARMコア製品のルネサスもIoT向きに汎用MCUを調整しています。いずれにしても汎用MCUは、よりアプリケーション向きのMCUへ変化しつつあります。

IoT MCUを特徴付ける3要素

IoT MCUは、以下3要素から構成されると考えると理解が容易になります。

  1. IoTアプリケーション対応高機能周辺回路
  2. MCUコア
  3. 汎用周辺回路:タイマー、GPIO、UART、I2C、一般的ADC

先ず、どのようなアプリケーションにMCUを使うかで「IoTアプリケーション対応周辺回路」が実装されます。例えば、USBホスト機能が必要なアプリであれば、NXP)LPC51U68などです。

次に、そのアプリケーション周辺回路制御に十分な動作周波数や性能をもつ「MCUコア」が決まります。

最後に、「汎用周辺回路:タイマーやGPIO、UART、I2C回路」の実装数がアプリケーションに対して十分か調べます。

IoT MCUの3要素
IoT MCUの3要素。NXP)LPC51U68の分解例と開発方法。

多くのアプリケーションに広く対応できる汎用MCUの汎用周辺回路のみで開発できるアプリケーションであれば、実績が多い汎用MCUを選び、IoTに必要となる無線やセキュリティ機能を外付け部品で構成すると良いと思います。

より具体的なIoTアプリケーションに対応する場合は、IoTアプリケーション対応周辺回路を持つ各社の新製品MCU(セミASSP MCU)を選び、開発するのが良いと思います。

「IoTアプリケーション対応高機能周辺回路」とは、文字通りアプリに応じた開発や応用、最適化が必要です。各社はこのIoTアプリケーション対応周辺回路に対して、ライブラリやアプリケーションノートを提供しますので、開発はそれらを応用、流用するとリスクが低くなります。

一方、「MCUコア」と「汎用周辺回路:タイマーやGPIO、UART、I2C回路、一般的なADC」は、既存の開発ソフトウェアやハードウェアがほとんどそのまま使える可能性が高い部分です。

IoT MCUを早期開発するには、この既存ソフトウェアやハードウェアを流用し、より多くの時間をIoTアプリケーション開発へ配分する方法が適します。弊社マイコンテンプレートは、この汎用開発部分に役立ちます。ご活用ください。

RL78ファミリから解る汎用MCUの変遷

汎用MCUの定義が変わりつつあります。ルネサスエレクトロニクス(以下、ルネサス)のRL78ファミリから、最近の汎用MCUの変わりつつある現状を考察します。

RL78ファミリの汎用MCUロードマップ

2018年6月版の最新RL78ファミリMCUカタログから抜粋したRL78ファミリのロードマップです。

RL78ファミリロードマップ (出典:ルネサス汎用MCUラインアップカタログ)
RL78ファミリロードマップ (出典:ルネサス汎用MCUラインアップカタログ)

赤囲みのRL78/G1xが汎用MCU製品を示します。2014年以後は、For小型システムやForモータシステムなど、一見するとASSP:application-specific standard product、特定用途向けMCUのような製品が汎用MCUの中にあります。

これは、RL78/G1Fのコンセプトを見るとその理由が理解できます(出典:ローエンドマイコンで実現できる 高機能なブラシレスDCモータ制御

RL78_G1Fのコンセプト(出典:ローエンドマイコンで実現できる 高機能なブラシレスDCモータ制御)
RL78_G1Fのコンセプト(出典:ローエンドマイコンで実現できる 高機能なブラシレスDCモータ制御)

つまり、汎用MCU RL78/G14を、モータシステム向きに周辺機能拡張や使い勝手を向上させたのがRL78/G1Fなのです。あくまで汎用MCUがベースで、それを特定用途、この場合はモータ制御向けに調整したのです。

このメリットは、開発者、ルネサス双方にあります。開発者にとっては、使い慣れた汎用MCUの延長上に特定用途向けMCUがあるので馴染みやすく開発障壁が低くなること、ルネサスにとっては、新規ASSPを開発するよりも低コスト、低リスクなことです。

RL78ファミリの汎用MCUとは、変わる定義

RL78ファミリのMCUには、S1/S2/S3という3種類のコアがあります。数字が大きくなると高性能になります。

関連投稿:RL78 S1/S2/S3コアの分類

ルネサスの汎用MCUとは、これらS1/S2/S3コアを使ったMCU製品を指します。また、RL78/G1FのようにS3コアMCUのRL78/G14をベースとし、特定用途向け機能を付加したものも汎用MCUです。

※弊社は、S1/S2/S3コアの各汎用MCUに対してRL78/G1xテンプレートを販売中です。

販売中の汎用MCU向けテンプレートと特定アプリ向けMCUの関係
販売中の汎用MCU向けテンプレートと特定アプリ向けMCUの関係

この特定用途名が、ルネサスが考えるIoT時代にふさわしい汎用MCUと言えます。「汎用」という従来の広く漠然とした用途よりも、より「具体的な用途・応用に適す汎用MCU製品」としてRL78/G1FやRL78/G11があるのです。

特定用途向け汎用MCU開発にもRL78/G1xテンプレートが役立つ

このIoT時代の特定用途向けMCU開発でも、弊社RL78/G1xテンプレートが使えます。ベースが「汎用中の汎用」RL78/G10(S1コア)、RL78/G13(S2コア)、RL78/G14(S3コア)だからです。

例えば、RL78/G1Fのアプリケーションノートやサンプルコードは、具体的でほとんどそのまま開発製品へ適用できます。しかし、用途が限定されているだけに、逆に簡単な機能追加が難しい場合もあります。そんな時に、テンプレートが提供するサンプルコードを活かしつつ処理を追加できる機能を使うと便利です。

ここでは、ルネサス汎用MCUについて考察しましたが、NXPセミコンダクターズやSTマイクロエレクトロニクス、Cypressセミコンダクターなどの他社MCUベンダも同様です。汎用MCUの定義は、より具体的な用途・応用名が付いたIoT MCUへ変わりつつあります。しかし、基本の汎用MCUを習得していれば、より応用し発展できます。基本が重要だということです。

IoTでは、MCU開発はより複雑で高度になります。また、製品完成度の要求もさらに高まります。基本要素や技術を、(たとえブラックボックス的だとしても)積み上げられる、基礎・基本を習得した開発者のみが生き残ると思います。開発者個人で基礎を習得するために、是非弊社マイコンテンプレートをご活用ください。

マイコンテンプレート活用プロトタイピング開発(4)

マイコンテンプレートへ機能を追加するには、既に枠組みが出来上がっているテンプレートへ、追加機能名のファイルを新規作成し、追加機能をこのファイル内で記述、テンプレートのLauncher()で起動すれば完成です。長文であった第3回を、一口で言えばこうなります(トホホ… Orz)。

Basic Form of Embedded Software (Initial Setting and Repetitive)
無限ループ前に1回実行する初期設定処理と、無限ループ内の繰返し処理の2つから構成される「組込みソフトの基本形」

これは、Arduino IDEの新規作成ファイル画面です。このsetup()とloop()の構造は、Arduinoに限らず全ての「組込みソフトの基本形」です。つまり、無限ループ前に1回実行する「初期設定処理」と、無限ループ内の「繰返し処理」の2つから構成されます。

弊社マイコンテンプレートもこの基本形に則っています。但し、機能追加がし易いように、無限ループがLauncher()に変形し、複数のユーザ関数を起動できるように工夫しているだけです。

従って、最も安直(!?)な機能追加の方法は、追加機能のサンプルソフトを見つけることです。あとはテンプレートのLauncher()でこのサンプルソフトを起動すれば、テンプレートへ機能追加ができるのです。

今回の目標は、テンプレートへのSDカード機能の追加です。そこで、このSDカード機能追加に最適と思うサンプルソフト:Developing Applications on STM32Cube with FatFs:UM1721を解説します。

UM1721: Developing Applications on STM32Cube with FatFs

2014年6月版 UM1721では、STM32Cubeと記述されていますが、これはSTM32CubeMX(以下CubeMX)のことです。また、STM32F4xxとSTM32CubeF4で記述されていますが、全てのSTM32デバイスとCubeMXに置換えて読めば使えます。

FatFsは、ユーザアプリケーションと下層HAL(Hardware Abstraction Layer)の間で機能するミドルウェアで、主目的は、開発するアプリケーションが読書きするデータと、物理ストレージファイルの割付(領域管理)です。パソコンなどでは、本来WindowsなどのOSが行う機能を代行するのがFatFsと考えれば良いでしょう。また、FatFs自体はMCUハードウェアには依存しないので、本稿STマイクロエレクトロニクス以外のマイコンでも使えます。

FatFs Middleware module architecture (Source:UM1721)
FatFs Middleware module architecture (Source:UM1721)

もっと知りたい方は、UM1721の2章までに詳しく記述されています。本投稿は、FatFsを使うサンプルソフトが目的ですので読み進めると、3.3のサンプルソースが見つかります。

FatFsサンプルソフト

FatFs Sample Software (Source:UM1721)
FatFs Sample Software (Source:UM1721)

懇切丁寧なサンプルソフトとは言えませんが、必要最低限で記述しているのでしょう。一見、組込みソフトの基本形と違うと思われるかもしれませんが、初期設定処理はCubeMXが自動生成し、別の場所にソースコードを出力するため(おそらく)省略しています。また、ファイルアクセスは低速なので、繰返し回数を1で処理すると考えれば、このサンプルソフトも基本形に則っています。

サンプルソフトから、FatFsを使うAPI(Application Programming Interface)が5種、FatFsとLow Level Disk I/O Driversをリンクする2種のAPIを使えば、SDカードへの読書きができることが解ります。
※書込み:f_write()を、f_read()に置換えれば読込みができます。

FatFsサンプルソフトで使用するAPI
用途 API
FatFsとアプリケーション間

f_mount()

f_open()

f_close()

f_read()

f_write()

FatFsとLow Level Disk I/O Driversリンク間

FATFS_LinkDriver()

FATFS_UnLinkDriver()

FatFsサンプルソフトAPI動作テスト

このサンプルソフトを、第3回で使用したレファレンスプロジェクトへ挿入し、各APIの動作を確認します。

FatFs Sample API Test Source
レファレンスプロジェクトへ挿入したFatFsサンプルソフト。

結果は、FatFsとアプリケーション間5種全てのAPIで正常動作が確認できました。つまり、レファレンスプロジェクトでは、このサンプルソフトを使いSDカードへの読書きができます。その結果、SDカードへwtext[] = “text to write logical disk”のデータを、ファイル名STM32.txtとして保存できました。

FatFs Write Test to SD Card
FatFsサンプルソフトを使い、SDカードへ書込んだファイルSTM32.txtと書込みデータ。

レファレンスプロジェクトは、Low Level Disk I/O Driversリンク側のAPI相当を、エキスパートが自作しているのでコメントアウトしています。

STM32CubeMXでFatFs機能追加

第3回と同様、シンプルテンプレートをRenameし、機能追加用のSPI1FatFs_Sdプロジェクトを作成し、CubeMXでSPI1とFatFs機能を追加します。また、SdCard.cファイルを作成し、この中に前章で動作確認したサンプルソフトを挿入します(プロジェクトやファイル作成の詳細は、第3回を参照)。

FATFS and SPI1 Functions Add by STM32CubeMX
STM32CubeMXでFATFSとSPI1を追加。SPI1のピン割付は、実装シールド基板に合わせている。

Launcher()からサンプルソフトを起動し、1回のみ処理するように変更を加え、レファレンスプロジェクトと同様各APIのリターン値を確認しましたが、f_open()以降で正常動作しません。

初期設定処理を自動生成するCubeMXのFatFs設定に間違いが無ければ、SPI1FatFs_SdプロジェクトでもユーザデータをSDカードへ読書きできるハズです。UM1721には、FatFsの設定記述がないので、CubeMXのFatFsデフォルト設定にしましたが、お手上げです。

そこで、STM Communityを検索すると、例えばコチラのように現在のCubeMXのFatFsにはバグがあるようです。対策もCommunityにありますが、STMもバグ状況を把握していますのでCubeMXの改版を待つ方が良さそうです。

*  *  *

サンプルソフト自体は、レファレンスプロジェクトで動作確認済みです。CubeMXのFatFs初期設定生成に問題があることは間違いありません。つまり、組込みソフト基本形の初期設定以外の半分(50%)の処理をUM1721から獲得できたと言えます。

Tips: 動作サンプルソフトは、FatFsがMCUハードウェアに依存しないので、他社マイコンでも使えます。獲得した50%処理は、適用範囲が広いものです。

対策としては、STMによるCubeMX改版を待つこと、レファレンスプロジェクトからFatFs関連の初期設定を抜き出すこと、の2つあります。後者については、検討中です。

NFCを使うLPC8N04のOTA

5/31~6/21の4回に渡り行われたNXPセミコンダクターズ LPC80x WebinarでLPC80xシリーズ概要が解ります(8/16ビットMCUの置換えを狙う32ビットARM Cortex-M0+コア採用のLPC80xシリーズ特徴や商品戦略が解るWebinarスライドは、リンク先からダウンロード可能)。

LPC8xx Family History (Source:Webinar Slides)
LPC8xxは、LPC81x/LPC82xから、2017年高集積LPC84x、2018年価格高効率LPC80xへ展開(出典:Webinar Slides)

LPC8xxファミリは、2016年発売のLPC81x/LPC82xをベースに、2017年にLPC84xで高集積大容量化、2018年はLPC80xで価格効率を上げる方向に発展中です。

関連投稿:LPC80xの価格効率化の方法

ベースとなったLPC810、LPC812、LPC824に対して弊社は、LPC8xxテンプレートを提供中です。このテンプレートは、発展したLPC84xやLPC80xへも適用できると思います。

*  *  *

さて、本投稿は、今後IoT MCUの必須機能となる可能性が高いOTA(Over The Air)について、LPC8N04スライドにその説明がありましたので、速報としてまとめます。

NFCを使うLPC8N04のOTA更新

LPC8N04 は、近距離無線通信(NFC)機能を搭載し15MHz動作のLPC802/LPC804よりもコア速度をさらに8MHzへ下げ、NFCアプリケーション開発に適したMCUです。スマホとNFCで連動する温度センサーロガーの動作例がNXPサイトの動画で見られます。

関連投稿:LPC8N04の特徴

無線ペアリングが簡単にできるNFC搭載MCUは、家電や産業機器の故障診断、パラメタ設定などの分野へ急成長しています。Webinarスライドでは、このNFCを使った電力供給やMCUファームウェア更新方法(OTAテクニカルノート:TN00040)も紹介されています。

IoT MCUには、製品化後にも無線更新できるセキュリティ対策は必須です。OTAはこの実現手段の1つで、具体的にどうすればOTAができるのかがTN00040に簡単ですが記載されています。

前提条件として、LPC8N04のブートROMバージョンが0.14以上であること、OTA実行中は電池かUSBでの電力供給などが必要です。Androidを使ったNFC OTA動作例が下図です。

LPC8N04 FW Update Over NFC (Source:TN00040)
LPC8N04のNFCを使ったOTA更新(出典:TN00040)

更新には、LPC8N04のSBL(Secondary Boot Loader)を使い、通信は暗号化されていますので、OTA中のセキュリティも万全です。OTA用のアプリケーション開発には、通常開発にリビジョン番号(図の1.0.0、1.1.0)付与が必須など様々な制約(オーバーヘッド)があります。

OSを使わないアプリケーション開発の場合、開発者自らがこれらOTAオーバーヘッドの追加が必要になるなど煩雑ですが、決まり文句として納得するか、または、IoT MCU用RTOSとして期待されるAmazon FreeRTOS提供のOTAなどを利用するしかなさそうです。

関連投稿:Amazon、IoTマイコンへFreeRTOS提供

今回はLPC8N04のNFCによるOTAを示しました。IoT無線通信がどの方式になっても、おそらく今回のような方法になると思います。SBL利用や暗号化、更新NG時の対処など留意事項が多く、現場へ行ってIDEで再プログラミングする従来方法よりも洗練されている分、リスクも高くなりそうです。

NXP LPC80xの新しい動き

NXPからNFC機能搭載LPC8N04発表に続き、新たにLPC802とLPC804がLPC800 MCUファミリに追加されました。従来LPC8xxファミリのLPC810やLPC824から仕様の新しい変化が感じられます。

わずか30秒のLPC802評価ボードLPC804評価ボードの綺麗な動画を見るだけでもキーポイントが解ります。

LPC80x評価ボード価格(価格は全てDigiKey調べ)

仕様の変化

LPC8xxファミリのラインアップが下記です。

LPC8xx Family (Source:NXP)
LPC8xxファミリラインアップと新規追加LPC80x (Source:NXP)

15MHzコア速度

LPC8xxファミリは、32ビット ARM Cortex-M0+コアを用います。Cortex-M0+は、8/16ビットMCUの置換えが目的の低消費電力コアです。従来は最大動作周波数30MHzでしたが、LPC80xはこれが15MHzになっています。

最大動作のスペックで、運用時は必要に応じ消費電力を抑えため動作周波数を下げるのが常套手段ですが、LPC80xではこの最大スペックが初めから15MHzになっています。これは、性能と電力消費のバランスを見直し、32ビットコアならばこのスペックでも8/16ビットMCUに十分対抗できると判断したためと思われます。

8/16ビットMCU市場を32ビットMCUで獲得するには、「従来以上に消費電力の低さが必要」なのです。

EEPROM based Flash

従来はFlashと記述されたユーザプログラム領域が、EEPROM Flashに変わっています。
※LPC8xxファミリは、Flashがユーザプログラム領域、SRAMはユーザデータ領域、ROMはデバイスに始めから実装済みのNXP提供プログラム領域(簡単に言うとライブラリ)です。弊社LPC8xxテンプレートに使用例があります。
※LPC8N04の4KB EEPROMは文字通りデータ保存用のEEPROMデバイスをSoCでMCUへ内蔵したものです。LPC8N04はコチラの投稿を参照してください。

LPC802 and LPC804 Block (Source:Mouser Electorinics Japan)
LPC802 and LPC804 Block (Source:Mouser Electorinics Japan)

このEEPROM based Flashと明示の意味するところ、従来との差、目的など、現時点ではよく解りません。しかし、明示する訳があるハズです。判明次第、投稿予定です。

Programmable Logic Unit(PLU)内蔵

LPC804ブロック図では、ピンク色のProgrammable Logic Unit(PLU)、ユーザ変更可能なディスクリートロジック機能も内蔵しています(簡単に言うとPLD:Programmable Logic Deviceです)。

PLU Tool Schematic design (Stource:Part 3 PLU Tool Schematic design Video)
PLU利用のロジック例 (Stource:Part 3 PLU Tool Schematic design Video)

このPLUを使うと、WS2812 LEDやDCモータ制御、パターンジェネレータなどが簡単に実装できるようです。

レジスタプログラミング方式のサンプルソフト提供

ARMコアのソフトウェア開発は、CMSIS:Cortex Microcontroller Software Interface Standardで流用性を高める記述が標準的です。しかし、8/16ビットMCUのソフトウェアは、ハードウェアレジスタを直接アクセスするレジスタプログラミングが主流でした。このレジスタプログラミングを好む開発者も多いと聞いています。

LPC80xのサンプルソフトは、このレジスタプログラミング方式のCode Bundleで提供されます。

関連投稿:CMSIS構造や目的は、コチラの投稿の、“CMSIS”章を参照してください。

8/16ビットMCU市場置換えと開発者ニーズへの最適化LPC80xデバイス

8/16ビットMCUの市場置換えとその開発者ニーズを満たすという目的に、従来LPC8xxファミリよりもさらに最適化した32ビットMCU、これがLPC80xだと思います。評価ボードも低価格で提供中です。

また、日本時間、金曜午前0時~午前1時の1時間に、全4回のWebinarが予定されております。本投稿以降は、6月15日(金)と6月22日(金)の午前0時からです。英語ですが、使用スライドは4回全てダウンロードできますので興味がある方は登録し御覧ください。

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習得ページもテンプレートサイトに掲載しております。ご活用ください。

2017年アナログICメーカー売上高ランキング

2017年のアナログICメーカー売上高トップ10が、5月2日EE Times Japanで発表されました。

2017年アナログICメーカー売上高ランキング(出典:記事)
2017年アナログICメーカー売上高ランキング(出典:記事)

アナログ市場全体の成長率は10%、そのうちの上位10社のみで59%ものシェアを占めます。唯一マイナス成長となったNXPは、昨年汎用ロジック/ディスクリート事業をNexperiaへ売却したためです。

MCUメーカーのアナログICシェア

2017年アナログIC売上高シェア
2017年アナログIC売上高シェア。ブログ掲載中のMCU各社もランクインしている。

本ブログで扱っているMCUベンダのSTMicroelectronics(シェア5%)、NXP Semiconductors(4%)、ルネサスエレクトロニクス(2%)などもこのトップ10に入っています。一方Cypress Semiconductors のMCU PSoC 4などは、コンパレータやアンプなどのアナログ機能が他社MCUよりも充実していますが、売上高トップ10には入っていません。ADCやDACなどのアナログ単体ICの範疇にPSoC 4が入らないためかもしれません。

これらMCU各社をハイライトして、2017年アナログIC売上高シェアをグラフにしました。Texas InstrumentsもMCUを販売していますが、ブログの対象外ですので外しています。

IoTでは、とりわけMCUのフロントエンドにアナログ機能が必要です。好調なアナログ市場の伸びに伴って、アナログ機能をMCUに搭載したデバイスが発表される可能性があると思います。

ルネサス世界初28nm車載マイコンサンプル出荷

ルネサスエレクトロニクスは2018年3月28日、車載マイコンRHファミリに28nmプロセス採用マイコンのサンプル出荷を開始しました。従来の40nmに比べ、高性能、低消費電力で大容量フラッシュメモリ内蔵の世界初、世界最高性能のルネサスオリジナルコアマイコンです。

ルネサスマイコンの命名則

車載マイコンRHファミリは本ブログ対象外です。しかし、車載マイコンが、全てのマイコンを引っ張って発展させているので、注目しています。ここでは、ルネサスマイコンの名前の付け方を簡単に説明します。

先頭に「R」が付くのが新生ルネサス誕生後に発売のマイコンです。汎用マイコンが、図のRL78、RX、RZの3ファミリ、車載アプリケーション特化マイコンが今回発表のRHファミリです。

一部例外はあるものの、殆どがルネサスオリジナルのNon ARMコアマイコンです。

ルネサス汎用マイコン
ルネサス汎用マイコンファミリ。用途、性能に応じてRL78、RX、RZと3ファミリある。(出典:汎用マイクロコンピュータラインアップカタログ)

汎用マイコンだけでも、用途や性能(ルネサスはソリューションと呼ぶ)に応じてRL78、RX、RZと3ファミリあり、さらにそのファミリの中で、RL78/G1x、RL78/F12など細かくシリーズに分かれた名前構造なので、解り難いです。

ちなみに本ブログ対象はRL78ファミリですが、RXも対象に入れるか検討中です。個人レベルでも開発環境を整え易いか否かが基準です。RXファミリの場合、実装メモリが大きいのに無償Cコンパイラの容量制限≦128KBがネックになっています。

他のH8や78K0Rなどは、日立やNEC、三菱電機などルネサスに統合前の各社マイコンの名称です。簡単に旧マイコン名が消える海外ベンダと異なり、旧会社のマイコン名をいつまでもカタログに記載するのも善し悪しです。

ルネサスSynergyは、これらNon ARMコアとは別に他社に遅ればせながら開発したARMコアマイコンファミリです。遅れた分、他社同様の売り方はせず、ルネサスSynergy Software Packageというルネサスが動作保証する専用ライブラリを提供し、開発者がアプリケーションのみを開発する方法で販売中です。個人レベルでは、特に価格で手を出しにくいと思っています。

28nmプロセス、大容量メモリの用途

ルネサスRHファミリで向上された性能を、具体的にどこで使うのかが解る図が、記事にありました。

大容量メモリの利用割合
大容量メモリの利用割合。アプリ増加比率よりも、データ、Safety、Security、Driversの増加比率が大きい。OTA利用により最低2面構成のメモリが必要の可能性もある。(出典:記事)

左側の色分けメモリマップから、アプリケーションのメモリ比率の増加よりも、Data、Safety、Security、Driversの増加比率が大きいことが判ります。つまり、開発するアプリケーションよりも、アプリが使うデータや安全性確保、ドライバーの増加がメモリ増大要因です。このドライバーの中にアプリが使うライブラリなども含まれると思います。

また、図では判りませんがOTA:Over-The-Airには、同じメモリが最低2面必要になるかもしれません(関連投稿は、コチラのIoT端末の脆弱性対応はOTA更新が必須を参照)。OTAに万一失敗しても、最悪更新前に戻るには、更新前と更新後のメモリが必要なのがその理由です。

いずれにしても大容量メモリは必須です。また、プロセス細分化でより低消費電力で高速動作を実現しています。
大容量メモリ実装、プロセス細分化は、車載マイコンに限った話ではありません。汎用マイコンでも同じです。

製造は、世界最大の半導体製造ファウンダリである台湾)TSMCが行うので、パソコンのCPU同様、マイコン:MCUも28nmプロセスへ一気に変わる可能性もあります。

半導体プロセス微細化の懸念

一方で、半導体プロセスの微細化は利益につながるのか2018年3月28日、EE Times Japanという記事もあります。28nmよりも先、10nm以下のモバイルプロセサでの話ですが、マイコンでもいずれ同じ時代が来るでしょう。

汎用マイコン技術は、先行する車載マイコンやモバイル半導体技術をベースに発展します。

先行の動向を知ることは、無駄ではありません。少し先を見越して、隠しコマンドなど遊び心がある工夫をソフトウェア、ハードウェアにこっそり入れておくのも開発者の数少ない楽しみの1つだと思います。