STM32H743CubeIDE将变量定义到指定的内存

2020-05-10

STM32H743+CubeIDE:将变量定义到指定的内存

本文详细介绍了如何在STM32H743微控制器上使用STM32CubeIDE将变量定义到指定的内存区域。通过本文的指导,开发者可以充分利用STM32H743的内存资源,优化程序性能。

内容概述

1. 前言

在实际项目中,充分发挥STM32H743的性能,必须将频繁存取的数据存放在DTCM内存(Tightly-Coupled Memory,紧密耦合内存)。DTCM内存的特点是与内核速度一样(480M),而其他内存(如SRAM1、AXI SRAM、SRAM2、SRAM3等)与CPU的通讯速度只有200M,CPU需要等待一段时间才能读取或存放数据。为了提高CPU与其他内存的通讯效率,Cortex-M7引入了Cache(高速缓冲区,与CPU通讯速度400M)。

2. 将变量定义到指定的内存

2.1 将变量定义到DTCM内存

普通方式定义的全局变量默认被分配到DTCM内存上。在STM32CubeIDE上不需要修改任何配置,普通方式定义的全局变量都会被分配到DTCM内存上。

2.2 将变量定义到RAM_D1内存

在ld链接文件中分配一个用户段(section),段的名字是_D1_Area,段的地址是>RAM_D1,4个字节对齐。接着,使用__attribute__((section(“name”)))声明变量,定义变量后,编译成功后Build Analyzer会更新。

3. STM32CubeIDE实用技巧之ld链接文件解读

ST官方文件《STM32CubeIDE实用技巧之ld链接文件》详细解读了ld链接文件的MEMORY和Section部分。熟悉这些内容有助于更好地理解如何将变量定义到指定的内存。

4. 细节补充

在Keil与IAR环境下,建议直接参考《安富莱_STM32_V7开发板_用户手册》的第25章与第26章,教程很不错。

总结

通过本文的指导,开发者可以有效地将变量定义到STM32H743的指定内存区域,从而优化程序性能,充分发挥STM32H743的潜力。

下载链接

STM32H743CubeIDE将变量定义到指定的内存