埋め込み式モノリシックアプリケーション開発−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回循環する必要がある.
2、4 KBの消去方法(1024~52224)-200回のサイクルが必要です.
しかし、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回のサイクルが必要です.