arm - STM32上的数据、指令和闪存CCM RAM有什么区别

标签 arm stm32 cortex-m stm32f7

STM32F7 架构概述的第 14 页 document显示内存地址:

  • FLASH-ITCM(我正在使用的 F730 的尺寸未知)
  • DTCM-RAM (64KB)
  • ITCM-RAM (16KB)

这些有什么区别?许多示例显示数据进入 DTCM。像堆栈或关键函数这样的东西最适合在哪里?

与 ART 加速器相比,使用闪存 ITCM 接口(interface)有什么好处吗?

最佳答案

DTCM 和 ITCM 之间的区别在于它们连接到哪条总线,DTCM 位于 D 总线上,因此用于数据,这是存储堆栈的理想位置,ITCM 位于 I 总线上,因此用于数据获取指令(代码),这是存储关键例程的好地方。

ART加速器位于Flash和ITCM之间,所以它不是一个非此即彼的问题。通过 ITCM 使用闪存来编写代码是有利的,因为这样您就可以获得加速,而通过 AHB 总线则无法获得加速。所有闪存均可通过 ITCM 接口(interface)或 AHB 总线使用,具体取决于您使用的地址; 0x0020 00000x0027 FFFF 通过 ITCM,0x0800 00000x0807 FFFF 通过 AHB,两组地址都指向 Flash 的同一区域。

关于arm - STM32上的数据、指令和闪存CCM RAM有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54930005/

相关文章:

android - 链接 Android C 代码和 ARM 汇编程序

c - 以下调用在 C 中是什么意思?

gcc - 对 `__aeabi_ddiv'和 friend 的 undefined reference -在没有stdlib的情况下使用-mfloat-abi = hard进行构建

arm - 适用于 ARM 皮质 M4 的 Ocaml?

linux - 将函数指针从内核驱动程序传递到管理程序

arm - 如何为 Arm/Raspberry Pi 交叉编译 libsndfile

stm32 - 删除STM32 Flash Sector挂起的程序

microcontroller - I2C、上拉电阻(STM32发现)

embedded - stm32删除闪存即使没有写入?

c - LPC17xx : Check if RTC is running