DSP F28335入门(1)——新建工程之CMD文件解释

https://blog.csdn.net/sinat_37710872/article/details/82425299
CCS中CMD文件用于指定存储区域的划分,为程序代码和数据分配指定空间。
DSP28335工程文件里CMD文件一般有两个:
(1)DSP2833x_Headers_nonBIOS.cmd,把外设寄存器的数据段映射到对应的存储空间
(2)28335_RAM_lnk.cmd

涉及的两条伪指令:MEMORY伪指令和SECTION伪指令

(1)MEMORY伪指令用来表示实际存在目标系统中的可以使用的存储器范围,在这里每个存储器都有自己的**名字,起始地址和长度!!!**它告诉链接程序怎样计算和分配空间,根据芯片不同存储空间大小不同。
格式:
Name:origin=0x???, length=0x???
例如:
FLASH:origin=0x300000,length=0x040000

DSP的CMD采用分页制(page),其中,PAGE0用于存放程序空间、PAGE1用于存放数据空间。

(2)SECTIONS伪指令用来描述输入端是如何组合到输出端内的。SECTIONS部分,在程序里添加段名.XXXX(如.vectors)用来指定该段名以下,另一个段名以上的程序(属于PAGE0)或数据(属于PAGE1)放到“>”符号后的空间名字所在的地方。
SECTIONS部分的段可分为初始化段和非初始化段。初始化段包含代码和常数等必须在DSP上电滞后有效的数,故初始化块必须保存在如片内FLASH等非遗失性存储器中;非初始化段中含有在程序运行过程中才向变量内写数据进去,所以非初始化段必须链接到易失性存储器中如RAM。
DSP F28335入门(1)——新建工程之CMD文件解释_第1张图片
DSP F28335入门(1)——新建工程之CMD文件解释_第2张图片

DSP F28335入门(1)——新建工程之CMD文件解释_第3张图片
(3)链接代码与存储单元的3个步骤
1.定义存储单元的不同区域,注意使用外部存储器时,需要使用外部存储区接口XINTF。
2.定义段与存储器区域的关联关系。
3.进行.obj文件与.cmd文件的链接。

链接器将输入文件中的每一个段链接起来,然后根据.cmd文件中MEMORY与SECTIONS命令的参数,将相应位置、长度的存储空间分配给段。
DSP F28335入门(1)——新建工程之CMD文件解释_第4张图片
如果某文件例如.text很大时,编译显示超过内存范围,可以查看.map文件确定每个存储单元使用情况(或者每个变量的地址及占用的存储空间);解决方法时:可以将其放入两个存储段,使用“>>”及“|”将两个存储段。
例如:
MEMORY{
PAGE0:
DARAM4:o=0x18000|=0x02000
DARAM5:o=0x1A000|=0x02000
}
SECTIONS{
.text:{*(.text)}>>DARAM4|DARAM5
}

你可能感兴趣的:(DSP_F28335)