当初说要在博客上有技术讨论在其中,但是不知什么原因迟迟没有添加,今天就开先例吧,谈谈DSP芯片的cmd文件的考虑吧.因为本人觉得在DSP变成中,cmd文件是很重要的,它是工程链接命令文件,是联系软件和硬件的文件,主要是在存储器映像中分配块.
TI公司的汇编器和链接器所创建的目标文件采用公共目标文件格式,也就是常见的COFF格式.COFF格式鼓励程序员在编程时机遇代码块和数据块的概念,而不是一条条命令或者一个个数据,这样可以增加程序的可读性和移植性.这种块叫section.
目标文件中的最小单位为块,一个块就是最终在存储器映像中中占据连续的空间的一块代码或数据.一般,COFF文件包含三个默认块:
.text 块 包含可执行代码
.data 块 包含以初始化的数据
.bss 块 包含未初始化的数据保留空间
链接器对块的处理具有两个功能.首先,它将COFF目标文件中的块用来建立程序块或者数据块,她将输入块组合起来,以建立可执行的COFF输出模块;其次,链接器为输出块选择存储器地址.链接器提供两个命令来完成上述功能:MEMORY和SECTION.
MEMORY命令定义目标系统的存储器,程序员可定义每一块存储器,指定起始地址和长度.
SECTION命令告诉链接器如何组合输入块以及在存储器何处存放输出块.若不用这两个命令,则链接器采用默认的分配算法;若用的话则一般须在链接器命令文件.cmd
DSP硬件系统中可能包含很多类型的存储器,想把某一跨二分亿年磅亿毫到一个特定的存储器,就不能用默认分配方法.
.cmd文件格式如下:
MEMORY
{
PAGE 0: PROG: origin = 2000h, length = 2000h
PAGE 1: DATA: origin = 0c00h, length = 100h
PAGE 2: DATA: origin = 0d00h, length = 200h
PAGE 3: DATA: origin = 0f00h, length = 100h
}
SECTIONS
{
.text > PROG PAGE 0
.bss > DATA PAGE 1
.data > DATA PAGE 2
}
主要难点在如何合理安排存储空间,如何设计合适的空间大小,所生成的.out文件必须完全能装进所在空间内,vectors块分配至VECS中,.text块分配到ROM中,.data块分配至ROM 中,.bss块分配至RAM中,等.