打印

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

[复制链接]
3392|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝