IoTプログラムメモリアプリケーション向けの適切なフラッシュメモリ技術の選択と使用

著者 Bill Giovino

DigiKeyの北米担当編集者の提供

IoTノードがいっそう強力になるにつれ、処理要件は、Linuxのような完全な組み込みオペレーティングシステム(OS)においても、実行しているすべてのタスクの複雑さを適切に管理することが求められるレベルにまで高くなることがあります。このコードをフラッシュmicroSDHCカードに格納すると便利ですが、ほとんどのフラッシュmicroSDHCカードは、OSのストレージではなくデータストレージ専用に設計されています。ただし、ベンダからはいくつかの革新的なソリューションが発表されています。

この記事では、組み込みOSの役割と、OSとアプリケーションコードをIoTノードのmicroSDHCフラッシュカードに格納するとよいことが多い理由について説明します。その後、フラッシュカードの劣化のモードと、この劣化現象によって特にOSがどのように影響を受けるのかについて説明します。さらに、設計者が、効率的で信頼できるIoTノードの実装のために新しいフラッシュメモリの実装を使用してこの劣化を克服する方法を示します。

組み込みOSを使用する理由

一部のIoTアプリケーションでは、リモートIoTノードで実行できる処理が多いほど、IoTノードが中央ハブに返送する必要のあるデータが少なくなり、ネットワーク帯域幅に空きができます。テスト済みの組み込みOSは、多くの個別タスクを効率よく処理することによって複雑な事前処理をサポートでき、予測可能な(決定性の)方法でマルチタスクを実行できます。当然のことながら、このようにするとマルチコントローラに要求されることが増え、より速いクロック速度と、さらに重要なこととして、より多くのプログラムメモリが必要になります。

市販またはオープンソースの既製組み込みOSには、更新する必要がほとんどない、信頼できるテスト済みのコードであるというメリットもあります。たとえば、使用可能な組み込みLinux OSでは、四半期ごと、または緊急のセキュリティパッチでのみ更新される場合があります。組み込みOSおよび必要なアプリケーションコードでは8GB以上が必要になることがあり、OSはあまり更新されないので、技術者が手動で(物理的に)更新するmicroSDHCフラッシュメモリカードにOSを格納した方が便利な場合があります。既存の4GBのフラッシュカードは次に技術者が訪問したときに必要に応じて8GB以上のカードに簡単に交換できるので、これは将来のメモリの拡張にも対応します(図1)。

Swissbit Class 10 microSDHC S-140uメモリカードの画像

図1:最高104MB/秒の速度をサポートするSwissbit Class 10 microSDHC S-140uメモリカード。高速のプログラムメモリアクセスに十分な速さです。(画像提供:Swissbit

物理的に更新されるmicroSDHC NANDフラッシュカードにギガバイト単位の組み込みOSを格納することは、ワイヤレスネットワークを介して更新されるフラッシュメモリに対していくつかの利点があります。ワイヤレスネットワークでは、使用される調停方式によっては、4GB以上の組み込みOSの更新のために、機能のための通信のワイヤレス帯域幅が減る可能性があります。また、ワイヤレスで更新を行うと、OSの実行と受信した更新の格納の両方に十分なストレージが必要となるため、通常のサイズの2倍のmicroSDHCカードが必要となります。

また、ワイヤレスでフラッシュのコードを更新すると、無線アクティビティと、より高いフラッシュ書き込み電圧および電力が必要なため、バッテリの寿命も短くなります。

フラッシュメモリで実行する組み込みOSでは、データストレージと比較して、フラッシュメモリのセルに対する異なる需要も発生します。市販されているほとんどのフラッシュmicroSDHCカードは、メーカーによってデータストレージ専用に設計されています。最も一般的な市販用途は、モバイルデバイス用のマルチメディアストレージです。動画、画像、またはオーディオファイルでは複数のビットエラーがあってもエンドユーザーに気づかれないかもしれませんが、重要な組み込みOSファイルでは1ビットのエラーであってもシステム全体の障害につながる可能性があります。

フラッシュメモリの寿命は無限ではありません。フラッシュメモリアレイへの書き込み操作が行われるたびに、アレイの寿命が減ります。半導体フラッシュメモリの仕様では、消去/書き込みサイクルの回数の制限が示されています。フラッシュセルがその仕様制限に近づくと、セルが消耗して新しいプログラミング状態を受け付けない可能性が高くなります。

書き込み操作によるフラッシュアレイの劣化を防ぐ一般的な方法の1つは、ウェアレベリングと呼ばれます。フラッシュの同じ場所に書き込むのではなく、フラッシュの半導体メモリアレイ全体に均等に書き込みを分散させて、フラッシュメモリのマトリックス全体への書き込み分散が均一になるようにします。マイクロコントローラは物理メモリの1つの場所に書き込むので、ウェアレベリングでは、フラッシュコントローラがその同じ場所をフラッシュメモリアレイの異なる場所にマップできます。

読み取り妨害エラーが発生するしくみ

OSファイルはデータファイルよりアクセス頻度が高いため、ファイルビットエラーについては許容されないことがあります。場合によっては、コアOSファイルが繰り返し読み出されて、フラッシュアレイにビットエラーが発生する可能性があります。

フラッシュメモリはブロックに配置されており、各ブロックには複数のページが含まれます。ブロックはメモリで消去できる最小の部分であるのに対し、ページはメモリで読み取りまたはプログラムが可能な最小の部分です。フラッシュブロックの一般的なサイズは256KBですが、それぞれが4KBのページを64個含む場合があります。また、すべてのページには、エラー訂正コード(ECC)、消去カウント、論理-物理変換情報のために使用される64バイトが余分に含まれます。

データのページのフラッシュ読み取り操作では、ページ内の1バイトだけを読み取る必要がある場合であっても、ページが属しているブロック全体に小さい読み取り電圧がかけられます。フラッシュプロセスセル技術のため、これはブロック内の周囲のページへの微小電圧も誘発します。これにより、セルのプログラミングと同じように、セル絶縁層に電子が注入される場合があり、これが「ソフトプログラミング」と呼ばれるのはそのためです。小さい読み取り電圧が同じブロックに対して繰り返しかけられると、最終的に、読み取られていないフラッシュページのプログラミングが阻害される可能性があります。時間が経つと、隣接するセルの状態が異なる値に変わる場合があります。

ほとんどのNANDフラッシュmicroSDHCカードには、セルエラーを修正するための何らかの形式のエラー訂正機能がありますが、ソフトプログラミングによって発生するエラーの数が非常に多くなると、訂正が不可能な限界レベルに達することがあり、マイクロコントローラがビット位置から異なる値を読み取って、ファイル破損エラーになる可能性があります。このようなビットエラーは読み取り妨害エラーと呼ばれます。

データストレージに使用されるNANDフラッシュmicroSDHCカードでは、読み取り妨害エラーが発生することはあまりありません。フラッシュアレイに対して実行される書き込み操作のため、ウェアレベリング操作の後で、フラッシュの場所が再プログラミングされて、ソフトプログラミング効果が除去されます。一方、組み込みOSに使用されるフラッシュアレイは、プログラミングされることがほとんどなく、読み取り妨害エラーが現実になる可能性があります。

読み取り妨害エラーが発生する読み取り回数の定格は、シングルレベルセル(SLC)フラッシュカードが100万回、マルチレベルセル(MLC)フラッシュカードが10万回です。データフラッシュの場合は、読み取り妨害エラーはほとんど発生しないものと見なされているので、これらの値がデータシートで指定されていないことがよくあります。

読み取り妨害エラーを防ぐためのRDMの使用

読み取り妨害エラーを防ぐため、SwissbitはRead Disturb Management(RDM)と呼ばれる機能を開発しました。SwissbitのRDMでは、各個別フラッシュブロックに対する読み取り操作の回数を、フラッシュカードコントローラが追跡しています。ブロックが内部で定義されている読み取り操作回数に達すると、書き込み操作に対して使用されるウェアレベリングと同じように、コントローラはデータを新しいブロックに移動します。必要な場合は、新しいブロックへの書き込み操作の間に、SDコントローラのエラー訂正コード(ECC)によって破損したデータが修正されます。

RDMは、SwissbitのSFSD8192N1BM1MT-I-QG-221-STD 8GB S-450u UHS-I Class 10 microSDHC フラッシュカードに実装されています。組み込みOSを使用する産業用アプリケーション専用に設計されているS-450uは、多くの複雑なIoTノードの組み込みLinux OSおよびアプリケーションコードに十分な余裕を備えています。SDR104モードでは、S-104uは最大104 MB/秒のデータアクセスをサポートできます。

プログラムメモリ実行へのmicroSDHCカードの使用

前に説明したように、microSDHCカードは通常はデータメモリに対してのみ使用されるので、ほとんどのハーバードアーキテクチャマイクロコントローラの周辺機器は、データメモリとしてのmicroSDHCカードへのアクセスのみをサポートします。これにより使用可能なオプションが制限されます。

既存のソリューションは、microSDHCカードを読み取り、プログラムメモリをRAMにロードして、RAMから実行します。この方法では、RAMチップによって基板のコストが上がるだけでなく、プログラムの拡張が、PC基板で使用可能なオンボードRAMの量に制限されます。

MicroSDHCカードは、SDモードまたはSPIモードでのインターフェースが可能です。

マイクロコントローラと、プログラムメモリとしてのS-450u microSDHCカードの間にインターフェースを確立するには、選択されているマイクロコントローラが2つのmicroSDHCバスプロトコルのどちらかをサポートしている必要があります。

  1. プログラムメモリにマップされたSDHCカードSDモードコントローラ周辺機器(図2)。これには、外部周辺機器または内部マイクロコントローラ周辺機器を使用できます。インターフェースを構成する6つのシグナルは、4ビットのデータ(DAT[0-3])、クロック(CLK)、双方向のコマンド/レスポンスシグナル(CMD)です。データは一度に4ビットずつ転送され、最高のプログラム実行速度を提供します。ホストコントローラまたはマイクロコントローラが、microSDHCカードにクロックを提供します。
  2. SDモードを使用したmicroSDHCカードへのインターフェースの図

    図2:SDモードを使用するmicroSDHCカードへのインターフェースでは、簡単な6シグナルのインターフェースを使用して、最速のメモリアクセスが提供されます。(画像提供:DigiKey)

  3. インプレース実行(eXecute In Place:XIP)のサポートを備えた構成可能なSPIインターフェース。この方法では、SPIモードでmicroSDHCカードにアクセスすることによってカードからコードを実行でき、高速のデータ転送を提供しますが、SDHCカードモードほど速くはありません。XIPメモリはカードのメモリをマイクロコントローラのプログラムメモリ空間にマップし、ホストのファームウェアに対して透過的にmicroSDHCカードにアクセスします。

microSDHCカードはSDカードモードで起動します。シングルビットのSPIモードを選択するには、起動後の最初の6クロックにおいて、DAT3シグナルをVDDにアップし、それと同時に、CMDをVSSにダウンすることによって RESETコマンド(000000b)をカードに送信する必要があります。これ以降、カードは電源を切るまでSPIモードのままになります。

Maxim IntegratedのMAX32652 Arm® Cortex®-M4Fマイクロコントローラは、IoTノード用に設計された低電力のマイクロコントローラです。適切に構成するとmicroSDHCカードからコードを実行できるオンチップのQSPI XIPインターフェースを備えています。

また、MAX32652は、主としてデータメモリストレージ用の完全なSDHCインターフェースも備えています。

重要なのは、マイクロコントローラに対するこれらのインターフェースが、プログラムメモリインターフェースでなければならないということです。使用されているバスプロトコルまたはインターフェースに関係なく、マイクロコントローラは、microSDHCカードへのインターフェースを初期化するために、何らかのオンチップフラッシュブートコードを含んでいる必要があります。

ソケット化された安全性

産業用アプリケーションmicroSDHCカードのソケットは見落とされることがよくあります。厳しいアプリケーションでは、錫または同等のコンタクト素材は時間とともに劣化したり引張強度を失ったりする可能性があります。金のコンタクトは、コストは高くなりますが、時間が経っても引張強度が維持される緊密なコンタクト接続を提供するのでコストに見合います。

Amphenol ICCの10101704J6#2A Universal Flash Storage(UFS)およびmicroSDHCコネクタ/ソケットは、すべてのmicroSDHC準拠カードに対する緊密な接続を提供します(図3)。このソケットは、挿入/抜去の間にメモリカードがスタックするのを防ぐアンチスタビングコンタクトを備えています。

Amphenol 10101704J6#2A UFSおよびmicroSDHCカードコネクタ/ソケットの画像

図3:10101704J6#2A UFSおよびmicroSDHCカードコネクタ/ソケットは、最高6GB/秒のデータ転送速度で、既存のmicroSDHCと次世代のUFSカードの両方をサポートします。(画像提供:Amphenol)

また、このAmphenolソケットは、新しいUniversal Flash Storage(UFS)形式と互換性があり、将来の拡張性をサポートします。UFSは、フォームファクタはmicroSDHCと似ていますが、コンタクトのフットプリントが異なります(図4)。UFSは、差動双方向データ転送によってmicroSDHCの2倍の速度をサポートします。

microSDHCカード(左)とUFSカード(右)の画像

図4:左側はmicroSDHCカード、右側は新しいUFSカードです。UFSは、差動双方向データ転送によってmicroSDHCの2倍の速度をサポートします。(画像提供:DigiKey)

ネットワークで接続されたIoTノードの中には、Wi-Fiが使用不可能または非実際的である離れた場所に存在するものがあります。このような場合は、ワイヤレスセルラデータ接続経由でネットワーキングを実行できます。これにはサブスクライバSIMカードを使用する必要があり、それをソケット化する必要もあります。

ボードのスペースを節約する簡単な方法は、Molex1041681620デュアルSIMカードとmicroSDHCカードソケットのように、microSDHCとSIMカードソケットの組み合わせを使用することです(図5)。このソケットは、厳しい環境での緊密な接続のための金コンタクトとアンチスタビングコンタクトも備えています。

Molex 1041681620コンビネーションSIMカードとmicroSDHCカードソケットの画像

図5:1041681620コンビネーションSIMカードとmicroSDHCカードソケットは、基板のスペースを大幅に削減し、挿入/抜去エラーを防ぐアンチスタビングコンタクトを提供します。(画像提供:Molex)

結論

フラッシュmicroSDHCカードはデータストレージ用に使用されてきましたが、組み込みOSをプログラムメモリ内で実行する固有のニーズをサポートするように改良されています。その進化の一部として、持続的な読み取り要求をサポートできる高速のフラッシュメモリの開発が含まれます。また、マイクロコントローラは、外部のmicroSDHCカードからコードを確実に実行しながら、フラッシュエラーを削減または除去できる、新しいメモリインターフェースをサポートするように発達しています。

DigiKey logo

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

著者について

Image of Bill Giovino

Bill Giovino

Bill Giovino氏は、シラキュース大学のBSEEを持つエレクトロニクスエンジニアであり、設計エンジニアからフィールドアプリケーションエンジニア、そしてテクノロジマーケティングへの飛躍に成功した数少ない人の1人です。

Billは25年以上にわたり、STMicroelectronics、Intel、Maxim Integratedなどの多くの企業のために技術的および非技術的な聴衆の前で新技術の普及を楽しんできました。STMicroelectronicsでは、マイクロコントローラ業界での初期の成功を支えました。InfineonでBillは、同社初のマイクロコントローラ設計が米国の自動車業界で勝利するように周到に準備しました。Billは、CPU Technologiesのマーケティングコンサルタントとして、多くの企業が成果の低い製品を成功事例に変えるのを手助けしてきました。

Billは、最初のフルTCP/IPスタックをマイクロコントローラに搭載するなど、モノのインターネットの早期採用者でした。Billは「教育を通じての販売」というメッセージと、オンラインで製品を宣伝するための明確でよく書かれたコミュニケーションの重要性の高まりに専心しています。彼は人気のあるLinkedIn Semiconductorのセールスアンドマーケティンググループのモデレータであり、B2Eに対する知識が豊富です。

出版者について

DigiKeyの北米担当編集者