【LPC5500】NXPマイコンなら汎用でもセキュリティでもお手のもの

LPC5500なら汎用でもセキュリティでもお手のもの

いや〜〜去年の暮れにパソコンが壊れて以来このブログのアップデートも滞っていましたが、なんとか自分でパソコンを修理することで復活しました〜〜〜\( ^o^ )/ ヤ ッター♪

と言うことで、パソコン復活後の第1弾は、NXPの最新マイコン「LPC5500」を紹介します。このマイコン凄いです!

何が凄いかと言うと、汎用マイコンでもセキュリティマイコンでもなんでも来い的なマイコンなんです。

NXPマイコンなら汎用でもセキュリティでもなんでもござれ

LPC5500は、どちらかと言うとIOTデバイス向けのマイコンに近いんですが、LPC5500には非常に高度なセキュリティが搭載されているし、IOTに必要な各種センサーデバイスなどのデータの集積に必要なアナログ回路も、その解析やアルゴリズム処理に向いたDSPも内蔵していて、更にはセンサーアプリケーションに必要な潤沢なRAM領域とパワフルなCPUコアとなんでもござれのマイコンなんです。

セキュリティについては、さすがセキュリティで有名な会社だけあって、他社にない強力なセキュリティ機能が売りにもなっています。

NXPの豆知識

NXP社は、世界的に利用されているモバイル決済やチケッティング機能、さらにはクレジットカードなどの高いセキュリティを求められるNFC(近距離無線通信)対応のICチップやセキュアエレメントと言うデータの金庫のようなICチップを提供しており、世界的なシェアが70%以上とも言われています。

これから、一つづつ詳細を見ていきたいと思います。

LPC55(s)xxのブロック図

LPC55S69ブロック図
出典:LPC55S69ブロック図 NXP Semiconductors
 https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/high-efficiency-arm-cortex-m33-based-microcontroller-family:LPC55S6x

LPC5500の特徴

最新技術40nmプロセスを採用!

NXPが満を持して投入してきた最新マイコンは、最新40nmプロセスを採用したマイコンです。

もちろん、微細化するに連れて高性能で低消費電力に寄与することになりますから、よりコスパが良くなると期待されます。

世界初となるCortexM33@150MHz・TrustZoneに対応

コアにはARMの最新CortexMシリーズM33を世界で初めて採用して、なんと100MHzでの駆動なので、処理能力は抜群です。

ただ、最新の情報によると、なんと150MHzまで引き上げられるようです。

CortexM33は、M4に比べて20%の処理能力が向上されていると言われるので、M4換算だと単純に言えば180MHzだということになります。ま〜こんなに単純ではないんでしょうけど、今後ボードが手に入れば、ベンチマークしてみたいですね。

なんとデュアルコアオプションもある

加えて、なんとデュアルコアのオプションまであって、Cortex-M4換算で180MHzコアが2つも集積されていると言うなんとも怪物的なマイコンですよね。

マイコンでデュアルコアに対応した製品は恐らくNXP以外無い?ってくらい珍しいです。NXPではCortex-M4の頃からデュアルコア製品を既に出しているんです。

マイコンでデュアルコアって何に使うんだい?と思うでしょうけど、昨今のIOT機器にはこのデュアルコアがどハマりするんですよ!

このLPC5500はヘテロジーニアスのアーキでは無いのですが、Cortex-M33のコアが2つと言うシンプルなデュアルコアです。

このうち一つのコアは定期的に起動してセンサー情報取得やペリフェラル制御などのタスクを担って、もう一つのコアはセンサーから吸い上げたデータをアルゴリズム処理やアプリケーションなどの処理を分担することで、エネルギー効率と処理能力向上の両方を達成することが可能になっています。

それぞれのコアの動作クロックをそれぞれの役割に応じて最適化させておけば、なにも2つとも180MHzで動作させる必要はないので、センサーへのアクセスだけであればクロックを落として消費電力を落とすこともできます。

潤沢なフラッシュROM/RAM領域

今まで一種の「Low Powerマイコン」と言う部類のマイコンだと、512kBなんてマイコンはそうそうありません。

普通は128kBや256kBが普通ですが、このLPC5500シリーズはなんと640kBのフラッシュを内蔵しています。

RAM領域は320kBと広大な領域を持っていて、特にIOTなどのセンサーアプリケーションなどでエッジで行うアルゴリズム処理に必要なRAM領域も十分に提供してくれるのはありがたいです。

DSP内蔵でアルゴリズム処理を高速化して省電力処理

センサーデータのフィルタリング処理、行列演算やさらには音声などの処理で必要なFFT/iFFTといったフーリエ演算のDSP処理をハードウェアDSP(PowerQUAD DSP)で処理することが可能なんです。

イメージとしては、ARMのDSPライブラリであるCMSIS-DSPライブラリ(ソフトウェア処理)的な処理をコプロであるDSP(ハードウェア)が処理してくれると言うものです。

もちろんこれは、ハードウェアでの処理になるので、処理速度はかなり高速でソフトウェア処理に比べ10倍高速らしいです。

高速に処理が終了すればその分スリープにできるので省電力になります。

SRAM PUFでルート・オブ・トラストを実現

LPC5500の真骨頂はセキュリティにあって、マイコン業界では初(?)のSRAM PUFを採用しています。

ま〜〜とにかく興味深いセキュリティ機能ですよ。これは!

Physically Unclonable Function」と言う半導体素子それぞれが持つ固有の特性(バラツキ)を逆に利用してデバイス固有IDとして生成・管理し、高次元のIOTセキュリティを担保すると言う技術です。

これで唯一無二のデバイス固有のIDを識別できるようになり、ルート・オブ・トラストを実現しているんです

この「SRAM PUF」と言う技術はそれほど新しい技術ではなく、何年も前からある技術ですが、IOT時代にとって非常に革新的な技術だと言われています。

NXPがIOT向けマイコンに初搭載してきたのは非常に興味深いところです。

このあとで、より詳しく説明しています。

プログラムコードをリアルタイムで暗号化・復号化ができる!

LPC5500は、プログラムコードは暗号化した状態でフラッシュROMに管理され、コードが実行される時はハードウェアでリアルタイムに復号化して直接フラッシュROMから実行されるので、ほとんど実行ペナルティが無く、高いセキュリティを担保しつつプログラムの実行が可能になっています。

一方で、プログラムコードのアップデートなど書き換えが必要になった時、プログラムコードの書き込み時に、これまたリアルタイムに暗号化してフラッシュROMに書き込みをしてくれると言う優れもの。

アナログ回路の集積でセンサーデバイスとの相性もGood!

センサーデバイスなどはアナログ出力になっていることが多いので、IOT機器にはアナログ回路は必須です。

LPC5500は、16ビット10チャンネル(または差動5チャンネルペア)ものSAR 型ADCが利用できるので、たくさんのセンサーやアナログ値を計測できます。

もちろん省電力!IOT機器や産業用ロボットなどに最適!

これだけの機能を搭載していながら、動作時の駆動電流は約3mA@3V 100MHzです。

かなり低いです。

ひと昔のマイコンだと、100MHzでの駆動だと30〜50mAなどが普通でしたから、それを考えると1/10以下になっているんです。

でも、LPCって正直スリープ電流が若干大きいんですよね。

ほとんどスリープで寝ているような使い方よりも、定期的なインターバルでセンサーなどのアナログ値を取り込んで、エッジでなにがしかのセンサーフュージョン的な処理をするユースケースがバッチリハマるんですよ。

まさに、IOTのセンサー機器や産業ロボットなどで多用されるセンサーの制御とエッジでのアルゴリズム処理を行って、出来るだけクラウドに送るデータを削減してトランザクションを節約するみたいな使い方がいいかな。

地味なところで役立つ、ロジック回路が入っている

ちょっと地味なんですが、LPCの変わり種として、論理回路や組み合わせ回路として使えるプログラマブルロジック回路が集積されていて、決して多くのゲート数ではないんですが、ちょっとした論理回路を外付け回路や74HCなどの汎用ロジックで構成する時に代用できるのが地味に嬉しい機能です。

SRAM PUFの詳細を解説

SRAM_PUFの詳細を解説
SRAM_PUFの詳細を解説

「SRAM PUF」の意味とその機能

SRAM PUFの意味ですが、SRAMはメモリですね。そして、PUFは「Physically Unclonable Function」と言う技術で、そのまま訳せば物理的に複製不可能なSRAM機能と言う意味になります。

この機能はいわば認証や暗号などで必要な機器固有のIDや暗号鍵を生成でき、それが何人たりとも複製できないし、また読み取ることも非常に困難な機能なんです。

「でも、半導体チップをデキャップすれば、その機器固有IDとやらも読み取れるんじゃないの?」と言うかも知れませんが、このSRAM PUFは使用する時にのみ必要に応じてIDや鍵を生成(オンデマンド)して、さらにそのIDはどこにも保存されないんです。

IDを生成する過程でSRAM上になにがしかの情報があっても、デキャップするとSRAMなので電源が落ちてデータが消えてしまうため、生成したIDや鍵の情報そのものも言うまでもなく関連する情報まで全て読み取れなくなると言う優れもの。

だから半導体チップをこじ開けて中身を覗こうが、欲しいIDや鍵は跡形もなく消えてなくなるってわけです。

固有IDや暗号鍵は半導体素子のバラツキを逆手にとった機能

次に、この固有IDを生成する機能について解説します。

半導体の特性で何千、何億と言う半導体セルの特性がユニークである、つまり半導体にはバラツキがあると言う点を逆に利用した機能で、そのユニークな特性をそのデバイスの固有IDや暗号鍵などに使うと言うものです。

具体的に言うと、半導体チップに電源を入れると、半導体素子の初期値は1か0のどちらかになります。その中間になることはありません。

それが半導体チップに集積されている何千、何億と言う単位の全ての素子でそれぞれ特性が違うので、それぞれの素子が1か0のどっちになるかは分かりません。

そして、それが何千何億個の素子の1と0の組み合わせが別の半導体チップのそれと同じになる可能性は限りなくゼロに近いか、ゼロとみなして構わない値になります。

つまり、2つとして同じ特性を示すことはないんです。

半導体素子はシーソーのようなもの

初期値がバラつくとは、例えば、半導体のメモリであるRAMは、そのメモリセル(ビットを記憶する最小単位の回路構成)は、いわばシーソーなんです。必ずどちらかに傾く構成になっていて、釣り合うことはないんです。

どちらかが少しでも重いとシーソーが傾くように、半導体チップのRAMも半導体の製造上のバラツキで、その素子の1か0かどちらかが必ず重くなり、電源を入れるとメモリ上のそれぞれのセルも必ず1か0になります。

そして、メモリとしての値は完全にランダムな値になります。

半導体のランダム性
半導体のランダム性

でも、その半導体チップの素子が完全にランダムである一方、ある半導体チップのどれか一つだけに注目してみると、その特性がランダムである中にもその個体特有のパターンが存在するようです。

つまり半導体チップそれぞれの指紋と言えるわけですね。

その指紋パターンと、あるアルゴリズムからその個体固有のIDを算出できると言うわけです。

そのデバイス固有のIDにより、ルート・オブ・トラストが実現されているんです!

でも、やっぱりLPC5500は汎用マイコンだと思う

これだけIOT機器などで有効な機能がてんこ盛りのマイコンでも、LPC5500はやっぱり汎用マイコンなんだと思います。

マイコンは、8ビット、16ビット、そして32ビットと性能がどんどん向上して、様々な機能やセキュリティも搭載されて、どんどん賢くなっています。

つまりは、世の中の機器がどんどん賢くなってる!

これって全く普通で当たり前のことなんだけど、このLPC5500はそんなマイコンの最新技術の先を行っているマイコンなんだってことです。

つまり、何が言いたいかって言うと、「どんな機器にも応用が効く最強の汎用マイコン」だってことです。

なんと既に量産中!

そんなLPC5500はなんとすでに量産中で、評価ボードも手に入る。

ボードの価格はそれほど高くはなくNXP社のホームページから購入することも可能で、$39で購入可能です。

次回は、実際にLPCXpresso55S69ボードを入手して動作させていきたいと思います。

お楽しみに。