首页 > 解决方案 > FLASH bank 和处理器内核指令获取 stm32f7

问题描述

我正在通过 smth32f746ng 微控制器学习我的方式,并且遇到了一些关于闪存和使用 OpenOcd 写入闪存的问题。

因此 opoenOCD 默认写入地址 0x0 处的第一组闪存。处理器可以通过 ITCM 总线或 AXIM 访问闪存,地址为 0x08000000(Itcm) 或 0x00200000(Axim)。正如我所假设的,当进程通过 ITCM 总线从 0x08000000 读取指令时,它因此读取 0x0 闪存地址。

问题是:当处理器启动时,哪个寄存器控制获取第一条指令的初始方式。它会使用 ITCM 或 AXIM 总线获取吗?

如果有人能指出我在文档中的正确位置,那就太棒了。

标签: armstm32stm32f7

解决方案


您设置了向量表,该表中偏移量 0x004 处的地址是复位向量,它决定了它从哪里获取第一条指令。所以这取决于你是哪一个。

ARM 文档告诉你向量表是如何工作的。arm 地址空间中的地址 0x00000004 是复位向量。ST 文档告诉您 0x00000004 映射到什么,具体取决于 boot0 引脚(如果存在,可能还有 boot1)。ST 文档告诉您 0x00200000 和 0x08000000 指向用户/应用程序闪存的 ITCM 和 AXIM 路径。

因此,读取 0x00000004 以确定复位向量可能一直通过其中一个总线,之后您放入向量表的偏移量 0x004 中的内容决定了从哪个总线获取第一条指令。其余代码决定从/通过何处获取其余指令。


推荐阅读