埋め込み式モノリシックアプリケーション開発−FLASHの消去動作(開始アドレスから終了アドレスまでのデータ消去)

5575 ワード

以前はこの方面の需要に出会ったことがなくて、今出会って、記録します: 一般的に、flashチップは以下のいくつかの消去インタフェースをサポートします.消去インタフェース:
  • 1、256 Byte消去インタフェース(ページ消去)
  • 2、4 KByte消去インタフェース(ブロック消去)
  • 3、32 KByte消去インタフェース(セクタ消去)
  • 4、64 KByte消去インタフェース(セクタ消去)
  • 1つの最も簡単な処理思想は、1つのアドレスが64 Kの開始アドレスであるかどうか、32 Kの開始アドレスであるかどうかを先に判断することである.4 Kのアドレスであるか否か(256 Bの消去方法しか使用できないことを説明している)でなければ、このアドレスに256 Bを加えて終了アドレスより大きいか否かを判断し、大きくなければ消去動作を実行する.そして、このアドレスに256 Bを加えて次のサイクルに入り、繰り返し、このアドレスが終了アドレスに等しいことを知る
    しかし、flash操作と他の違いは、
    1、最も簡単なのは全部256 B消去方法(1024~52224)を使う–200回循環する必要がある.
    #include "stdio.h"
    
    typedef  unsigned int uint32_t;
    
    void page_earase(uint32_t addr)
    {
    	printf("256B: %d\r
    "
    , addr); } void sector_earase(uint32_t addr) { printf("4K: %d\r
    "
    , addr); } void block32_earase(uint32_t addr) { printf("32K: %d\r
    "
    , addr); } void block64_earase(uint32_t addr) { printf("64K: %d\r
    "
    , addr); } void block_file_earase(uint32_t start, uint32_t end) { uint32_t size = end - start; for (int i = 0; i < (size / 256); i++) { page_earase(start+(256*i)); } printf("total: %d\r
    "
    , size/256); } int main(void) { block_file_earase(1024, 52224); return 0; }

    2、4 KBの消去方法(1024~52224)-200回のサイクルが必要です.