1、DSP54.61,1。C54xx软件开发过程,cl500,Text Editor,asm500,lnk500,Sim54xw,C54xEVM,EMU54x,JTAG,C54x 目标板,hex500,ROMProg.,.asm,.obj .lst,.out .map,XDS510,.C,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集成环境中通过 选择各选项 各选项含义见讲义pp.133134,
2、Build Options,DSP54.62,2。汇编语言程序的编写格式及COFF(Common Object File Format)文件的一般概念(1)汇编源程序组成及格式:,标号: 助记符 操作数,操作数 ;注释,用空格键或Tab键隔开,(2)常用伪指令: 用它控制汇编和链接过程,不占存储空间; 见讲义pp.134135 (3)COFF文件一般概念: 定义:能被C54x执行的、由汇编器和链接器创建目标文件格式;,DSP54.63, 优点:便于模块化管理; 格式:有三种: COFF0、COFF1、 COFF2, 每种格式只是标题形式不同, 数据部分是相同的;默认 格式是COFF2;,DSP
3、54.64, 段(Section)的概念: 定义:在存储器图中占据相邻空间的代码或数据块称为段,是组成目标文件的最小单元; 符号:段都用“”开始,用小写字母表示; 段的分类:() 已初始化的段:包括数据、程序代码等. text .data .sect .asect 等() 未初始化的段:为未初始化的数据(变量)预留空间.bss .usect 等,DSP54.65, 目标文件中的段与目的存储器间的关系:,(4)段的处理: 汇编器在汇编时,根据汇编伪指令用适当的段将各部分程序代码和数据代码连在一起,构成目标文件; 链接器将各个段重新定位到目标存储器中;,DSP54.66,3。汇编器: .asm 文
4、件 .obj 文件(1)主要功能: 将汇编源程序汇编成一个可以重新定位的目标文件( .obj 文件); 按需要生成列表文件( .lst 文件); 为每个目标代码块设置一个段程序计数器(SPC); 定义和引用全局,需要时在列表文件后面附加一张交叉引用表; 汇编条件块; 支持宏调用;,DSP54.67,(2) 汇编器对段的处理和列表文件: 汇编器根据汇编指令,处理和识别各个段,并将相应的段加到已存在的段中,建立单一的段; 举例:见讲义pp.136137,.data coeff .word 011h, 022h, 033h.bss buffer, 10 ptr .word 0123h.text ad
5、d: LD 0Fh, A aloop: SUB #1, ABC aloop, AGEQ .data ivals .word 0AAh, 0BBh, 0CCh,var2 .usect “newvars”, 1 Inbuf .usect “newvars”, 7.text mpy: LD 0Ah, T mloop: MPY #0Ah, BBC mloop, BNOV.sect “vectors”.word 011h, 033h,DSP54.68,(3) 汇编命令格式及汇编伪指令 命令格式:asm500 input file object file listing file option optio
6、n 参考教材p.120 表3-3 汇编伪指令功能及分类:见教材p.123 常用汇编伪指令:见讲义pp.134135 4。链接器(1)主要功能:根据链接命令或链接命令文件(. cmd 文件),将一个或多个COFF目标文件链接成可执行的输出文件(.out文件)和按需要生成存储器映象文件(.map文件)。,DSP54.69,DSP54.610,DSP54.611,(3) 链接命令格式及链接伪指令: 命令格式:lnk500 file1.obj file2.obj m file.map o file.out e start option 参考教材p.126 表3-5 链接伪指令:存储器指令(MEMORY
7、):定义目标系统存储器配置图,包括存储器的命名、规定它们的起始地址和长度;段指令(SECTIONS):告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器的什么位置;,DSP54.612,(4) 链接命令文件(.cmd文件)的编写:(见附页 5402DSK_cmd. doc或讲义p.139)5。应用C编译器时建立的段(参考讲义p.214, dsp_c2.cmd) 初始化的段 .text 可执行的代码和常数(PAGE 0); .cinit初始化的全局和静态变量表(PAGE 0); .const 字符串常数和初始化的全局和静态变量(PAGE 1); .switch C中switch语句描述的表格 (PAGE 0);,DSP5 4.613, 未初始化的段 .bss 为全局和静态变量保留的空间(PAGE 1);(在程序开始时,C boot 程序把放在ROM中的.cinit section的数据拷贝到.bss section中 ) .stack系统堆栈存储器(PAGE 1);(堆栈存储器用作函数的参数传递和分配局部变量) .sysmem 为C中动态存储器分配函数保留空间(PAGE 1)(如malloc、calloc等,其块大小由 head 伪指令定义).data section 由汇编器建立,用于初始化数据段,C编译器不用这个段;,DSP54.614,