请教关于IAP跳转问题

2019-10-15 23:35发布

我用了“第四十八章的串口IAP实验”的程序烧录了开发板,然后把一个APP放在FLASH的首地址#define FLASH_APP1_ADDR 0x08010000  里
烧写串口的程序可以成功跳转到这个APP里面

IAP程序放在0x08000000~0x0800FFFF


我把IAP程序改到我自己应用里面去

我在mian()还是沿用这个语句
if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{  
iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码
}
其中
void iap_load_app(u32 appxaddr)
{
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.

jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址)
MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
jump2app(); //跳转到APP.
}
}

我用JTAG烧录串口的IAP程序进去按按键可以直接跳转到APP(RTC实验)里去,液晶屏会显示程序内容
我再用JTAG烧录自己修改的IAP程序进去,同样按按键结果液晶屏就变成一片空白
然后再少串口的那个IAP,又能进入APP了

RTC的APP那部分程序没有动,烧录IAP程序的时候没有对其进行更新

不知道为什么我直接调用这个函数就跳转不成功,希望高手能给予指点,我错在什么地方?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xiaosi204
1楼-- · 2019-10-16 01:51
原来是我前面初始了一个定时器,只要关闭定时器就可以进入APP了
正点原子
2楼-- · 2019-10-16 04:01
回复【2楼】xiaosi204:
---------------------------------
谢谢分享
wyx19931227
3楼-- · 2019-10-16 08:59
楼主  能把程序分享下么?最近在学习IAP  但是例程跳转不到APP
songling
4楼-- · 2019-10-16 09:11
回复【4楼】wyx19931227:
---------------------------------
我的也不能成功跳转,你的解决了嘛?希望指点一二
wyx19931227
5楼-- · 2019-10-16 11:40
 精彩回答 2  元偷偷看……
songling
6楼-- · 2019-10-16 16:16
回复【6楼】wyx19931227:
---------------------------------
嗯嗯,谢谢,我的也可以了

一周热门 更多>