Nios® V プロセッサー・ソフトウェア開発者ハンドブック

ID 743810
日付 7/08/2024
Public
ドキュメント目次

7.8.2. ブロックの消去または破損

通常、フラッシュメモリーはブロックに分割されています。alt_write_flash() はデータを書き込む前に、ブロックの内容を消去する必要がある場合があります。この場合、ブロックの既存の内容を保持しようとはしません。ブロック境界に該当しない書き込みを実行している場合、このアクションは予期しないデータの破損 (消去) につながる可能性があります。既存のフラッシュメモリーの内容を保持する場合は、ファイングレイン/・フラッシュ関数を使用します。これらについては、次のセクションで説明します。
フラッシュの書き込みと予期しないデータ破損の例 の表は、2 つの 4KB ブロックから構成されている 8KB のフラッシュメモリーの例を示しています。
  1. まず、すべての 0xAA の 5KB をフラッシュメモリーのアドレス 0x0000 に書き込み、次にすべての 0xBB の 2KB をアドレス 0x1400 に書き込みます。
  2. 最初の書き込みが成功した後 (時刻 t(2))、フラッシュメモリーには 5KB の 0xAA が含まれ、残りは空になります (つまり、0xFF)。
  3. その後、2 番目の書き込みが開始されますが、2 番目のブロックに書き込む前に、そのブロックは消去されます。この時点 t(3) では、フラッシュには 4KB の 0xAA と 4KB の 0xFF が含まれています。
  4. 2 回目の書き込みが完了した後、時刻 t(4) で、アドレス 0x1000 にある 2KB の 0xFF が破損します。