STM32上的数据、指令和闪存CCM RAM有什么区别
What is the difference between data, instruction, and flash CCM RAM on the STM32
此 STM32F7 架构概述的第 14 页 document 显示了内存地址:
- FLASH-ITCM(我使用的 F730 的大小未知)
- DTCM-RAM (64KB)
- ITCM-RAM (16KB)
这些有什么区别?许多示例显示数据进入 DTCM。堆栈或关键函数之类的东西最适合在哪里?
通过 ART 加速器使用闪存 ITCM 接口有什么好处吗?
DTCM 和 ITCM 的区别在于它们连接到哪条总线上,DTCM 在 D 总线上,因此用于数据,这是存储堆栈的理想位置,ITCM 在 I 总线上,因此用于获取指令(代码),这是存储关键例程的好地方。
ART 加速器介于 Flash 和 ITCM 之间,因此不是非此即彼。通过 ITCM 将闪存用于代码是有利的,因为这样您可以获得加速,而通过 AHB 总线则不能。所有闪存都可以通过 ITCM 接口或 AHB 总线访问,具体取决于您使用的地址; 0x0020 0000
到0x0027 FFFF
是通过ITCM,0x0800 0000
到0x0807 FFFF
是通过AHB,两组地址都指向同一个闪存区域。
此 STM32F7 架构概述的第 14 页 document 显示了内存地址:
- FLASH-ITCM(我使用的 F730 的大小未知)
- DTCM-RAM (64KB)
- ITCM-RAM (16KB)
这些有什么区别?许多示例显示数据进入 DTCM。堆栈或关键函数之类的东西最适合在哪里?
通过 ART 加速器使用闪存 ITCM 接口有什么好处吗?
DTCM 和 ITCM 的区别在于它们连接到哪条总线上,DTCM 在 D 总线上,因此用于数据,这是存储堆栈的理想位置,ITCM 在 I 总线上,因此用于获取指令(代码),这是存储关键例程的好地方。
ART 加速器介于 Flash 和 ITCM 之间,因此不是非此即彼。通过 ITCM 将闪存用于代码是有利的,因为这样您可以获得加速,而通过 AHB 总线则不能。所有闪存都可以通过 ITCM 接口或 AHB 总线访问,具体取决于您使用的地址; 0x0020 0000
到0x0027 FFFF
是通过ITCM,0x0800 0000
到0x0807 FFFF
是通过AHB,两组地址都指向同一个闪存区域。