STM32F030 中未找到 VTOR

问题描述 投票:0回答:2

尝试跳转到 STM32F030 微控制器上的引导加载程序应用程序代码地址时。我找不到向量表偏移寄存器。谁能指导一下如何成功执行跳转操作。

我们创建了一个链接器脚本,将向量表放置在 RAM 中 STM32F0 微控制器的特定地址处

stm32 bootloader cortex-m stm32f0
2个回答
0
投票

Cortex-M0 不支持向量表重定位。

参考手册 RM0360,第 45 页:

物理重映射
一旦选择启动模式,应用程序 软件可以修改代码区域中可访问的内存。这 修改是通过编程 MEM_MODE 位来执行的 SYSCFG 配置寄存器 1 (SYSCFG_CFGR1)。

与 Cortex® M3 和 M4、M0 CPU不支持向量表重定位。 对于位于与 0x0800 不同的地址的应用程序代码 0000,必须添加一些额外的代码才能提供服务 应用程序中断。解决方案是通过软件重新定位 向量表到内部 SRAM:
• 将向量表从闪存(映射到应用程序加载地址的基址)复制到 SRAM 的基址 0x2000 0000。
• 重新映射地址0x0000 处的SRAM 0000,使用SYSCFG配置寄存器1。
• 一旦发生中断,Cortex-M0 处理器就会从SRAM 中重定位的向量表中获取中断处理程序起始地址,然后跳转到执行位于闪存中的中断处理程序。此操作应在 应用程序的初始化阶段。请参阅 AN4065 和 附上来自 www.st.com 的 IAP 代码以了解更多详细信息


0
投票

在 Cortex M0+ 中,VTOR 是可选的,但这是一个普通的 Cortex M0,所以它肯定没有。

发生中断时加载的向量将始终从地址零开始。

您可以通过将向量复制到 RAM 并将 RAM 的开头重新映射到地址零来解决该问题,如 ST 论坛中的此线程中所述。

© www.soinside.com 2019 - 2024. All rights reserved.