FLASH banks和处理器核心取指令stm32f7

FLASH banks and processor core instruction fetching stm32f7

我正在通过 smth32f746ng 微控制器学习我的方法,并且 运行 涉及关于闪存和使用 OpenOcd 写入闪存的几个问题。

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

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

如果有人能告诉我他在文档中的正确位置会很棒。

您设置了向量 table 和偏移量 0x004 处的地址,其中 table 是重置向量,它决定了从何处获取第一条指令。所以由你决定。

ARM 文档告诉您向量 table 的工作原理。 arm地址space中的地址0x00000004是复位向量。 ST 文档告诉您 0x00000004 映射到什么,具体取决于 boot0 引脚(如果存在,也可能是 boot1)。 ST 文档告诉您 0x00200000 和 0x08000000 指向 user/application 闪存的 ITCM 和 AXIM 路径。

因此读取 0x00000004 以确定重置向量可能会一直通过其中一条总线,之后是您放入向量偏移量 0x004 中的内容 table 决定了第一个总线指令被取通。其余代码决定了其余指令的提取位置 from/through.