IAP代码看不太懂,求大神解释一下

2019-07-20 23:01发布

void iap_load_app(u32 appxaddr)
{
        if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)        //检查栈顶地址是否合法.
        {
                jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)               
                MSR_MSP(*(vu32*)appxaddr);                                        //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
                jump2app();                                                                        //跳转到APP.
        }
}
这段代码看不懂,求详细说明一下,谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
WM_CH
1楼-- · 2019-07-21 15:46
电子之旅 发表于 2017-1-11 09:02
APP代码存放地址appxaddr里面存放的第一个4字节的值是栈顶地址,栈顶地址是RAM地址,所以是0x2000000开头。 ...

“MSR_MSP函数”是设置的栈顶地址吧,
后边一句jump2app();才是“程序指针PC指向该起始地址。”
hhlh2l
2楼-- · 2019-07-21 17:37
当年我一直以为6楼7楼都是夸我的,今天才看到是夸3楼的,
brucewoo
3楼-- · 2019-07-21 20:22
 精彩回答 2  元偷偷看……
xcc521
4楼-- · 2019-07-21 23:59
 精彩回答 2  元偷偷看……
qq819358001
5楼-- · 2019-07-22 05:53
厉害,MARK一下

一周热门 更多>