ET6000系列芯片采用ARM 高性能32位微控制器内核Cortex-M7。相较于M3/M4的内存,TCM(紧耦合内存)是Cortex-M7的一项重要特性,它允许设计者配置高速、低延迟的内存区域,通常用于存储关键的,时间敏感的程序代码或数据,以减少对外部RAM的访问延迟,提高系统响应速度。
同时ET6000系列芯片配备了高速指令缓存(I-Cache)和数据缓存(D-Cache)以及超大容量的SRAM。高效的内存访问机制、优化的指令执行和灵活的存储资源配置,能够满足高性能嵌入式应用的需求。在此篇文章中,我们将对 ET6000系列MCU 片上存储资源使用和配置进行详细说明。
ET6000 各类存储类型介绍
TCM
TCM 在物理上是非常靠近CPU核的, 与CPU直接连接 TCM包含ITCM和DTCM DTCM 通常用于存储关键变量和经常更新的变量 ITCM 通常用于访问关键函数、异常向量表和中断服务程序 ITCM和DTCM之间可以相互借用 TCM的访问速度远高于SRAM Cache
作为CPU和SRAM/eFlash之间的桥梁,缓存应用程序的部分指令和部分数据 对于应用程序程序员来说,Cache内容是不可见的 Cache包含ICache和DCache 开启Cache可以显著提升指令在eFlash中执行的速度 多核或DMA访问场景,需要注意cache一致性 SRAM
物理上与CPU核距离较远,通过总线与CPU连接 存储应用程序指令 存储和更新应用程序数据 访问速度高于Flash, 低于 TCM 使用时,建议开启cache eFlash
存储应用程序指令 访问速度最慢 使用时,建议开启cache
TCM | SRAM | eFlash | |
---|---|---|---|
容量大小 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
访问速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
应用场景 | 中断服务函数或实时任务,栈, 算法 | 存储应用程序指令 存储和更新应用程序数据 | 存储和执行应用程序指令 掉电可以保存 |
C2000 vs ET6000
C2000 | ET6000 | 相同点 | 差异点 |
---|---|---|---|
M0/M1 RAM | TCM | 与CPU紧耦合 ,带ECC | C2000: 只有CPU可以访问 ET6001: 单核:CPU和DMA都可以访问 双核:每个核只能访问自己的TCM;DMA可访问2个核的TCM |
LSx RAM | SRAM | 带ECC | C2000: 默认只有CPU可以访问,配置后可以与CLA共享或CLA独享 ET6001: CPU和DMA都可以访问 |
GSx RAM | SRAM | 带ECC | C2000: CPU,DMA,HIC共享 ET6001: CPU和DMA都可以访问 |
TCM 应用示例
针对一些对执行时间有严格要求的代码段,应用开发者在优化性能时,可优先考虑将此部分代码段重定位到TCM区域中。
ET6000 SDK提供了标准的宏,用户声明函数将重映射到ITCM中(默认在eFlash中),如下示例:
1)在代码中将需要重映射的函数 增加宏定义声明__ITCM_FUNC
/* SDK 头文件已定义 */ #define __ITCM_FUNC __attribute__((section(".ITCMFunc"))) __RAM_FUNC void Pfc_Isr(void) /* 只需要增加 __ITCM_FUNC 即可 */ { register float dCorrOut; register float dLineVoltageV; register float dAdPfcVolt; register float dRmsOrderA; static float dLineVoltageVReg = 0; .... }
2)编译程序,编译前选择SDK默认的链接脚本link_flash.sct
3)编译成功后查看map文件,已重映射成功
Memory Map of the image Image Entry point : 0x08000801 Load Region LR_PFLASH_CODE (Base: 0x08000400, Size: 0x0000e6f0, Max: 0x00080000, ABSOLUTE, COMPRESSED[0x0000e168]) Execution Region ITCM_RAMCODE (Exec base: 0x00000000, Load base: 0x0800a274, Size: 0x000039c0, Max: 0x00008000) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x00000490 0x0800a704 0x00000e70 Code RO 6377 RAMCODE et6001acdc_isr.o
来源:翌创微
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。