打印

请版主或者做过STM32的IAP进来帮忙看一下,求指教

[复制链接]
3086|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zmj2008|  楼主 | 2011-10-12 09:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在想做一个IAP的应用,想法是这样的,有一个IAP程序和一个APP程序,上电先从IAP程序运行,等待命令看是否要执行更新操作,如果执行更新操作,则下载.BIN文件到FLASH;如果不执行更新操作则跳转到APP部分执行。以上这些都能够执行,没有问题,现在的问题是在执行APP的时候也要判断是否更新APP程序命令,如果要更新则跳转到IAP部分,但是现在不能够从APP跳转到IAP。IAP部分的跳转如下:  
#define ApplicationAddress    0x8003000

JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
//跳转到用户程序
Jump_To_Application = (pFunction) JumpAddress;
//初始化用户程序的堆栈指针
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();

下面这个是APP的设置中断向量表
//设置中断向量表的位置在 0x3000
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);

下面这个是APP部分的程序跳转(当接收到更新命令的时候执行)
#define IAP_Address    0x8000000

   //跳转至IAP代码
   JumpAddress = *(__IO uint32_t*) (IAP_Address + 4);
   Jump_To_IAP = (pFunction) JumpAddress;
   //初始化IAP程序的堆栈指针
   __set_MSP(*(__IO uint32_t*) IAP_Address);
   Jump_To_IAP();
我自己是个新手,所以想请各位版友帮我解决一下,根据我个人的推测,是在跳转到IAP部分的时候中断向量表出现问题,所以我试着在IAP里面设置一下中断向量表,但是不起作用。请香主和版友帮我解答一下。在线等...
沙发
zmj2008|  楼主 | 2011-10-12 09:58 | 只看该作者
自己先顶一个,我现在做了一个替换,当APP接受到更新命令的时候我系统软件复位一下,这样就直接从IAP开始执行了,但是这样做始终感觉不爽,希望能够以我最初的想法搞定可以IAP到APP和APP到IAP互跳

使用特权

评论回复
板凳
zmj2008|  楼主 | 2011-10-12 10:26 | 只看该作者
跳转到IAP代码后中断向量表要怎么设置呢?

使用特权

评论回复
地板
zmj2008|  楼主 | 2011-10-12 12:00 | 只看该作者
莫非我这个问题很弱智?没人帮我解答

使用特权

评论回复
5
zmj2008|  楼主 | 2011-10-12 13:07 | 只看该作者
经过测试,在跳转之前把总中断关掉就好了,至于什么原因,还在继续寻找中,有消息会在下面继续跟帖,也欢迎各位板油跟帖,

使用特权

评论回复
6
研发之声| | 2012-9-17 15:21 | 只看该作者
看系统复位状态进行判断如何跳转...

使用特权

评论回复
7
yyxlmq1314| | 2014-12-5 22:34 | 只看该作者
我也是新手,刚刚开始弄,有点模糊啊,楼主能分享一下IAP跳转和中断向量设置那部分的资料吗?

使用特权

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

本版积分规则

4

主题

77

帖子

2

粉丝