[APM32F4] 将数据搬运到APM32F407的CCM中来

[复制链接]
167|17
海洋凝视 发表于 2026-4-23 10:43 | 显示全部楼层 |阅读模式
在极海APM32F407芯片中,有一块64KB的SRAM空间,传说中的CCM(Core Coupled Memory),据说离内核特别的近,速度也特别的快。但在我之前的项目里面没有启用它。
CCM的映射地址为0x1000_0000,即其地址范围为0x1000_FFFF。
把数据搬运到CCM中的方法有两种:一种是通过启动后自己for循环把数据拷贝过去;另一种是通过链接器配置,让MCU在启动阶段自已把数据搬运过去。
对于第一种方式,由于全是自已操作,自已指定一个地址指针,然后,首先把数据拷贝过去,之后就可以使用了。简单,可靠。
重点分享一下另一种方式,通过链接器的方式。首先,我们需要在sct文件里面声明一个section,我们把它取名为CCMRAM,并指定起始地址0x1000_0000与空间大小0x10000。
  1. RW_CCMRAM 0x10000000 UNINIT 0x00010000  {  ; RW data
  2.    .ANY (+RW +ZI)
  3. }
我们在代码里面对变量的声明要添加attribute属性即可,如下方:

  1. // 把变量定义到CCMRAM区域,但具体位置由编译器决定
  2. uint8_t data_buf[256] __attribute__((section("CCMRAM")));

  3. // 把变量定义到具体地址,由程序员管理
  4. uint8_t data_buf[256] __attribute__((section(".ARM.__at_0x10000000")));
上述两种方式就可以充分利用CCM的速度优势。





她已醉 发表于 2026-4-25 08:14 | 显示全部楼层
感谢分享!通过链接器配置的方式确实可以减少代码中的拷贝操作,提高效率。
风凉 发表于 2026-6-2 22:29 | 显示全部楼层
感谢分享!我之前一直使用第一种方法,现在看来第二种方法更加高级,可以减少手动拷贝的麻烦。我会尝试在新项目中使用链接器配置的方式。
janewood 发表于 2026-6-4 08:21 | 显示全部楼层
APM32F407的CCM容量是多少?
gygp 发表于 2026-6-5 16:29 | 显示全部楼层
CCM通常映射到地址 0x1000 0000 ~ 0x1000 FFFF
burgessmaggie 发表于 2026-6-5 20:25 | 显示全部楼层
紧密耦合存储器              
houjiakai 发表于 2026-6-6 10:07 | 显示全部楼层
如何验证数据已正确写入CCM?              
lzbf 发表于 2026-6-6 12:48 | 显示全部楼层
搬运数据前需要做哪些初始化设置?
mattlincoln 发表于 2026-6-6 13:51 | 显示全部楼层
CCM区域如何配置中断堆栈?              
mnynt121 发表于 2026-6-6 15:20 | 显示全部楼层
不需要运行时搬运,让编译器和链接器直接把变量分配到CCM区域。这也是最常用的方法。
phoenixwhite 发表于 2026-6-6 16:43 | 显示全部楼层
CCM的优势是访问速度与CPU同频,适合存放频繁访问的数据,以提升系统性能。
claretttt 发表于 2026-6-6 17:21 | 显示全部楼层
CCM数据在调试时为何显示异常?
abotomson 发表于 2026-6-6 17:52 | 显示全部楼层
数据搬运失败可能是什么原因?              
瞌睡虫本虫 发表于 2026-6-7 17:42 | 显示全部楼层
感谢分享!使用CCMRAM section和attribute属性确实可以简化代码,并且提高数据访问速度。这对于需要快速响应的嵌入式系统来说是一个很大的优势。
codingtuzi 发表于 2026-6-7 10:29 | 显示全部楼层
还可以这样操作啊!
我还以为要自已写程序赋值过去呢!
backlugin 发表于 2026-6-7 19:41 | 显示全部楼层
动态调整CCM数据大小的方法?              
ccook11 发表于 2026-6-7 20:39 | 显示全部楼层
从CCM取指执行也是零等待的!              
将爱藏于深海 发表于 2026-8-29 07:16 | 显示全部楼层
感谢分享!使用链接器配置CCMRAM区域的方法听起来很高级,这样可以在编译时就确定数据位置,减少运行时的拷贝操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

51

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0