硬汉嵌入式论坛

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

[BOOT/IAP] 請問IAP跳轉有機會卡在SCB->VTOR這段,是什麼原因?

[复制链接]

6

主题

17

回帖

35

积分

新手上路

积分
35
发表于 2023-10-2 15:14:33 | 显示全部楼层 |阅读模式
本帖最后由 acer1204 于 2023-10-2 16:15 编辑

目前我有2個程序

一個是IAP,位址使用0x08100000 size  0x00100000
一個是APP,位址使用0x08000000 size  0x00100000
當我用APP跳轉至IAP時候,有機率性會卡在SCB->VTOR=0x08000000 | 0x00100000。
有時候很正常,有時候會卡住。
有人有遇過這個問題嗎?
APP部分功能較多,不過我有把所有用到到功能都DeInit掉了。
(PS:FreeRtosv2+LVGL做個小HMI)


有試過在int main(void)
{
SCB->VTOR = FLASH_BASE|0x100000;(第一行)
...
...
}
或是透過USER_VECT_TAB_ADDRESS並在,並修改system_stm32h7xx.c的
#define VECT_TAB_BASE_ADDRESS FLASH_BANK1_BASE   ==> #define VECT_TAB_BASE_ADDRESS FLASH_BASE
#define VECT_TAB_OFFSET             0x00000000U             ==> #define VECT_TAB_OFFSET         0x00100000U  

也是一樣。
若用debug模式,測試100次都不會有問題
若不用debug模式,則有概率卡住不動。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-10-2 17:20:52 | 显示全部楼层
这种的,应该是你跳转没有提供干净的运行环境。

简单省事些,APP跳转到boot的话,直接调用NVIC_SystemReset()
回复

使用道具 举报

6

主题

17

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2023-10-3 11:31:08 | 显示全部楼层
eric2013 发表于 2023-10-2 17:20
这种的,应该是你跳转没有提供干净的运行环境。

简单省事些,APP跳转到boot的话,直接调用NVIC_SystemRe ...

目前調用也是發生一樣的
但是在main運行第一行加入
for(long int  i=0;i<1000000;i++)
    __NOP();
就正常了,挺不可思議的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-10-3 15:32:15 | 显示全部楼层
acer1204 发表于 2023-10-3 11:31
目前調用也是發生一樣的
但是在main運行第一行加入
for(long int  i=0;i

软件复位反应到硬件上,会在硬件复位引脚有个复位信号发出来,你那边使用软件复位不行的话,需要延迟会才正常,说明你的硬件上有些外设有复位不同步的问题,大概率是这样。


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 22:11 , Processed in 0.188392 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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