基本的に、選択は主に2つの基準に依存します。格納するデータが大きいか小さいか、および頻繁に書き換えられるかどうかです。
- EEPROMは、頻繁に変更される小さなデータに最適です。その理由は、それは小さなサイズでのみ販売されているが、通常はシングルバイトで消去できるからです。さらに、EEPROMの耐久性は非常に高い(数百万サイクル)。
- Flashは、頻繁に変更されないビッグデータに最適です。大きなサイズの場合は安価に入手できますが、データを上書きする必要がある場合は、ページ全体に対してのみ実行できます。そして、耐久性は100.000サイクルの範囲にあります。
両者の違いについてはこれ以上詳しく説明しません。すでに説明済みです。
SDカードについて:SDカードは取り外し可能なタイプのフラッシュであるため、通常のフラッシュと同じ制約に従います。ただし、通常はNANDフラッシュを使用しますが、通常、シリアルフラッシュチップはNORフラッシュを使用します。NANDフラッシュは書き込み(ページが小さい、消去が速い)には便利ですが、信頼性は低くなります。大量の書き込みを行うと、しばらくすると不良ブロックが発生する可能性があります。ウェアレベリングはこれを軽減できますが、安価なSDカードに常に実装されているわけではありません(SD / MMCカードが独自のコントローラーでウェアレベリングを行うのは本当ですか?)。ソフトウェアで実装することもできますが、簡単なことではありません。
ただし、インターフェイス(I2CまたはSPI)の選択はまったく関係ありません。I2Cは低速ですが、使用するピンが少なくなっています。I2C EEPROMは通常、SPIよりも安価ですが、通常、アプリケーションでMCUピンを割り当てた方法に応じて、どちらか一方を使用することを決定します。
これで特定のユースケースが与えられたので、それらを1つずつ見ていきましょう。
システム構成と校正データ
まあ、これは多くの制約を課しません:このデータは通常非常に小さく、頻繁に変更されません。したがって、ここで最も簡単な方法は、コストを抑えて配置することです。
- 内蔵MCU EEPROMがある場合は、
- または、他の目的ですでに必要な場合は、いくつかの外部フラッシュ
- または、他に永続的なストレージが利用できない場合は、最終的にはSDカード。ただし、SDカードは最終的に取り外して別のデバイスに挿入できるため、キャリブレーションデータの整合性が失われることに注意してください。そのため、それを避けたい場合があります。
デバイスに永続的なストレージを他に必要とせず、MCUに内部EEPROMがない場合、最終的にMCU自体のフラッシュで特定のフラッシュページを使用できます(MCUで許可されている場合)。それ以外の場合は、小さな外部EEPROMにフォールバックできます。
MACアドレスの特定のケースでは、事前にプログラムされたMACアドレスが販売されているEEPROMがあり、一意であることが保証されていることに注意してください(例:Microchip 24AAxxx)。したがって、IEEEによってアドレスブロックの正式な割り当てを受けていないか、ローカルに割り当てられたアドレスを使用してリスクを冒すつもりがない場合は、それが適切な方法です。
ログ
これは通常大きく、頻繁に変更されます。Bigはフラッシュではなく、EEPROMを意味します。したがって、フラッシュチップまたはSDカードのどちらでも使用できますが、ログが頻繁に頻繁に書き換えられる場合は、SDカードを使用することをお勧めします。そうしないと、フラッシュチップが磨耗するおそれがあり、ボードにはんだ付けされている場合、SDカードよりも交換が困難になります。また、フラッシュページ全体を循環してログを書き込む場合、実際にはウェアレベリングを実装するのは簡単です。
これらが小さなログの場合は、ラッキーですが、EEPROMを使用します(耐久性が許容範囲内にある限り)。
持久力が実際の問題である場合、実質的に無制限の持久力と比較的大きなサイズの追加の解決策があることに注意してください:F-RAMとMRAM。しかし、これらは腕と脚の費用がかかり、オプションとしてそれらを言及しませんでした。また、これら2つの新しいテクノロジーは、フラッシュよりもはるかに優れた消去/書き込み速度を実現するため、継続的なロギングの場合、これは興味深いかもしれません。
コードとコードリソース
通常は大きいが、頻繁には変化しない。これには、外部フラッシュチップ(通常はNORフラッシュ)が最適です。
セキュリティとデジタル著作権管理
これはトリッキーです。抽出してはならない機密データが本当に含まれている場合は、実際にはSIMフォームファクターでスマートカードを使用することをお勧めします(最終的にはカスタムファームウェアが組み込まれています)。しかしもちろん、これはデザインをかなり複雑にします。代替の(より簡単で安価な)ソリューションは、Atmel AT88SCシリーズのような専用のセキュリティチップである場合がありますが、チップで使用できるコマンドは、特定のアプリケーションにとって意味のあるものでなければなりません。このチップで何ができ、どのような条件下で慎重に計画する必要があります。
「基本的な」セキュリティだけが必要な場合、最も簡単なのは内部MCU EEPROMを使用することです。スマートカードや専用チップ(軽度の攻撃に対する保護、チップ内の電源/障害分析に対する対策などの特定のセキュリティ対策が含まれている)ほど安全ではありませんが、これは最高の方法です行う。
それ以外の場合、内部EEPROMがないと、構成/キャリブレーションデータと同じオプションになります。ただし、簡単なロジックアナライザーでデータラインを簡単に監視し、機密データを抽出できるため、外部チップを使用して安全なデータを保存することはリスクです。そのため、EEPROMがフラッシュよりも改ざんが難しいと言われている場合でも、外部チップの場合にどちらか一方を選択しても、セキュリティの観点からは何の違いもありません。
最後に、SDカードは取り外し可能であるため、間違いなくここで最悪のアイデアです。特定のハードウェアを必要とせずに、機密データをPCから読み取ることができます。