1

Linux を実行している組み込みシステムで C++ アプリケーションを使用しています。このデバイスはメッセージ (数バイトの小さなチャンク) を受信し、電源障害の場合に不揮発性メモリに保存する必要があります。スタティック RAM が利用可能だったので、これは別のプラットフォームでうまく機能しました。

このプラットフォームの問題は、これを行うには NAND フラッシュしかなく、新しいメッセージで更新する前にブロック全体を消去することなく、同じブロックに別のメッセージを追加したいことです! メッセージごとにファイルを書き込むことは、多くのメッセージが存在する可能性があるため、良い解決策ではありません! さらに、これは効率的である必要があり、過度の消去を回避することでフラッシュの寿命を延ばす必要があります! 私ができるようにしたいのは、不良ブロックを気にせずにバイトごとにフラッシュに書き込むことです。

「プチ FAT ファイル システム」を見つけました。

「Petit FAT File System」でこれが可能かどうか、またはこれを処理する方法について何か提案があれば教えてください。

ありがとう !

4

3 に答える 3

2

Petit ファイル システムについては調べていませんが、実際の制限は NAND フラッシュです。製造データ シートには、消去が必要になる前に、各ブロックに正常に書き込みできる回数が示されている可能性があります。ハード制限がない可能性もありますが、最大書き込み回数を超えるとデータの整合性は保証されません。

その答えは、プロセス技術とフラッシュ セルの設計によって異なります。たとえば、SLC ですか、それとも MLC NAND ですか? SLC は、複数のブロック書き込みをより適切に処理できるようになります。

もう 1 つの質問は、システムに搭載されているフラッシュ コントローラーのタイプは何ですか? ハードウェア ECC を使用する場合、2 回目の書き込みで最初のデータ書き込みの ECC 値が無効になるため、コントローラーによって制限される可能性があります。ソフトウェアで ECC 計算を実行できる場合は、NAND の制限に戻ります。

小さな書き込みのサポートは、提供される可能性がある特別な確保されたメモリ領域を介して、データシートで対処される場合があります。もう一度、データシートを確認してください。

リンクを投稿するか、使用しているハードウェアを示していただければ、より明確な回答を提供することができます。

于 2011-03-09T10:23:52.620 に答える
1

フラッシュを扱っている場合、書き込む前にフラッシュを削除する方法はありません。すべてのフラッシュ メモリはそのように機能します。リアルタイムの要件とデータのサイズによっては、これが問題になる場合とそうでない場合があります。しかし、組み込み Linux を使用しているため、アプリケーションにとってリアルタイムはおそらく大きな問題ではありません。

数バイトを格納するために完全なファイル システムが必要な理由がわかりません。そもそもなぜこれに外付けメモリが必要なのか、MCUの内蔵フラッシュに書き込めないのか?数バイトだけを保存する必要がある場合は、オンチップの eeprom/データ フラッシュを備えた MCU が最適です。

また、そのフラッシュ回路はあまり有望ではないようです。まず、サイクル数やデータ保持率を入力せずに「認定レポート」を参照するのは非常に怪しいと思います。これは、メモリの品質が低いことを示している可能性があります。データシートには、2009 年と Samsung と記載されています。私が皮肉を言うかもしれませんが、それはおそらくチップがすでに時代遅れになっていることを意味します. サムスンは、長寿命の評判が最高というわけではありません。

于 2011-03-09T15:16:31.907 に答える
0

なぜ生のフラッシュを使いたいのか気になります。MTDドライブの上にJFFS2やUBIFSのようなものを使用してみませんか?JFFS2またはUBIFSがウェアレベリングを管理している間、MTDドライバーにECCを管理させます。次に、1つのファイルを開いて、必要なときにいつでもそのファイルに書き込みます。

于 2011-03-10T06:20:54.197 に答える