arm - FLASH bank 和处理器内核指令获取 stm32f7
问题描述
我正在通过 smth32f746ng 微控制器学习我的方式,并且遇到了一些关于闪存和使用 OpenOcd 写入闪存的问题。
因此 opoenOCD 默认写入地址 0x0 处的第一组闪存。处理器可以通过 ITCM 总线或 AXIM 访问闪存,地址为 0x08000000(Itcm) 或 0x00200000(Axim)。正如我所假设的,当进程通过 ITCM 总线从 0x08000000 读取指令时,它因此读取 0x0 闪存地址。
问题是:当处理器启动时,哪个寄存器控制获取第一条指令的初始方式。它会使用 ITCM 或 AXIM 总线获取吗?
如果有人能指出我在文档中的正确位置,那就太棒了。
解决方案
您设置了向量表,该表中偏移量 0x004 处的地址是复位向量,它决定了它从哪里获取第一条指令。所以这取决于你是哪一个。
ARM 文档告诉你向量表是如何工作的。arm 地址空间中的地址 0x00000004 是复位向量。ST 文档告诉您 0x00000004 映射到什么,具体取决于 boot0 引脚(如果存在,可能还有 boot1)。ST 文档告诉您 0x00200000 和 0x08000000 指向用户/应用程序闪存的 ITCM 和 AXIM 路径。
因此,读取 0x00000004 以确定复位向量可能一直通过其中一个总线,之后您放入向量表的偏移量 0x004 中的内容决定了从哪个总线获取第一条指令。其余代码决定从/通过何处获取其余指令。
推荐阅读
- c# - 如何在 datetime 对象中仅存储时间?
- c# - PMML 中的缺失/空数据字段值
- angular - this.router.navigate 功能无法按预期工作
- python-3.x - 如何在 python 中使用 mechanize 或 request 在 textarea 中输入数据
- reactjs - React Router 5 with Meteor:如何忽略 /public 中的文件
- r - 在 plotly r shiny 应用程序中动态添加跟踪
- c - C memcpy 到结构分配
- react-native - React Native Formik - 将对象传递给HandleChange时出错
- c# - 如何使 HttpWebRequest 函数异步?
- android - 如何创建具有透明部分的 DialogFragment?