《《cx软件开发》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《cx软件开发》PPT课件.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、TMS320C54x软件设计软件设计2022/12/272022/12/271 1DSPDSP原理及应用原理及应用n n1、DSP系统软件设计的一般过程n n2、DSP C语言的特点n n3、C54x的存储器结构及CMD链接命令文件n n4、DSP C语言的存储结构n n5、DSP C语言的中断编程n n6、C54X的混合编程n n7、DSP C语言的结构及组成内容提要2022/12/272022/12/272 2DSPDSP原理及应用原理及应用1 1 TMS320C54xTMS320C54x软件设计的一般过程软件设计的一般过程 C54xC54xC54xC54x的应用软件开发主要完成以下工作:
2、的应用软件开发主要完成以下工作:的应用软件开发主要完成以下工作:的应用软件开发主要完成以下工作:(1)(1)(1)(1)选择编程语言编写源程序选择编程语言编写源程序选择编程语言编写源程序选择编程语言编写源程序 C54xC54xC54xC54x提供提供提供提供2 2 2 2种编程语言,即汇编语言和种编程语言,即汇编语言和种编程语言,即汇编语言和种编程语言,即汇编语言和C/C+C/C+C/C+C/C+语言。语言。语言。语言。对于完成一般功能的代码,这两种语言都可使用,但对对于完成一般功能的代码,这两种语言都可使用,但对对于完成一般功能的代码,这两种语言都可使用,但对对于完成一般功能的代码,这两种语
3、言都可使用,但对于一些运算量很大的关键代码,最好采用汇编语言来完成,于一些运算量很大的关键代码,最好采用汇编语言来完成,于一些运算量很大的关键代码,最好采用汇编语言来完成,于一些运算量很大的关键代码,最好采用汇编语言来完成,以提高程序的运算效率。以提高程序的运算效率。以提高程序的运算效率。以提高程序的运算效率。目前目前50005000系列系列DSP CDSP C语言优化编译的结果可以达到手工编语言优化编译的结果可以达到手工编写的汇编语言效率的写的汇编语言效率的60%60%以上。以上。2022/12/272022/12/273 3DSPDSP原理及应用原理及应用 开发软件开发软件开发软件开发软件
4、+仿真器仿真器仿真器仿真器+目标系统目标系统目标系统目标系统 开发软件:开发软件:开发软件:开发软件:C54xC54xC54xC54x采用目前流行的集成开发环境采用目前流行的集成开发环境采用目前流行的集成开发环境采用目前流行的集成开发环境CCS:CCS:CCS:CCS:版本主要有:版本主要有:版本主要有:版本主要有:CCS 2.2 for 5000CCS 2.2 for 5000CCS 2.2 for 5000CCS 2.2 for 5000 CCS 3.1 CCS 3.1 CCS 3.1 CCS 3.1 CCS 3.3 CCS 3.3 CCS 3.3 CCS 3.3 仿真器:仿真器:仿真器:
5、仿真器:软件仿真器软件仿真器软件仿真器软件仿真器 simulatorsimulatorsimulatorsimulator,是一种模拟是一种模拟DSPDSP芯片各种功能并在非实时条芯片各种功能并在非实时条 件下进行软件调试的调试工具,它不需目标硬件支持,只需在计算机上件下进行软件调试的调试工具,它不需目标硬件支持,只需在计算机上运行。运行。硬件仿真器硬件仿真器硬件仿真器硬件仿真器 emulator,emulator,emulator,emulator,目前流行的有:目前流行的有:目前流行的有:目前流行的有:TDS 560,XDS 510,XDS 100TDS 560,XDS 510,XDS 1
6、00TDS 560,XDS 510,XDS 100TDS 560,XDS 510,XDS 100 目标系统:目标系统:目标系统:目标系统:DSK(DSP Starter Kit),EVM,DSK(DSP Starter Kit),EVM,DSK(DSP Starter Kit),EVM,DSK(DSP Starter Kit),EVM,各种公司的学习开发板,自己各种公司的学习开发板,自己各种公司的学习开发板,自己各种公司的学习开发板,自己设计的系统设计的系统设计的系统设计的系统 国内较知名的公司:北京国内较知名的公司:北京“闻亭闻亭”、“合众达合众达”等等(2)(2)选择开发工具和开发环境选择
7、开发工具和开发环境选择开发工具和开发环境选择开发工具和开发环境2022/12/272022/12/274 4DSPDSP原理及应用原理及应用(3)(3)(3)(3)编写源代码文件编写源代码文件编写源代码文件编写源代码文件 源代码包括源代码包括:C:C源程序源程序,汇编源程序汇编源程序,头文件头文件,CMD,CMD链接命令文件。链接命令文件。C C源文件源文件C C编译器编译器汇编汇编源文件源文件汇编器汇编器汇编汇编源文件源文件COFFCOFF目标目标文件文件链接器链接器可执行的可执行的COFFCOFF文件文件宏宏源文件源文件存档存档器器宏库宏库存档器存档器目标目标文件库文件库建库工具建库工具运
8、行时运行时支持库支持库EPROMEPROM编程器编程器交叉引用交叉引用列表器列表器调试工具调试工具TMS320C54xTMS320C54x绝对地址绝对地址列表器列表器HEXHEX代码代码转换工具转换工具2022/12/272022/12/275 5DSPDSP原理及应用原理及应用(4 4 4 4)DSP DSP 程序的调试程序的调试程序的调试程序的调试将目标代码下载到将目标代码下载到DSPDSP目标系统中去;目标系统中去;软件仿真和硬件仿真相结合;软件仿真和硬件仿真相结合;固化程序。固化程序。2022/12/272022/12/276 6DSPDSP原理及应用原理及应用相同点:1)结构化程序设
9、计的思想,以函数为单位2)大部分变量、常量、结构体、枚举、联合体、指针的定义3)局部变量、全局变量、静态变量、动态变量4)宏定义、宏展开、宏调用5)算术、关系、逻辑、位操作运算符以及运算符之间的优先级和结合性6)函数的组织:顺序结构、分支结构、循环结构2 C54x C语言2022/12/272022/12/277 7DSPDSP原理及应用原理及应用不同点:1、所处理数据的性质不同;程序结构不同PC:采集好的,数据量大;DSP:实时采集,量小2、数据的输入输出设备不同3、“死循环”的对待上不同。4、语法结构及细节上的不同 2022/12/272022/12/278 8DSPDSP原理及应用原理及
10、应用2.1DSP C语言的数据结构 1、C54X的C语言数据类型及其表示范围 可以在 type.h中定义 typedef float f32;typedef long s32;typedef int s16;typedef unsigned char u8;typedef unsigned int u16;typedef unsigned long u32;2022/12/272022/12/279 9DSPDSP原理及应用原理及应用数据数据类类型型长长 度度(位位)意意义义最小最小值值最大最大值值signed charsigned char1616ASCIIASCII-32768-32768
11、3276732767unsunsigned charigned char1616ASCIIASCII0 06553565535signed shortsigned short1616二二进进制制补码补码-32768-327683276732767unsigned shortunsigned short1616二二进进制制0 06553565535signed intsigned int1616二二进进制制补码补码-32768-327683276732767unsigned intunsigned int1616二二进进制制0 06553565535signed longsigned long3
12、232二二进进制制补码补码-2147483648-214748364821474836472147483647unsigned longunsigned long3232二二进进制制0 042949672954294967295enumenum1616二二进进制制补码补码-32768-327683276732767floatfloat3232IEEEE 32-bitIEEEE 32-bit1.175494e-381.175494e-383.40282346e+383.40282346e+38doubledouble3232IEEEE 32-bitIEEEE 32-bit1.175494e-38
13、1.175494e-383.40282346e+383.40282346e+38long doublelong double3232IEEEE 32-bitIEEEE 32-bit1.175494e-381.175494e-383.40282346e+383.40282346e+38pointer(pointer(指指针针)1616二二进进制制0 00 xFFFF0 xFFFF2022/12/272022/12/271010DSPDSP原理及应用原理及应用2、C语言中常量和变量的定义1 1)C C语言常量的定义语言常量的定义define:#define define:#define 符号常量名
14、符号常量名 字符串字符串#define TURE 1#define TURE 1 不占用存储空间不占用存储空间const:const:用来定义整型、字符、字符串用来定义整型、字符、字符串 const int port1=0 x0;const int port1=0 x0;int*const p=&x;/const int*const p=&x;/const的位置的位置 const int*q=&x;const int*q=&x;2 2)C C语言中变量的定义:与语言中变量的定义:与ANSI CANSI C一致一致3)3)寄存器变量:一般谨慎使用寄存器变量:一般谨慎使用 2022/12/2720
15、22/12/271111DSPDSP原理及应用原理及应用3、MMR的定义和访问C:tic5400dsk5402include目录下 regs.h和regs54x.h定义了片内寄存器及其所包含的控制和状态比特,这些定义采用宏替换定义#define,regs54x.h是regs.h的扩展和补充。1)先定义MMR的地址,再使用指针方式访问 统一定义法:把同种类型的寄存器统一定义,使用宏参数进行区分。例:McBSP串口接收寄存器的定义:#define DRR2_ADDR(port)(port?0 x40:0 x20)2022/12/272022/12/271212DSPDSP原理及应用原理及应用单独定
16、义法:使用不同的寄存器名称分别定义其地址。单独定义法:使用不同的寄存器名称分别定义其地址。#define DRR20_ADDR 0 x20/#define DRR20_ADDR 0 x20/寄存器的寄存器的地址宏定义地址宏定义#define DRR21_ADDR 0 x40#define DRR21_ADDR 0 x40 访问访问:使用指针方式使用指针方式*(volatilevolatile unsigned int*)DXR1_ADDR(port)=value unsigned int*)DXR1_ADDR(port)=valueVari=Vari=*(volatilevolatile un
17、signed int*)DRR1_ADDR(port)unsigned int*)DRR1_ADDR(port)地址变量:地址变量:指定了具体地址值的指针变量,一般要用指定了具体地址值的指针变量,一般要用volatilevolatile关键字说明,只要定义好了,之后的读写就与普通关键字说明,只要定义好了,之后的读写就与普通指针一样。指针一样。unsigned int*ctrl;unsigned int*ctrl;改为改为 volatile unsigned int*ctrl;volatile unsigned int*ctrl;while(*ctrl!=0 xff);while(*ctrl!=
18、0 xff);特别当该变量在中断函数中被赋值,而在主函数的循环中被用到特别当该变量在中断函数中被赋值,而在主函数的循环中被用到时,必须采用时,必须采用volatilevolatile声明该变量。声明该变量。2022/12/272022/12/271313DSPDSP原理及应用原理及应用2)直接定义 MMR的指针访问方式#define DRR20 *(volatile unsigned int*)0 x20/#define DRR20 *(volatile unsigned int*)0 x20/寄存器寄存器指针方式的指针方式的宏定义宏定义 variable=DRR20;variable=DRR
19、20;注意:一般习惯使用注意:一般习惯使用“寄存器名寄存器名+_+ADDR”+_+ADDR”表示寄存器的表示寄存器的地地址宏定义址宏定义,而使用寄存器名表示寄存器,而使用寄存器名表示寄存器指针方式的宏定义指针方式的宏定义。注意区分,并在实际编程遵循这一习惯。注意区分,并在实际编程遵循这一习惯。3 3)使用宏定义函数进行)使用宏定义函数进行MMRMMR的访问的访问 REG_READ(addr);REG_READ(addr);REG_READ(DRR1_ADDR(port);REG_READ(DRR1_ADDR(port);#define REG_READ(addr)content of(addr
20、)#define REG_READ(addr)content of(addr)#define content of(addr)#define content of(addr)*(volatile unsigned int*)(addr)(volatile unsigned int*)(addr)2022/12/272022/12/271414DSPDSP原理及应用原理及应用4、DSP数据空间的访问 访问特定地址的数据空间,需要使用数据指针。访问特定地址的数据空间,需要使用数据指针。int*sine_table_pointerint*sine_table_pointer=(int*)=(int*
21、)0 xfe00;0 xfe00;使用指针作为全局变量,局部变量,函数形参,函使用指针作为全局变量,局部变量,函数形参,函数返回值的用法举例:数返回值的用法举例:int*glob_ptr;int*glob_ptr;g()g()int x=1;int x=1;int*p=f(&x);int*p=f(&x);*p=5;*glob_ptr=10;*p=5;*glob_ptr=10;h(x);h(x);int*f(int*arg)int*f(int*arg)glob_ptr=arg;return arg;glob_ptr=arg;return arg;2022/12/272022/12/271515D
22、SPDSP原理及应用原理及应用1)1)使用使用ioportioport关键字来访问关键字来访问I/OI/O空间空间 ioport unsigned int portioport unsigned int porthexnumhexnum;/short,char;/short,char 当访问当访问I/OI/O空间空间200H200H地址:地址:ioport unsigned int port200;ioport unsigned int port200;unsigned int test;unsigned int test;test=port200;test=port200;port200=t
23、est;port200=test;5、DSP I/O空间的访问2022/12/272022/12/271616DSPDSP原理及应用原理及应用(2)2)借助库函数借助库函数portRead(port)portRead(port)和和portWrite(port)portWrite(port)对一段连续对一段连续I/OI/O端口进行读端口进行读/写写 portio.hportio.h中声明了两个函数中声明了两个函数:s16 portRead(u16 port);s16 portRead(u16 port);portWrite(u16 port,s16 value);portWrite(u16 p
24、ort,s16 value);函数在函数在dsk5402.libdsk5402.lib中,在中,在c:tic5400dsk5402includec:tic5400dsk5402lib2022/12/272022/12/271717DSPDSP原理及应用原理及应用2.2 CCS2.2 CCS中与中与C54XXC54XX相关的库函数和头文件相关的库函数和头文件1 1、运行时支持库、运行时支持库rts.librts.lib及其头文件及其头文件 c:tic5400cgtoolslibc:tic5400cgtoolslib c:tic5400cgtoolsincludec:tic5400cgtoolsi
25、nclude 包含了标准包含了标准C/C+C/C+运行时的支持函数、浮运行时的支持函数、浮点子程序、点子程序、系统启动子程序系统启动子程序_c_int00_c_int00 源程序包含在源程序包含在rts.srcrts.src中,目标库可由其中,目标库可由其生成。生成。2022/12/272022/12/271818DSPDSP原理及应用原理及应用C_int00函数的作用在运行C程序之前,必须创建C运行时的环境,这个函数放置在复位中断入口。1)为系统堆栈定义一个名为.stack的段,并建立初始化堆栈和堆栈指针;2)将.cinit段中的数据表拷贝到.bss块,对全局和静态变量进行初始化;3)设置D
26、P,使其指向.bss中的全局存储页;4)调用main函数,开始运行C程序。2022/12/272022/12/271919DSPDSP原理及应用原理及应用位于位于c:tic5400dsk5402lib,c:tic5400dsk5402include下,是硬下,是硬件专用头文件。件专用头文件。这些头文件分为两大类这些头文件分为两大类:1)对对DSP本身及外部接口电路所拥有的硬件资源进行描述和定义本身及外部接口电路所拥有的硬件资源进行描述和定义,例如例如regs.h,regs54xx.h2)对设置和使用这些资源的接口函数进行定义和声明对设置和使用这些资源的接口函数进行定义和声明,dsk5402.l
27、ibdsk5402.lib 是一个主要的函数库是一个主要的函数库,内部使用了内部使用了drv5402.libdrv5402.lib例如例如例如例如:board.h:board.h 板的初始化函数、主机中断函数、板的初始化函数、主机中断函数、板的初始化函数、主机中断函数、板的初始化函数、主机中断函数、DMADMA数据传输数据传输数据传输数据传输函数、函数、函数、函数、CPUCPU工作频率设置函数等等。工作频率设置函数等等。工作频率设置函数等等。工作频率设置函数等等。mcbsp.h mcbsp.h 与多通道缓冲串口有关的宏函数。与多通道缓冲串口有关的宏函数。与多通道缓冲串口有关的宏函数。与多通道缓
28、冲串口有关的宏函数。codec.h codec.h 与与与与C5402 dskC5402 dsk板上的编译码器板上的编译码器板上的编译码器板上的编译码器TLC320AD50TLC320AD50相关的函数。相关的函数。相关的函数。相关的函数。2 2、板卡库、板卡库drv5402.libdrv5402.lib、dsk5402.lib dsk5402.lib 及其头文件及其头文件 2022/12/272022/12/272020DSPDSP原理及应用原理及应用3、DSPLIB通用信号处理程序函数及其头文件 DSPLIBDSPLIB是一个为是一个为C C语言程序员提供的经过优化的语言程序员提供的经过优
29、化的DSPDSP函数函数库。库。包含包含5050个通用信号处理函数。个通用信号处理函数。在在c:tic5400dsplibincludec:tic5400dsplibinclude下下 dsplib.h math.h MISC.h stdio.h tms320.hdsplib.h math.h MISC.h stdio.h tms320.h 这些文件与这些文件与54xdsp.lib54xdsp.lib相关联,在目录相关联,在目录54x_src54x_src下有源代码。下有源代码。在在dsplib.hdsplib.h中,给出了中,给出了8 8个类别的函数原型:个类别的函数原型:1 1、FFTFF
30、T算法;算法;2 2、数字滤波和卷积算法;、数字滤波和卷积算法;3 3、自适应滤波;、自适应滤波;4 4、相关算法;、相关算法;5 5、数学函数;、数学函数;6 6、三角函数;、三角函数;7 7、常用函数;、常用函数;8 8、矩阵运算。、矩阵运算。必须使用必须使用#include,#include,并把目标库并把目标库54xdsp.lib54xdsp.lib添加到添加到工程文件中工程文件中2022/12/272022/12/272121DSPDSP原理及应用原理及应用3 C54x DSP存储器结构(分段结构管理)1 1)段)段)段)段是存储器中占据连续空间的代码或数据块。是存储器中占据连续空间
31、的代码或数据块。是存储器中占据连续空间的代码或数据块。是存储器中占据连续空间的代码或数据块。汇编器对段的处理是通过段伪指令来区别各个段的汇编器对段的处理是通过段伪指令来区别各个段的汇编器对段的处理是通过段伪指令来区别各个段的汇编器对段的处理是通过段伪指令来区别各个段的,并将并将并将并将段名相同的语句汇编在一起。段名相同的语句汇编在一起。段名相同的语句汇编在一起。段名相同的语句汇编在一起。汇编器有汇编器有汇编器有汇编器有5 5条伪指令可识别汇编语言程序的各个部分:条伪指令可识别汇编语言程序的各个部分:条伪指令可识别汇编语言程序的各个部分:条伪指令可识别汇编语言程序的各个部分:.bss 为未初始化
32、的变量保留空间;为未初始化的变量保留空间;.data 通常包含了初始化的数据;通常包含了初始化的数据;.sect 定义已初始化的命名段,其后的数据存入该段;定义已初始化的命名段,其后的数据存入该段;.text 该段包含了可执行的代码;该段包含了可执行的代码;.usect 在一个未初始化的有命名的段中为变量保留空间。在一个未初始化的有命名的段中为变量保留空间。2022/12/272022/12/272222DSPDSP原理及应用原理及应用2 2)常用的伪指令)常用的伪指令 P73 P73 表表4-24-2.title 为汇编器提供一个打印在每一页顶部的标题为汇编器提供一个打印在每一页顶部的标题.
33、word 把一个或多个把一个或多个16位数存放到当前段的连续字中位数存放到当前段的连续字中.word为带符号整型量。为带符号整型量。.def 确认一个在当前模块中定义的且能被其他模块使用的符号。确认一个在当前模块中定义的且能被其他模块使用的符号。.ref 确认一个在当前模块中使用但在其他段中定确认一个在当前模块中使用但在其他段中定 义的符号。义的符号。.set/.equ 把一个常数值等效成一个符号。把一个常数值等效成一个符号。.end 结束汇编。结束汇编。.mmregs 定义存储器映射寄存器的替代符号。定义存储器映射寄存器的替代符号。.copy/.include 伪指令告诉汇编器开始从其他文件
34、中读源语句。伪指令告诉汇编器开始从其他文件中读源语句。2022/12/272022/12/272323DSPDSP原理及应用原理及应用*example.asm y=a1x1+a2x2+a3x3+a4x4 *.title example.asm;用双引号括起的源程序名 .mmregs;定义存储器映射寄存器的替代符号 STACK.usectSTACK,10H ;allocate space for stack .bss a,4 ;allocate 9 word for variants .bss x,4 .bss y,1 .def start;在此模块中定义,可为别的模块引用 .datatable
35、:.word 1,2,3,4 ;data follows.word 8,6,4,2 .text ;紧跟其后的是汇编语言程序正文 start:STM#0,SWWSR ;adds no wait states STM#STACK+10H,SP ;set stack pointer STM#a,AR1 ;AR1 point a RPT#7 ;move 8 values MVPD table,*AR1+;from program memory ;into data memory CALL SUM ;call SUM subroutineend:B endSUM:STM#a,AR3 ;The subro
36、utine implement STM#x,AR4 ;multiply-accumulate RPTZ A,#3 MAC *AR3+,*AR4+,A STL A,y RET .end*Reset vectors for example.asm *.title vectors.asm .ref start .sect .vectors B start .end2022/12/272022/12/272424DSPDSP原理及应用原理及应用3 3)段的处理段的处理段的处理段的处理链接器在处理段的时候,有如下链接器在处理段的时候,有如下2个主要任务:个主要任务:n将由汇编器产生的的一个或多个将由汇编
37、器产生的的一个或多个.obj文件链接成一个可执行文件链接成一个可执行的的.out文件;文件;n 重新定位,将输出的段分配到相应的存储器空间。重新定位,将输出的段分配到相应的存储器空间。链接器有链接器有2条命令支持上述任务:条命令支持上述任务:(1)MEMORY命令。定义目标系统的存储器配置图,包括对命令。定义目标系统的存储器配置图,包括对存储器各部分命名,以及规定它们的起始地址和长度;存储器各部分命名,以及规定它们的起始地址和长度;(2)SECTIONS命令。告诉链接器如何将输入段组合成输出段,命令。告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置以及将输出段放在存储器中
38、的什么位置。2022/12/272022/12/272525DSPDSP原理及应用原理及应用1.MEMORY命令命令 作用:定义系统中所包含的各种形式的存储器,以及它们占据的地址范围。作用:定义系统中所包含的各种形式的存储器,以及它们占据的地址范围。句法:句法:MEMORYPAGE0:name 1(attr):orign=constant,length=constant;PAGE1:name nattr:orign=constant,length=constant;PAGE对一个存储空间加以标记。对一个存储空间加以标记。PAGE 0程序存储器,程序存储器,PAGE 1定为数据存定为数据存储器。
39、储器。name对一个存储区间取名。对一个存储区间取名。origin存储区的起始地址。键入存储区的起始地址。键入origin、org或或o都可都可 length规定存储区的长度。键入规定存储区的长度。键入length、len或或l都可以都可以attr这是一个任选项,为命名区规定这是一个任选项,为命名区规定14个属性。个属性。2022/12/272022/12/272626DSPDSP原理及应用原理及应用MEMORYPAGE 0:ROM:origin=0c00h,length=1000h;PAGE 1:SCRATCH:origin=60h,length=20h;ONCHIP:origin=80h,
40、length=200h;上述上述MEMORY命令所定义的系统的存储器配置如下:命令所定义的系统的存储器配置如下:PAGE 0为程序存储器,名为程序存储器,名ROM,起始地址,起始地址0C00H,长度,长度4K字。字。PAGE 1为数据存储器,名为数据存储器,名SCRATCH,起始地址,起始地址60H,长,长32字。字。PAGE 1为数据存储器,名为数据存储器,名ONCHIP,起始地址,起始地址80H,长度,长度512字。字。2022/12/272022/12/272727DSPDSP原理及应用原理及应用2.SECTIONS命令命令作用:说明如何将输入段组合成输出段;作用:说明如何将输入段组合成
41、输出段;规定输出段在存储器中的存放位置;规定输出段在存储器中的存放位置;并允许重新命名输出段。并允许重新命名输出段。句法:句法:SECTIONSname:property,property,property,name:property,property,property,name:property,property,property,Name段名,每一个输出段的说明都从段名开始。段名,每一个输出段的说明都从段名开始。Property性能参数,段名后面是一行说明段的内容和如何给性能参数,段名后面是一行说明段的内容和如何给 段分配存储单元的性能参数。段分配存储单元的性能参数。2022/12/272
42、022/12/272828DSPDSP原理及应用原理及应用SECTIONS .text:ROM PAGE 0 .bss:SCRATCH PAGE 1 .vectors:ONCHIP PAGE 12022/12/272022/12/272929DSPDSP原理及应用原理及应用编写链接命令文件编写链接命令文件example.cmd(三个部分组成(三个部分组成)编写的命令文件用来链接两个目标文件编写的命令文件用来链接两个目标文件(输入文件输入文件)生成一个映像文件生成一个映像文件example.map和一个可执行的输和一个可执行的输出文件出文件example.out。标号标号start是程序的入口。
43、是程序的入口。假设目标存储器的配置如下:假设目标存储器的配置如下:程序存储器程序存储器 EPROM E000hFFFFh(片外片外)数据存储器数据存储器 SPRAM 0060h007Fh(片内片内)DARAM 0080h017Fh(片内片内)2022/12/272022/12/273030DSPDSP原理及应用原理及应用链接器命令文件example.cmd。vectors.obj /*输入输出文件*/example.obj-o example.out-m example.map-e startMEMORY /*MEMORY*/PAGE 0:EPROM :org=0E000H len=0100H
44、 VECS:org=0FF80H len=0004H PAGE 1:SPRAM :org=0060H len=0020H DARAM :org=0080H len=0100HSECTIONS /*SECTION*/.text:EPROM PAGE 0 .data:EPROM PAGE 0 .bss :SPRAM PAGE 1 STACK:DARAM PAGE 1 .vectors:VECS PAGE 0 2022/12/272022/12/273131DSPDSP原理及应用原理及应用 程序存储器配置了一个空间程序存储器配置了一个空间程序存储器配置了一个空间程序存储器配置了一个空间VECSVEC
45、SVECSVECS,它的起始地址它的起始地址它的起始地址它的起始地址0 0 0 0ff80hff80hff80hff80h,长度为长度为长度为长度为04040404h h h h,并将复位向量段并将复位向量段并将复位向量段并将复位向量段.vectorsvectorsvectorsvectors放在放在放在放在VECSVECSVECSVECS空间。空间。空间。空间。当当当当 C54xC54xC54xC54x复位后,首先进入复位后,首先进入复位后,首先进入复位后,首先进入0 0 0 0ff80hff80hff80hff80h,再从再从再从再从0 0 0 0ff80hff80hff80hff80h复
46、位向量处跳转到主程序。复位向量处跳转到主程序。复位向量处跳转到主程序。复位向量处跳转到主程序。在命令文件中,有一条命令在命令文件中,有一条命令在命令文件中,有一条命令在命令文件中,有一条命令-e starte starte starte start,是软件仿是软件仿是软件仿是软件仿真器的入口地址命令,目的是在软件仿真时,屏幕从真器的入口地址命令,目的是在软件仿真时,屏幕从真器的入口地址命令,目的是在软件仿真时,屏幕从真器的入口地址命令,目的是在软件仿真时,屏幕从startstartstartstart语句标号处显示程序清单,且语句标号处显示程序清单,且语句标号处显示程序清单,且语句标号处显示程
47、序清单,且PCPCPCPC也指向也指向也指向也指向startstartstartstart位位位位置置置置(0(0(0(0e000h)e000h)e000h)e000h)。2022/12/272022/12/273232DSPDSP原理及应用原理及应用 经过链接器链接后,生成一个可执行的输出文件经过链接器链接后,生成一个可执行的输出文件经过链接器链接后,生成一个可执行的输出文件经过链接器链接后,生成一个可执行的输出文件exampleexampleexampleexample.outoutoutout和映像文件和映像文件和映像文件和映像文件example.mapexample.mapexampl
48、e.mapexample.map。映像文件清单:映像文件清单:映像文件清单:映像文件清单:OUTPUT FILE NAME:OUTPUT FILE NAME:OUTPUT FILE NAME:OUTPUT FILE NAME:ENTRY POINT SYMBOL:ENTRY POINT SYMBOL:ENTRY POINT SYMBOL:ENTRY POINT SYMBOL:“startstartstartstart”address:0000e000 address:0000e000 address:0000e000 address:0000e000 MEMORY CONFIGURATION
49、MEMORY CONFIGURATION MEMORY CONFIGURATION MEMORY CONFIGURATION name origin length attributes name origin length attributes name origin length attributes name origin length attributes fillfillfillfill PAGE PAGE PAGE PAGE 0:EPROM 0000e000 000000100 RWIX0:EPROM 0000e000 000000100 RWIX0:EPROM 0000e000 0
50、00000100 RWIX0:EPROM 0000e000 000000100 RWIX VECS 0000FF80 000000004 RWIXVECS 0000FF80 000000004 RWIXVECS 0000FF80 000000004 RWIXVECS 0000FF80 000000004 RWIX PAGE PAGE PAGE PAGE 1:SPRAM 00000060 000000020 RWIX1:SPRAM 00000060 000000020 RWIX1:SPRAM 00000060 000000020 RWIX1:SPRAM 00000060 000000020 RW