3

SPI モード経由でマイクロコントローラに接続された SD カード (または SDHC カード) があります。Chan の FATライブラリを使用しています。8192 バイトのバッファーからのデータを書き込みます (RAM が不足しているため、バッファーを大きくすることはできません)。この書き込みは定期的に行われます。通常、バッファが再びいっぱいになる前に、書き込みの準備が整います。しかし、ときどき (バッファのフィル速度にもよりますが) 問題が発生し、新しいバッファが書き込まれる前に書き込みの準備ができておらず、データが失われることがあります。

ちなみにセクターサイズも8192バイトに設定されていますが、他は影響ないようです。

書き込みはスコープで監視でき、書き込みに時間がかかる場合があることがわかります。たとえば、通常の 4 倍の長さです。

ここで何が起こっているのでしょうか?どうすればこれを防ぐことができますか? これは、読み取り、変更、書き込みのシーケンスと関係がありますか? 外部 RAM バッファは必要ですか? または、パフォーマンスを向上させるためのより良い方法はありますか?

4

1 に答える 1

2

ソフトウェアの原因ではありませんが、フラッシュには基本的にさまざまな書き込み時間があります。その理由は、書き込みを実行するために必要な電圧が慎重にバランスが取れているためです。高すぎると永続的な損傷が発生し、低すぎると値を変更できない場合があります。後者は自動的に処理され、結果として「わずかな」スタッターが発生します。それでも、バッファが小さいため、その吃音は長すぎるようです。

ソリューション?これまで、高価なシングルレベル(SLC) SD カードを使用してきました。現在でも、すべてのファームウェア バージョンを認定することを主張しています。もちろん、スポット市場で SD カードを購入することはありません。

于 2012-08-31T14:38:42.077 に答える