关于N32G003 的IAP跳转问题
我在BOOT中使用如下跳转程序:__asm void MSR_MSP(u32 addr){
MSR MSP, r0 //set Main Stack value
BX r14
}
typedefvoid (*iapfun)(void);
iapfun jump2app;
void IAP_Load_App(u32 address){
// 检查栈顶地址是否合法.
if(((*(vu32*)address)&0x0FFFFFFF) < 1024*512){
jump2app = (iapfun)*(vu32*)(address + 4);
__set_MSP(*(vu32*)address); // 初始化堆栈指针
jump2app(); // 跳转到APP.
}
}
IAP_Load_App(0x08001800)
Boot起始地址为: 0x08000000
APP的起始地址为: 0x08001800
但是上电后,跳转程序并未执行成功(貌似)。是否我的跳转程序有问题?
注:N32G003 在APP分区代码中,SCB并没有VTOR的定义,如何重定义中断向量地址。。 hm985832728 发表于 2023-2-6 14:21
在APP分区代码中,SCB并没有VTOR的定义,如何重定义中断向量地址。。
解决了吗,我遇到类似的问题,跳转了,但是中断没跑起来。 77大五 发表于 2024-6-17 23:42
解决了吗,我遇到类似的问题,跳转了,但是中断没跑起来。
这解决了没有啊 有跳转函数 我发现国民的一个bug,代码放在ram中运行,执行跳转后中断无法效应,希望国民的研发测试一下这个问题 检查是否有任何缓存或MMU设置可能影响从Flash读取指令或数据。 跳转之前禁用了所有可能干扰应用程序执行的中断或异常。 跳转到地址是怎么确定的
页:
[1]