硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4799|回复: 9
收起左侧

[μCOS-III] 关于STM32H743的IAP升级问题

[复制链接]

13

主题

43

回帖

82

积分

初级会员

积分
82
发表于 2020-9-2 17:41:32 | 显示全部楼层 |阅读模式
我编写的APP程序是使用ucosIII的系统,然后我的IAP程序没有使用任何系统,现在遇到的问题是,如果我使用类似于Keil下载程序到0x8100000,在0x8000000地址开始的IAP程序,可以跳转到APP程序运行,然后我将板子上的SPI Flash里面的程序使用IAP程序烧写到0x8100000之后,出现卡死的情况,但已经执行了跳转程序,并且我SPI里面的程序和我下载到0x8100000的程序是一样的,并且我确认,我从SPI中烧写到板子上的程序没有出错,所以我想请问一下有哪位大神知道这个是什么问题吗?应该怎么样解决?跳转代码如下,
  1. uint32_t i=0;
  2.         void (*SysMemBootJump)(void);
  3.         __IO uint32_t BootAddr = 0x8100000;
  4.         __set_PRIMASK(1);
  5.        
  6.         SysTick->CTRL = 0;
  7.     SysTick->LOAD = 0;
  8.     SysTick->VAL = 0;
  9.                
  10.         HAL_RCC_DeInit();
  11.        
  12.         for (i = 0; i < 8; i++)
  13.         {
  14.                 NVIC->ICER[i]=0xFFFFFFFF;
  15.                 NVIC->ICPR[i]=0xFFFFFFFF;
  16.         }
  17.        
  18.         __set_PRIMASK(0);
  19.         if(((*(__IO uint32_t *)appxaddr) & 0x2FF00000)==0x24000000)        //检查栈顶地址是否合法.
  20.         {
  21.                 SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4)));
  22.                
  23.                 __set_MSP(*(uint32_t *)BootAddr);
  24.                 __set_CONTROL(0);
  25.                 SysMemBootJump();
  26.                 while(1)
  27.                 {
  28.                 }
  29.         }
复制代码



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107020
QQ
发表于 2020-9-2 18:00:16 | 显示全部楼层
基于STM32H7的BOOT和APP代码都使用最新版uCOS-III V3.08.00的案例,相互之间任意跳转
http://www.armbbs.cn/forum.php?m ... 7260&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

13

主题

43

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-9-2 18:06:40 | 显示全部楼层
eric2013 发表于 2020-9-2 18:00
基于STM32H7的BOOT和APP代码都使用最新版uCOS-III V3.08.00的案例,相互之间任意跳转
http://www.armbbs.c ...

BOOT程序必须要使用uCOS-III吗,可以不适用带有系统的BOOT跳转到带有系统的APP程序吗
回复

使用道具 举报

0

主题

50

回帖

50

积分

初级会员

积分
50
发表于 2020-9-2 21:45:40 | 显示全部楼层
读出来看看app代码是不是一样就行了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107020
QQ
发表于 2020-9-3 09:02:42 | 显示全部楼层
笑物语 发表于 2020-9-2 18:06
BOOT程序必须要使用uCOS-III吗,可以不适用带有系统的BOOT跳转到带有系统的APP程序吗

没问题,只是给你一个参考。主要看跳转。
回复

使用道具 举报

13

主题

43

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-9-3 09:15:46 | 显示全部楼层
eric2013 发表于 2020-9-3 09:02
没问题,只是给你一个参考。主要看跳转。

我的跳转代码就是上面贴出来的,但是现在的情况就是,我使用J-link烧写到0x8100000地址的程序可以通过IAP程序跳转过去执行,但是,我自己烧写的文件却不可以执行,我使用J-LINK读出来的程序,又跟我生成的bin文件是一致的,所以,这个现在我不太清楚问题在哪里?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107020
QQ
发表于 2020-9-4 01:52:40 | 显示全部楼层
笑物语 发表于 2020-9-3 09:15
我的跳转代码就是上面贴出来的,但是现在的情况就是,我使用J-link烧写到0x8100000地址的程序可以通过IAP ...

这种诡异问题,应该程序里面隐藏有其它bug,得逐步排查下了
回复

使用道具 举报

13

主题

43

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-9-4 08:39:56 | 显示全部楼层
eric2013 发表于 2020-9-4 01:52
这种诡异问题,应该程序里面隐藏有其它bug,得逐步排查下了

嗯嗯,我自己查找一下,能确定不是跳转的问题就十分感谢了
回复

使用道具 举报

6

主题

122

回帖

140

积分

初级会员

积分
140
发表于 2020-9-4 09:14:37 | 显示全部楼层
写之前得擦除FLASH。
keil帮你完成了擦除操作。
你得检查一下FLASH有没有擦除。
上面那位仁兄建议你读出来看看app代码是不是一样就行了。我觉得很有道理。
回复

使用道具 举报

2

主题

28

回帖

34

积分

新手上路

积分
34
发表于 2021-1-10 11:46:32 | 显示全部楼层
“SPI里面的程序和我下载到0x8100000的程序是一样的”并不代表你写入到flash到一定正确,可以在iap中直接读取打印输出0x8100000后数据,然后对比app的bin文件,这样可以大大定位问题范围
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 09:55 , Processed in 0.218961 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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