6

組み込みアプリケーションにシリアル NOR フラッシュ (SPI ベース) を使用しており、その上にファイル システムを実装する必要があります。これにより、私の NOR フラッシュは、摩耗レベル アルゴリズムが明らかになる頻繁な消去および書き込みサイクルになりやすくなります。同じことについていくつか質問したい:

まず、Nor フラッシュにウェア レベル アルゴリズムを実装することは可能ですか? はいの場合、ほとんどの場合、NOR フラッシュではなく NAND フラッシュのソリューションを見つけるのはなぜですか?

次に、シリアル SPI ベースの低コストの NAND フラッシュを利用できますか? はいの場合は、同じ部品番号を教えてください。

第三に、独自の Wear Level アルゴリズムを実装するのはどのくらい難しいですか?

第 4 に、産業用グレードの NOR フラッシュの消去/書き込みサイクルが高い (数百万回!!) ことも読んだ/聞いたことがありますが、この理解は正しいですか? はいの場合は、そのような SPI NOR フラッシュの詳細を教えてください。これにより、ウェア レベル アルゴリズムの実装を回避することにもつながる可能性があります。完全ではないにしても、独自のウェア レベル アルゴリズムを実装することを計画しているので、少しは役立つかもしれません。ウェア レベル アルゴリズムを実装する特定の領域での余裕と容易さ。

これらすべての点に対する制約はコストです。これらの問題に対する低コストのソリューションが必要です。

前もって感謝します

よろしく

アディティア・ミタル

(mittal.aditya12@gmail.com)

4

2 に答える 2

6

ウェアレベリング アルゴリズムの実装は簡単ではありませんが、不可能でもありません。

  1. ウェアレベリング ドライバーは、ファイリング システムでディスク ブロックが使用されなくなった時期を認識する必要があります (これは、最新の SSD でのTRIMサポートと呼ばれます)。実際には、これは、ブロック ドライバー API とその上のファイリング システムを変更するか、ウェア レベリング ドライバーにファイリング システムの空き領域マップを認識させる必要があることを意味します。この 2 番目のオプションは、FAT では簡単ですが、おそらく特許を取得しています。

  2. 消去単位のリサイクルを可能にするために、少なくとも消去単位 + いくつかの割り当て単位を予約する必要があります。より多くのブロックを予約すると、パフォーマンスが向上します

  3. バックグラウンド スレッドで非同期の消去ユニットのリサイクルを実行する必要があります

  4. テストする必要があります。テストをもう一度テストします。私が最後にこれらの 1 つを作成したとき、両方のフラッシュのシミュレーションを作成し、その上で実際のファイリング システムを実行し、システムを何週間も酷使しました。

  5. ウェアレベリングの側面をカバーする多くの特許があります。同様に、Linux カーネルには、少なくとも 2 つのウェアレベリング レイヤーが 2 つあります。

これらすべてを考慮すると、サードパーティ ライブラリのライセンスはおそらく費用対効果が高く、

于 2013-01-17T10:05:36.327 に答える
0

Atmel/Adesto などは、これらの小さなシリアル フラッシュ チップを数十億単位で製造しています。また、オンライン ドキュメントも多数あります。シリアル フラッシュ ビートルは、コストのためにウェア レベリングを実装していないのではないかと思います。一般的に使用されているデバイスは非常に安価であり、とにかく寿命が限られている傾向があります。大量かつ長時間の使用が予想される大量の 4 ライン NAND フラッシュ (SD カードなど) には、ウェアレベリングを透過的に実装できる複雑な (比較的) 組み込みのコントローラーがあります。

摩耗の問題もあり、ワンピン インターフェイスのシリアル フラッシュは使用しなくなりました。SD カードは私が使用するのに十分安価であり、1 つが壊れたとしても、オンサイトの技術者 (または顧客) が簡単に交換できます。

ウェアレベリング アルゴリズムの実装。開発時間(特に、電源障害などで破損してはならないファイルシステムをデバイスがサポートする必要があるかどうかのテスト)と、私が気にするCPU / RAMの両方の点で高すぎます。

シリアル NOR フラッシュを使用する必要があるほどコストに敏感な製品の場合は、この問題を無視することをお勧めします。

于 2013-01-17T09:41:28.600 に答える