新闻中心

EEPW首页>嵌入式系统>设计应用> MC9S08QG8单片机的EEPROM虚拟技术

MC9S08QG8单片机的EEPROM虚拟技术

作者: 时间:2009-01-13 来源:网络 收藏


使用C语言而不是汇编语言编写这个函数是因为C语言表达更清晰,另外目前的C编译器能够产生高效的汇编代码。函数的入口参数cmd为Flash操作命令,具体命令内容及其命令字节如表1所列;ProgAddr为待操作的Flash的地址,若是擦除操作则为Flash页内或者整个Flash内的任意地址;buff-erAddr为缓冲区首地址;buff-ersize为待写入的数据长度。

2.2 存储信息区的设计
存储信息区由5个字节构成。其中第一个字节为长度信息,记录的是空白Flash第一次被写入的数据大小。另外四个字节为写入控制信息,用来记录Flash的写入情况。每次写入成功后,将该信息区按从低到高的顺序将对应的位由1变为0。这里需要提到的一点是:Flash被擦除后,每个字节的数据都变为0xFF,对Flash编程,其实是将Flash中每一位由“1”状态变为“O”状态,或者保持“1”状态。正是利用这一点,控制信息可以记录当前Flash数据的写入情况。例如,若长度信息为16,则会用到控制信息的31位;若长度信息为63,则仅用到低8位,写入8次后,若要进行下一次写入操作,由于该页剩余的长度仅有3字节(512―5―63×8),小于63,所以需要擦除后才能进行。为了减少擦除次数,这里规定每次写入的数组长度不能超过63,同时由于控制信息位数的限制,数字长度至少为16字节。存储信息区的结构如下:



评论


相关推荐

技术专区

关闭