OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3262|回复: 6

从IAP跳转到APP无法运行

[复制链接]

15

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1400
金钱
1400
注册时间
2016-6-2
在线时间
166 小时
发表于 2016-12-8 15:37:30 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 hyarcher25 于 2016-12-14 09:34 编辑

STM32F107,用以太网UDP进行IAP实验。IAP:0x8000000,APP:0x8010000
第一次将IAP程序下载到芯片,然后用上位机写APP程序可以实现跳转,之后APP返回IAP模式后,再次进行升级后,便无法运行APP程序了。
使用了systick中断,但参考网上教程说使用__set_PRIMASK(1);关闭所有中断,之后进入其它程序初始化执行__set_PRIMASK(0);开启所有中断即可。
查看了论坛里面的有此问题的帖子,但还是没有解决。。。请各位大神指点!
IAP-TO-APP跳转:
void iap_load_app(u32 appxaddr)
{
        if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)        
        {
                __set_PRIMASK(1);
                jump2app=(iapfun)*(vu32*)(appxaddr+4);        
                MSR_MSP(*(vu32*)appxaddr);                                       
                jump2app();                                                        
        }
}


APP-TO-IAP跳转:
void IAPRun(void)
{
      __set_PRIMASK(1);
      jump2app=(iapfun)*(vu32*)(IAP_ADDR+4);                        
      __set_MSP(*(vu32*)IAP_ADDR);                                
      jump2app();                                                               
}


最佳答案

查看完整内容[请看2#楼]

原因已找到。APP中AD采样使用了DMA,跳转之前没有关闭
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1400
金钱
1400
注册时间
2016-6-2
在线时间
166 小时
 楼主| 发表于 2016-12-8 15:37:31 | 显示全部楼层
原因已找到。APP中AD采样使用了DMA,跳转之前没有关闭
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-12-8 21:05:28 | 显示全部楼层
帮顶
回复

使用道具 举报

15

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1400
金钱
1400
注册时间
2016-6-2
在线时间
166 小时
 楼主| 发表于 2016-12-9 13:54:06 | 显示全部楼层
APP程序初始化之前也设置好了
SCB->VTOR = FLASH_BASE | 0x10000;
RCC_DeInit();
__set_PRIMASK(0);
还是不行...
在线监控看到第二次写app一直到跳转之前全部正确,只要执行跳转,则完全卡死了。
回复

使用道具 举报

15

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1400
金钱
1400
注册时间
2016-6-2
在线时间
166 小时
 楼主| 发表于 2016-12-14 09:36:07 | 显示全部楼层
顶一下。
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2015-9-16
在线时间
39 小时
发表于 2016-12-21 17:16:57 | 显示全部楼层
hyarcher25 发表于 2016-12-8 15:37
原因已找到。APP中AD采样使用了DMA,跳转之前没有关闭

能说的仔细一点吗?我也遇到这个问题,程序跳转之后进不了中断
回复

使用道具 举报

15

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1400
金钱
1400
注册时间
2016-6-2
在线时间
166 小时
 楼主| 发表于 2016-12-26 09:23:53 | 显示全部楼层
swallow_sw 发表于 2016-12-21 17:16
能说的仔细一点吗?我也遇到这个问题,程序跳转之后进不了中断

ADC_DMACmd(ADC1, DISABLE);

我的程序使用了AD采样,用了DMA,所以在跳转前面加上这个语句,跳转就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 04:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表