DSP

C54x DSP的软件开发环境与工具,开发流程—编译链接

2019-07-13 11:17发布

本文介绍基于C54x的DSP的软件开发环境与编译器,汇编器,链接器的使用,对开发流程也有所涉及。 以下是基于DSP的实时系统开发设计框图 首先根据需求设计规范,确定设计的目标,然后进行算法研究和仿真,定义系统性能指标,根据性能指标选择DSP芯片,之后就是开发和系统集成测试部分,包括软件和硬件部分。在信号处理中需要考虑的是DSP算法和软件 仿真,在非信号处理中,需要考虑具体的应用环境、可靠性、可维护性、功耗、体积、重量、成本等。 1、'C54xx软件开发过程 编译链接 编译器:cl500 -g -k file.c -z file.cmd -q 汇编器:[asm500 file.asm -s -l file.lst] 链接器:[lnk500 file.obj … file.cmd -m file.map -o file.out -e start ] 在CCS集成环境中通过 Build Options 选择各选项 2、汇编语言程序的编写格式及COFF(Common Object File Format)文件的一般概念 (1)汇编源程序组成及格式: [标号][:] 助记符 操作数,操作数 [ ;注释] (2)常用伪指令: 用它控制汇编和链接过程,不占存储空间; (3)COFF文件一般概念: 1. 定义:能被'C54x执行的、由汇编器和链接器创建目标文件格式; 2. 优点:便于模块化管理; 3. 格式:有三种: COFF0、COFF1、 COFF2,每种格式只是标题形式不同,数据部分是相同的;默认格式是COFF2; ② 段(Section)的概念: 定义:在存储器图中占据相邻空间的代码或数据块称为段,是组成目标文件的最小单元; 符号:段都用""开始,用小写字母表示; 段的分类: (ⅰ) 已初始化的段:包括数据、程序代码等 . text .data .sect .asect (ⅱ) 未初始化的段:为未初始化的数据(变量)预留空间 .bss .usect 目标文件中的段与目的存储器间的关系: (4)段的处理: # 汇编器在汇编时,根据汇编伪指令用适当的段将各部分程序代码和数据代码连在一起,构成目标文件; # 链接器将各个段重新定位到目标存储器中; 3、汇编器: .asm 文件 .obj 文件 (1)主要功能: 将汇编源程序汇编成一个可以重新定位的目标文件( .obj 文件); # 按需要生成列表文件( .lst 文件); # 为每个目标代码块设置一个段程序计数器(SPC); # 定义和引用全局,需要时在列表文件后面附加一张交叉引用表; # 汇编条件块; # 支持宏调用; (2) 汇编器对段的处理和列表文件: # 汇编器根据汇编指令,处理和识别各个段,并将相应的段加到已存在的段中,建立单一的段; (3) 汇编命令格式及汇编伪指令 # 命令格式:asm500 [ input file [ object file [listing file] [option] # option 、汇编伪指令功能及分类以及常用汇编伪指令可以参考用户手册 4、链接器 (1)主要功能:根据链接命令或链接命令文件(. cmd 文件),将一个或多个COFF目标文件链接成可执行的输出文件(.out文件)和按需要生成存储器映象文件(.map文件)。 (2)链接器对段的处理: # 把一个或多个COFF目标文件中的各个段作为链接器的输入段,经链接后在一个可执行的COFF输出模块中建立相应的输出段; # 为各个输出段选定相应的存储器地址; # 链接器根据汇编器建立的段,确定这些段存放在目标存储器中的位置称为重定位; (3) 链接命令格式及链接伪指令: 1. 命令格式: lnk500 file1.obj file2.obj –m file.map –o file.out –e start 2. option 3. 链接伪指令: □存储器指令(MEMORY): 定义目标系统存储器配置图,包括存储器的命名、规定它们的起始地址和长度; □段指令(SECTIONS): 告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器的什么位置; (4) 链接命令文件(.cmd文件)的编写: 5、应用C编译器时建立的段 1. 初始化的段 .text- 可执行的代码和常数(PAGE 0); .cinit-初始化的全局和静态变量表(PAGE 0); .const- 字符串常数和初始化的全局和静态变量(PAGE 1); .switch- C中switch语句描述的表格 (PAGE 0); 2. 未初始化的段 .bss- 为全局和静态变量保留的空间(PAGE 1);(在程序开始时,C boot 程序把放在ROM中的.cinit section的数据拷贝到.bss section中 ) .stack-系统堆栈存储器(PAGE 1);(堆栈存储器用作函数的参数传递和分配局部变量) .sysmem- C中动态存储器分配函数保留空间(PAGE 1)(如malloc、calloc等,其块大小由 head 伪指令定义) ﹡.data section 由汇编器建立,用于初始化数据段,C 编译器不用这个段;
Reference:
http://www.zidonghua.com.cn/dir/zhuti_show.asp?zid=9377 http://focus.ti.com.cn/cn/paramsearch/docs/parametricsearch.tsp?family=dsp§ionId=2&tabId=132&familyId=324 http://www.blog.163.com/houh-1984/ 本文介绍基于C54x的DSP的软件开发环境与编译器,汇编器,链接器的使用,对开发流程也有所涉及