OpenEdv-开源电子网

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

请教一下,基于stm32f1奇怪的IAP跳转的问题

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-10-28
在线时间
10 小时
发表于 2022-3-16 21:21:31 | 显示全部楼层 |阅读模式
2金钱
我用stm32F103zet6做的iap 基于ymodem协议的升级。内存够大,我算过,没有超出。采用的systick,状态机轮询,下载app


但是常常下载app,卡在了JumpToApp();失败的多,成功跳转的少。

但是奇怪的是:
   1、有时候成功跳转,运行正常,但是我再擦除,下载,又失败了,卡在跳转函数处JumpToApp()
   2、有时候跳转只执行了app工程的初始化-打印logo信息,没有进入main中while循环;
   3、有时候卡住,没有进入main第一行;
但是,再调试模式下又都正常!

我使用的外设和中断都在跳转之前都关闭、复位了了,我看网上说的也是这些,但还是上述情况!


  1.       HAL_UART_MspDeInit(&huart2);
  2.       HAL_NVIC_DisableIRQ(USART2_IRQn);   //恢复NVIC为复位状态.使中断不再发生
  3.       HAL_NVIC_ClearPendingIRQ(USART2_IRQn);      
  4.       HAL_UART_DeInit(&huart2);
  5.       
  6.       HAL_NVIC_DisableIRQ(DMA1_Channel6_IRQn);  
  7.       HAL_NVIC_DisableIRQ(DMA1_Channel7_IRQn);  
  8.    
  9.       // 设置所有时钟到默认状态,使用HSI时钟
  10.       HAL_RCC_DeInit();
  11.       //__HAL_RCC_USART2_CLK_DISABLE();              

  12.       // 关闭所有中断,清除所有中断挂起标志
  13.       for (int i = 0; i < 8; i++)
  14.       {
  15.         NVIC->ICER[i]=0xFFFFFFFF;
  16.         NVIC->ICPR[i]=0xFFFFFFFF;
  17.       }

  18.       HAL_RCC_DeInit();         
  19.   
  20.       // 关闭滴答定时器,复位到默认值
  21.       SysTick->CTRL = 0;                 
  22.       SysTick->LOAD = 0;
  23.       SysTick->VAL = 0;
  24.       
  25.       HAL_DeInit();                              
  26.       HAL_NVIC_DisableIRQ(SysTick_IRQn);         //
  27.       HAL_NVIC_ClearPendingIRQ(SysTick_IRQn);    //清除外部中断的挂起位。

  28.       //关闭全局中断
  29.       //__set_PRIMASK(1);
  30.       __disable_irq();       
复制代码
我在app工程,打开中断,还是一样的效果...
而且我下载app的bin文件之后,调试读取app区的flash,是有值的,

有时能跳转成功、回跳等,说明中断向量地址是对的;下载app的bin文件,我读取flash也有值,擦除、读、写都没问题;

实在找不到问题了,脑袋晕...
求哪位大佬指点一下!!





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-10-28
在线时间
10 小时
 楼主| 发表于 2022-3-17 14:23:22 | 显示全部楼层
没人啊?自己来凑热度
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2022-3-18 00:51:49 | 显示全部楼层
把你收到的APP数据,串口发回去给电脑, 对比看下? 或者参考我们例程的处理机制,我们例程应该说是百分百成功的。
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2022-3-18 07:52:32 来自手机 | 显示全部楼层
https://blog.csdn.net/wuhenyouyuyouyu/article/details/102851287
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-10-28
在线时间
10 小时
 楼主| 发表于 2022-3-18 09:11:39 | 显示全部楼层
正点原子 发表于 2022-3-18 00:51
把你收到的APP数据,串口发回去给电脑, 对比看下? 或者参考我们例程的处理机制,我们例程应该说是百分百 ...

能收到数据,读取flash能看到,就是有时候成功跳转,有时候卡住,我不用systick、状态机没问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2022-3-19 21:39:14 | 显示全部楼层
fengdaokanhai 发表于 2022-3-18 09:11
能收到数据,读取flash能看到,就是有时候成功跳转,有时候卡住,我不用systick、状态机没问题

是不是你IAP的中断处理没搞好?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2022-3-20 20:50:32 | 显示全部楼层
中断没有重映射吧
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-10-28
在线时间
10 小时
 楼主| 发表于 2022-3-25 11:39:37 | 显示全部楼层

不是这些问题
回复

使用道具 举报

8

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
789
金钱
789
注册时间
2019-8-15
在线时间
423 小时
发表于 2022-3-28 17:10:02 | 显示全部楼层
感觉你的升级过程,新程序通过协议发下去后,写到flash区,有没有检查stm32上app程序的完整性
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
发表于 2022-3-28 23:47:18 | 显示全部楼层
升级数据要做CRC校验,否则变砖头
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 17:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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