STM32CubeIDE 中使用ccm
经常在 keil 中使用 ccm,但现在有一个使用STM32CubeIDE的项目没找到如何在 STM32CubeIDE 中使用STM32F40X CCM SRAM
在哪里配置?
STM32CubeIDE 里可以直接用 __attribute__((section(".ccmram"))) 来把变量放到 CCM,你试过了吗? 你在 Keil 里是怎么配置 CCM 的?STM32CubeIDE 需要手动修改链接脚本来支持。 试试在 STM32F40x_FLASH.ld 里找到 MEMORY 段,看看有没有定义 CCM,如果没有就加上:CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K。 在 STM32CubeIDE 里,用 __attribute__((section(".ccmram"))) 标记变量,或者 #pragma location = ".ccmram",然后在 linker script 里定义对应的段。 你用的是裸机还是 FreeRTOS?如果是 FreeRTOS,注意 CCM 不能用于 DMA,否则可能会有访问问题。 在 STM32CubeIDE 里 startup_stm32f40xx.s 可能默认没有初始化 CCM,需要手动加进去,否则数据可能不稳定。 试试看在 STM32F40x_FLASH.ld 里加上 .ccmram : { *(.ccmram) } >CCMRAM,这样可以让 .ccmram 段正确映射到 CCM。 你是想把代码放进 CCM 还是只放数据?CCM 不能用于执行代码,只能存数据。 你有没有用 volatile 关键字?有时候优化器可能会让 CCM 变量访问异常,特别是和普通 SRAM 混用时。 你能贴一下你在 STM32CubeIDE 里尝试的配置吗?看看哪里可能少了关键步骤。 公羊子丹 发表于 2025-3-24 08:17
STM32CubeIDE 里可以直接用 __attribute__((section(".ccmram"))) 来把变量放到 CCM,你试过了吗? ...
感谢,测试一下 Pulitzer 发表于 2025-3-24 08:26
你是想把代码放进 CCM 还是只放数据?CCM 不能用于执行代码,只能存数据。
这个知道的 Bblythe 发表于 2025-3-24 08:25
试试看在 STM32F40x_FLASH.ld 里加上 .ccmram : { *(.ccmram) } >CCMRAM,这样可以让 .ccmram 段正确映射到 ...
感谢,测试中
页:
[1]