Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm 在STM32F4中物理重新映射到RAM后使用哪条数据总线?_Arm_Ld_Stm32_Stm32f4 - Fatal编程技术网

Arm 在STM32F4中物理重新映射到RAM后使用哪条数据总线?

Arm 在STM32F4中物理重新映射到RAM后使用哪条数据总线?,arm,ld,stm32,stm32f4,Arm,Ld,Stm32,Stm32f4,STM32F4控制器(配备ARM Cortex M4 CPU)允许使用SYSCFG_MEMRMP寄存器对内存空间中的最低地址(0x00000000到0x03FFFFFF)进行所谓的物理重新映射。我所了解的是,寄存器选择哪个内存(闪存/RAM/等)别名为最低地址,因此在复位后从哪个内存获取复位向量和堆栈指针 文件[1]还提到: 在重新映射模式下,CPU可以通过ICode总线访问外部存储器 而不是提高性能的系统总线 这意味着在重新映射后(例如,为了RAM从别名地址空间(0x00000000到0x03

STM32F4控制器(配备ARM Cortex M4 CPU)允许使用SYSCFG_MEMRMP寄存器对内存空间中的最低地址(0x00000000到0x03FFFFFF)进行所谓的物理重新映射。我所了解的是,寄存器选择哪个内存(闪存/RAM/等)别名为最低地址,因此在复位后从哪个内存获取复位向量和堆栈指针

文件[1]还提到:

在重新映射模式下,CPU可以通过ICode总线访问外部存储器 而不是提高性能的系统总线

这意味着在重新映射后(例如,为了RAM从别名地址空间(0x00000000到0x03FFFFFF)中获取的指令),将使用ICode总线

现在我的问题是:在重新映射操作(例如到RAM)之后,是否会使用系统总线或ICode总线获取RAM的非别名位置?

问题的背景是,我想为仅从RAM执行的图像编写一个链接器脚本(在调试器的控制下)。.text部分应该转到哪个内存区域?别名空间还是物理空间

[1] ST文件018909第7版


感谢Sean,我可以在ARM®Cortex®‑M4处理器技术参考手册第2.3.1节总线接口中找到答案:

ICode内存接口:指令从代码内存空间获取, 0x00000000到0x1FFFFFC通过[sic!:this]32位AHB Lite总线执行

DCode内存接口:对代码内存空间的数据和调试访问, 0x00000000到0x1FFFFFF通过[sic!:this]32位AHB Lite总线执行

系统接口:指令获取、数据和调试访问 地址范围0x20000000到0xDFFFFF和0xE0100000到0xFFFFFF 通过[sic!:此]32位AHB Lite总线执行

这也清楚地表明,位于0x08000000的STM32F4 MCU闪存始终使用ICode/DCode总线访问(由CPU内核),无论是否重新映射。这是因为原始位置和重新映射的位置都在代码内存空间(0x00000000到0x1FFFFFF)内


但是,如果代码位于0x20000000的SRAM中,则访问0x00000000的重新映射位置将使用ICode/DCode总线,而访问原始位置(代码内存空间之外)将使用系统总线。

内核上总线接口的选择取决于访问的地址。如果访问0x00000004处的指令,则这是在ICode总线上完成的。使用系统总线访问0x2000004


重新映射功能所做的是更改物理内存系统,以便对0x00000004(ICode总线)的访问将使用与系统总线上的访问相同的RAM。对0x2000004的任何访问都将不受影响,并且仍然由core在系统总线上生成。

谢谢,您能说出一些文档吗?是否描述了这种行为?我在ARM文档中找到了它。请参阅我更新的问题。@Alexander更正,v7m体系结构中也包含了此问题,但不一定是明确的,因为重新映射是系统级的事情。