一个完整的DSP程序至少包含三个部分:程序代码、中断向量表、链接命令文件(或称链接配置文件)(*.cmd)。
链接配置文件确定了程序链接成最终可执行代码时的选项,其中有很多条目,实现不同方面的选项,其中最常用的也是必须的有两条:1.存贮器的分配;2.标明程序入口。如:
-e CodeStart
MEMORY {
page 0: PRAM: org="0100h" len="0F00h"
}
SECTIONS{
.text:>PRAM page 0
}
由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配置文件。一个比较通用的链接配置文件:
-e CodeStart
-m map.map
MEMORY {
PAGE 0: VECT: org=0080h len="0080h"
PARAM: org="100h" len="0F00h"
PAGE 1: DARAM: org="1000h" len="1000h"
}
SECTIONS {
.text :> PARAM PAGE 0
.vectors :> VECT PAGE 0
stack :> DARAM PAGE 1
.bss :> DARAM PAGE 1
.data :> DARAM PAGE 1
}
MEMORY伪指令在命令文件中的书写方式为:以大写MEMORY开始,后面跟着由大括号括起来的一系列存储器范围说明。每一个存储器区间具有一个名称、起始地址以及存储器的长度。下面的实例为实用MEMORY伪指令的简单例子。在该例中,起始地址为数据存储器中的60H;B1块为256字节的RAM,起始地址为数据存储器中的200H;B0块为256字节的RAM,起始地址为数据存储器中的300H。
MEMORY
{
PAGE0: ROM: origin=0h,length=1000h
PAGE1: B2: origin=60h,length=20h
B1: origin=200h,length=100h
B0: origin=300h,length=100h
}
MEMORY伪指令的一般语法为:
MEMORY
{
PAGE0:name 1[(attr)]:origin=constant,length=constant
PAGE1:name n[(attr)]: origin="constant",length=constant
}
其中,PAGE:对一个存储空间加以标记,每一个PAGE代表一个完全独立的地址空间。页号n最大可以为255(因为DSP最大寻址可以到64K),取决于目标存储器的配置。通常PAGE0为程序存储器,PAGE1为数据存储器。如果没有规定