网站文章快速被收录,做淘宝客网站骗钱,博物馆设计,优秀网页设计教程RAM不够#xff1f;使用CCMRAM 文章目录 RAM不够#xff1f;使用CCMRAM打开连接LD文件#xff1a;添加代码添加标识宏使用 打开连接LD文件#xff1a; 添加代码
在SECTIONS段最后加上下面代码#xff1a; _siccmram LOADADDR(.ccmram); /* CCM-RAM section * * IMPORTAN…RAM不够使用CCMRAM 文章目录 RAM不够使用CCMRAM打开连接LD文件添加代码添加标识宏使用 打开连接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 系列处理器的链接脚本代码用于描述内存布局中的 .ccmramCore 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