Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;
Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…
断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )
问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?
附图:
rookiecalf:
断电后是怎么连接的?
Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;
Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…
断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )
问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?
附图:
jinyi lu:
回复 rookiecalf:
断开仿真器断电,再上电memory 数据全部变成0XFFFF
操作步骤 A/t+C断开仿真与CCS3.3的连接->板子断电->板子上电->A/t+C连接仿真与CCS3.3的连接->memory 窗口读出Flash里面的数据。然后就如图,全部是0XFFFF
Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;
Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…
断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )
问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?
附图:
jinyi lu:
回复 jinyi lu:
找到一些眉目,我把写入的Flash区换一下就可以了,之前用的0x3e8000开始的地址,写入成功,掉电丢失,现在改成0X3F0000写入成功,掉电依然保存,之后陆续测试了其他段,基本上都可以,似乎是Flash的设置问题(怀疑CMD文件分配内存要得注意一下),总之现在问题算是解决。
Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;
Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…
断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )
问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?
附图:
user5180039:
回复 jinyi lu:
请问一下 Flash_Erase((SECTORB|SECTORC),&FlashStatus);这个函数怎么写?可以让我看一下你的例程吗