硬汉嵌入式论坛

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

[STM32H7] stm32h743修改中断向量偏移地址后,程序跑飞

[复制链接]

7

主题

22

回帖

43

积分

新手上路

积分
43
发表于 2024-1-16 18:20:33 | 显示全部楼层 |阅读模式
      在STM32H743上加了一个bootloader,跳转程序如下图所示。bootloader占用了第0个扇区,大小为0x20000。
       下载.png
  
  下图是分散加载设置
下载 (2).png



     然后APP程序将中断偏移地址设置成了0x20000。调试bootloader时,是可以看到程序有进行跳转动作的,但应用程序没有启动成功。后面再调试应用程序,发现启动后LDR就直接指导了0x080002C8,这个地址应该是属于bootloader了吧
    再将APP程序中断偏移地址改为0,IROM1改回到0x0800000后,程序就是运行正常的。
    不知到为什么会出现这种情况,按理H7应该是可以在Flash的任意地址运行的吧?有没有遇到类似情况的啊,求指导!!

下载 (1).png


回复

使用道具 举报

2

主题

269

回帖

275

积分

高级会员

积分
275
发表于 2024-1-16 21:42:08 | 显示全部楼层
SCB->VTOR 寄存器配置了么
回复

使用道具 举报

75

主题

685

回帖

910

积分

金牌会员

积分
910
发表于 2024-1-16 23:17:55 | 显示全部楼层
跳转前有没有清理bootloader用到的外设和堆栈?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2024-1-17 08:40:25 | 显示全部楼层
你用的是不是AC6,这个是之前问题的记录,你将你的两个局部变量设置为全局变量看下


回复

使用道具 举报

7

主题

22

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-1-17 11:42:43 | 显示全部楼层
cctv180 发表于 2024-1-16 21:42
SCB->VTOR 寄存器配置了么

配置了,加了0x20000
回复

使用道具 举报

7

主题

22

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-1-17 11:47:04 | 显示全部楼层
eric2013 发表于 2024-1-17 08:40
你用的是不是AC6,这个是之前问题的记录,你将你的两个局部变量设置为全局变量看下

请问这个具体要怎么改啊,麻烦发一下链接,谢谢哈。
另外,我将bootloader重新复制一份做了app程序,也把中断向量偏移,分散加载这些做了修改,发现调试的时候也是出现了上面的问题,LDR指向了0x080002C8,没法进入SystemInit函数。估计这个问题是出在了bootloader的跳转那里了。
回复

使用道具 举报

7

主题

22

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-1-17 11:51:58 | 显示全部楼层
庄永 发表于 2024-1-16 23:17
跳转前有没有清理bootloader用到的外设和堆栈?

外设时钟,中断之类的都关闭了
回复

使用道具 举报

7

主题

22

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-1-17 15:19:51 | 显示全部楼层
eric2013 发表于 2024-1-17 08:40
你用的是不是AC6,这个是之前问题的记录,你将你的两个局部变量设置为全局变量看下

谢谢大神,跳转成功了。
开始还不知道这里要具体怎么改,后来用CUBEIDE重新搞了个工程,一模一样的代码,跳转没有任何问题,上面的app也能正常运行。
之前在keil上调试时,发现执行完__set_MSP(*(__IO uint32_t*)app_addr);语句后,变量就都被清零,当时不太确定这里是不是有问题。然后在cubeide上调试发现变量没有清零,那么问题应该就是出在这里了。然后按大神的方法,把局部变量jump_addr和JumpToApp,改成全局变量就OK了,再次感谢大神!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 18:10 , Processed in 0.304591 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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