断断续续看了两天CMD的知识,只是肤浅的了解一点,勿怪。
CMD文件实现对程序存储器空间和数据存储器空间的分配。这个链接器文件主要有两大部分, MEMORY部分和SECTIONS部分。其中MEMORY部分就是芯片内存相对应的部分,包括PAGE 0——默认的是程序代码的内存部分,PAGE 1 是变量代码的内存部分。选址可以自定义,比如定义Flash 是定义片上的闪存部分,起始地址、长度也是和对应的芯片相对应。SECTIONS部分有通常的链接器默认名,“·text”、“·ebss”等等,要指定这个代码映射到某一个位置所对应的PAGE 是0 还是1。
现在目标很明显,就是学习MEMORY和SECTIONS相关的概念和操作。
首先来说MEMORY
常见的MEMORY操作示例如下:
看完样例,我们就需要具体分析MEMORY每个字段和符号的含义了,这样方便我们更能深入了解系统运行,先来看下MEMORY的结构:
其中page---指定要使用的存储器页面,name---存储名字(A-Z, a-z, $, ., _),attr---属性(R/W/X/I),oraigin---起始地址,length---存储长度,fill---默认填充内容。