Flash存储器

     关于Flash存储器先介绍一些基本知识。首先,Flash存储器的结构决定了写操作只能将存储单元中的各比特位从1改成0,不能将0改写成1。所以Flash中每个单元可以一次性写入数据,数据一旦写入,在擦除前不能被再次改写。对Flash的擦除操作只能针对整个段进行,擦出后所有比特位都恢复为1。所以在改写某单元之前,必须先擦除整段。而为了保留该段中其他的数据,擦除前需要备份整段,导致单字节改写等随机存储操作效率很低。Flash存储器适合做大批量连续数据存储,而且一般控制器都会提供连续写功能以提高速度。

    在Flash中,将每次能擦除的最小区块单位称为“段”(Segment),将每次能连续写入的最大区块称为“块”(Block)。

    一般来说,在单片机中Flash存储器用于存放代码,属于只读型存储器。但在全系列MSP430单片机上,可以通过内置的Flash控制器,擦除或改写内部任何一段Flash的内容。此外,MSP430单片机内部还专门留有一段Flash区域(Information memory)用于存放需要掉电后永久保存的数据。利用Flash控制器还可以实现较大容量的数据记录、用户设置参数在掉电后的保存、在线更新程序等功能。

    上面已分析过,Flash存储器有以下两个矛盾:

  1. 即使对单字节改写操作,也需要备份该字节所处的整个Flash段。所以段越大,改写操作的速度越慢。
  2. 若将段分的很小,段数就会增加,将其依次擦除所需的时间就会变长,不利于程序的烧录。

    针对Flash存储器的以上特点,MSP430单片机根据段的大小不同对Flash存储器做了如下划分:main memory(每段512B)和information memory(每段128B或64B,具体根据单片机型号确定)。但是在本质上main memory和information memory没有任何区别,仅仅是段的大小不同而已。

    main memory一般用于存放代码,只在下载代码过程需要连续写Flash操作,所以分段较大。如果程序中需要改写main memory中的数据,需要较大的RAM空间用于备份整个段的其余数据,且会很慢。

    information memory的段较小,特别适合保存菜单设置参数等少量需要掉电保护的数据。改写数据时,即使在擦除前备份全被内容也只需要128B的RAM空间,大部分单片机都能提供。

posted @ 2013-03-12 15:22  此岸幸福  阅读(753)  评论(0)    收藏  举报