使用LPC23XX发生IAP写FLASH失败的原因

[复制链接]
 楼主| pigeon0411 发表于 2009-8-27 10:36 | 显示全部楼层 |阅读模式
ARM7芯片:LPC2300

分别执行下面两个函数时,第一个可以写成功,IAP返回代码为0,
第二个却不能写成功,返回错误代码4(表示:源地址没有位于存储器映射中)
“源地址没有位于存储器映射中”是指什么意思?

大家帮我看看这两个函数有何不同?我实在找不出不同的地方,但是就是一个可以操作成功,一个不行。

void upgradeEnd(void)
{
   unsigned int recode;
unsigned int upOK = 0x20090820;

//关中断代码  
  SelSector(27,27);
  EraseSector(27,27);
  SelSector(27,27);
  recode = RamToFlash(0x0007d000,(unsigned int)&upOK,256);
//开中断代码
return(retcode);

}

unsigned int upgradeReady(void)
{
   
unsigned int retcode;
unsigned int upReady = 0x55555555;

//关中断代码  
  SelSector(27,27);
  EraseSector(27,27);
  SelSector(27,27);
  retcode = RamToFlash(0x0007d000,(unsigned int)&upReady,256);
//开中断代码
    return(retcode);
}
FDLock 发表于 2009-8-28 00:03 | 显示全部楼层
表面上只看出upReady 和upOK 是不同的变量,建议看一下反汇编代码,再跟踪调试一下,看传给RamToFlash的参数值,可能会有所发现(会不会是编译器做了一些优化...)。
dingliangding 发表于 2020-9-8 13:59 | 显示全部楼层
大哥,可以看下你的”关中断代码  “ 和 ”开中断代码“ 代码吗
潜力变实力 发表于 2020-9-8 16:47 | 显示全部楼层
第一个函数中:unsigned int upOK = 0x20090820;                    第二个函数中:  unsigned int upReady = 0x55555555;     upReady对于的地址地址没有位于存储器映射中,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

157

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部