RAM不够?使用CCMRAM

RAM不够?使用CCMRAM



打开连接LD文件:

在这里插入图片描述

添加代码

在SECTIONS段最后加上下面代码:

 _siccmram = LOADADDR(.ccmram);	
	  /* CCM-RAM section 
	  * 
	  * IMPORTANT NOTE! 
	  * If initialized variables will be placed in this section,
	  * the startup code needs to be modified to copy the init-values.  
	  */
	  .ccmram (NOLOAD) :
	  {
	    . = ALIGN(4);
	    _sccmram = .;       /* create a global symbol at ccmram start */
	    *(.ccmram)
	    *(.ccmram*)
	    
	    . = ALIGN(4);
	    _eccmram = .;       /* create a global symbol at ccmram end */
	  } >CCMRAM

代码解释:
这段代码是针对 ARM Cortex-M 系列处理器的链接脚本代码,用于描述内存布局中的 .ccmram(Core Coupled Memory RAM)段。这段代码告诉链接器如何将程序的各个部分放置在 .ccmram 段中。下面我会对每个部分进行详细解释:

_siccmram = LOADADDR(.ccmram);

这一行代码将 .ccmram 段的加载地址(LOADADDR)赋值给 _siccmram 符号。_siccmram 是一个全局符号,它将指向 .ccmram 段的起始地址。

.ccmram (NOLOAD) :
{
    . = ALIGN(4);
    _sccmram = .;       /* create a global symbol at ccmram start */
    *(.ccmram)
    *(.ccmram*)
    
    . = ALIGN(4);
    _eccmram = .;       /* create a global symbol at ccmram end */
} >CCMRAM

这段代码定义了 .ccmram 段的内容。以下是对各个部分的解释:

. = ALIGN(4);:这是一个地址对齐操作,确保接下来的数据在 4 字节边界上对齐。ALIGN(4) 意味着数据将按照 4 字节对齐。

_sccmram = .;:这一行代码创建一个全局符号 _sccmram,它将指向此时的地址,即 .ccmram 段的起始地址。

*(.ccmram) 和 (.ccmram):这两行代码表示将所有放置在 .ccmram 段的标准和重定位代码(包括初始化数据、代码等)都添加到此处。

. = ALIGN(4);:再次执行地址对齐操作,确保 .ccmram 段的大小是 4 的倍数。

_eccmram = .;:这一行代码创建另一个全局符号 _eccmram,它将指向此时的地址,即 .ccmram 段的结束地址。

最后,>CCMRAM 指示链接器将这些内容放置在名为 CCMRAM 的特定内存区域中。

综合来看,这段代码的作用是定义了一个名为 .ccmram 的段,该段将位于指定的 CCMRAM 内存区域中。这段代码也提供了起始地址 _sccmram 和结束地址 _eccmram 的全局符号,以便在程序中可以引用这些地址。

添加标识宏

然后在main.h中添加使用CCMRAM的宏标识:

#define CCMRAM __attribute__((section(".ccmram")))

使用

使用:在你想让变量使用CCMRAM的变量的前面加上标识CCMRAM
在这里插入图片描述
结果:成功使用CCMRAM
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦梨甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值