flash来代替eeprom
来源:互联网 发布:psv淘宝 编辑:程序博客网 时间:2024/06/07 23:50
Philips LPC2000 内部Flash用作EEPROM使用详解
1.
把Flash当作EEPROM的过程,其实就是对Flash进行读-修改-写的过程。
2.
Flash必须遵循选择扇区,擦除,选择扇区,写的过程,具体到程序的编写,必须先后有下面的代码:
SelSector(1,1);
SelSector(1,1);
应用的时候需要注意下面几点:
1)如果写之前没有选择扇区,是不能正确写入的。
2)如果写之前没有擦除,写入是不正确的。
3)最少写512字节,写入的字节数应当为512 或 1024 或 4096 或 8192.
4)Flash在擦写时不能访问,这也是IAP是要关闭中断的原因。关中断可以用下面的语句来实现:__asm{MSR
另外,经常有人问如何将一个常量的数值定义在Flash的特定地址上,我觉得这个功能不太实用,因为每次擦除的最小单位是8K,到不如直接写数据到Flash的一个地址,这个地址是在一个空扇区中,读和写都以这个地址为基址。由于编译后的代码是向下靠紧的,所以你可以查看一下编译后的代码量,然后选择靠上的地址做为用的变量区。如果实在想把数组定义在Flash的特定位置好像可以用分散加载,具体可以参考zlg的FAQ的第378问。
3.
从Flash中读数据比较简单,可以定义一个指针变量,该指针变量指向特定的Flash地址,例如可以写成下面的样子:
uint32 i;
uint8 * p;
p=(uint8 *)0x1C000;
for(i=0;i<400;i++)
{
}
#define uint unsigned int
uint readIAP(uint dz)
{
volatile const uint *pucdata;
uint ucData;
pucdata=(volatile uint*)dz;
ucData=*pucdata;
return ucData;
}
4.
代码读保护 这是Bootloader修订版1.61的特性。代码读保护通过向Flash地址单元0x1FC(用户Flash扇区0)写入0x87654321(十进制表示为2271560481)来使能。地址单元0x1FC用来允许为fiq异常处理程序保留部分空间。当JTAG调试端口的代码读保护被使能时,外部存储器引导和以下ISP命令将被禁能:




上述ISP命令终止时返回CODE_READ_PROTECTION_ENABLED。代码读保护使能时,ISP擦除命令只允许擦除用户扇区的内容。这种限制是代码读保护不使能时所没有的。IAP命令不受代码读保护的影响。
采用工程模板的RelInFlash会自动加密。
5.
采用ZLG的工程模板时需要注意下面几点:
1)修改堆栈,在STARTUP.S文件中的初始化堆栈为 StackUsr-20*4
2)设置编译参数-apcs/intervork,需要注意是修改 Language Settings/ARM C Compiler/ATPS下面的。我一开始的时候不小心选择的语言设置是ARM Assembler ,结果运行程序后一写Flash就错,大家要选准语言设置。
3)变量定义,由于一次至少写512个字节,所以跟读写操作的变量最好定义为uint32类型的,我犯的一个错误是将变量定义为uint8类型的,如下面:
uint8 i;
for(i=0;i<512;i++)
RamToFlash(0x00002000, (uint32)source, 512); // 写数据到扇区1
结果可想而知,一直在for循环中运行而跳不出来,这到给我们一个IAP不好用的假象。
- flash来代替eeprom
- EEPROM && FLASH
- EEPROM和FLASH
- EEPROM and FLASH
- STM32 FLASH模拟 EEPROM
- FLASH、SRAM、EEPROM
- Flash,EEPROM区别
- EEPROM 和Flash 区别
- STM32F10x Flash 模拟 EEPROM
- EEPROM与FLASH
- EEPROM与Flash
- Flash和EEPROM区别
- EEPROM和FLASH区别
- FLASH模拟EEPROM
- FLASH与EEPROM的
- eeprom和flash
- 大话flash和eeprom
- 利用Flash、EEPROM存储变量
- SSO之CAS单点登录实例演示
- 第7周项目3-负数把正数赶出队列
- android的autocompletetextview适配器 刷新问题
- ArcGIS网络分析
- SpringMVC+MyBitis+多数据源切换
- flash来代替eeprom
- 关于Android数据库orm工具库对比的几点思考(一)
- android CTS 介绍
- 4-数制转换
- py2exe:python,wxpython转exe可执行文件
- 第7周项目2-建立链串的算法库
- java 多种方法解决 字符串的旋转问题
- 如何将字典的值按照指定键的顺序返回列表?
- 大前端工具集