打印

做cortex m0 的IAP升级时遇到奇怪问题?

[复制链接]
502|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
丑帅丑帅的|  楼主 | 2018-7-4 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的代码 是运行在flash的第一个段 作用只是根据标志区地址来跳转到不同的区域

int main(void)
{

        if(IAP_ProCur == PROGRAM_LOW)
        {
                UserProgram = (void (*)()) (PROGRAM_LOW + 1);
                __disable_irq();
                (*UserProgram)();
        }
        

        if(IAP_ProCur == PROGRAM_HIGH)
        {
                UserProgram = (void (*)()) (PROGRAM_HIGH + 1);
                __disable_irq();
                (*UserProgram)();        
        }
}


现在的问题是,我同一个程序 通过 Target 设置IROM 地址0x1000 (PROGRAM_LOW,即为低区首地址) 编译后下载程序后能跳转也能很好运行;
但是,当 Target 设置IROM 地址0x4000 ( PROGRAM_HIGH,即为高区首地址 ) 编译后下载程序无法跳转,更不用说运行高区的程序;
当然了 对程序都进行了中断重映射!
调试后发现当IAP_ProCur  为 PROGRAM_HIGH 时运行到    (*UserProgram)();        这一句时直接进入HardFault_Handler中断死掉了,
查看flash区内,高区和低区数据,除了固定偏移地址不同外其他全是一样,不明白,
谁遇到过?

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

741

主题

742

帖子

0

粉丝