DSP系统的软件程序设计ppt课件.ppt

上传人:小飞机 文档编号:1376020 上传时间:2022-11-16 格式:PPT 页数:34 大小:297.05KB
返回 下载 相关 举报
DSP系统的软件程序设计ppt课件.ppt_第1页
第1页 / 共34页
DSP系统的软件程序设计ppt课件.ppt_第2页
第2页 / 共34页
DSP系统的软件程序设计ppt课件.ppt_第3页
第3页 / 共34页
DSP系统的软件程序设计ppt课件.ppt_第4页
第4页 / 共34页
DSP系统的软件程序设计ppt课件.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《DSP系统的软件程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《DSP系统的软件程序设计ppt课件.ppt(34页珍藏版)》请在三一办公上搜索。

1、第5章 DSP系统的软件程序设计(续),北京交通大学 电工电子教学基地,信号与系统,工程架构:以Blink.pjt为例(续),主程序:blink.c除了主程序blink.c外,工程还包含:头文件:board.h、type.h连接命令文件:5402.cmd库文件:dsk5402.lib、drv5402.lib和rts.lib,(其中rts.lib含在编译选择的linker下include library (-l) ),详见:TMS320C54x Optimizing C/C+ CompilerUsers Guide , SPRU103G.pdf,TMS320C54x Assembly Langu

2、age Tools Users Guide , SPRU102F.pdf,DSP代码开发流图,5.5 连接器linker使用,TMS320C54x的连接器(lnk500.exe)功能: 根据连接命令文件(.cmd文件),将一个或多个COFF目标(.obj)文件连接起来,生成可执行的输出文件(.out文件)和存储器映射文件(.map文件)。,连接器linker使用(续),将多个目标文件合并起来,同时完成下面的工作:将各段配置到目标系统的存储器;对各个符号和段进行重新定位,并给它们指定一个最终的地址;解决输入文件之间未定义的外部引用。,连接器linker使用(续),连接器提供命令语言,用来控制存储

3、器结构、输出段的定义以及将变量与符号地址建立联系,通过定义和产生存储器模型来构成系统存储器。 该语言支持表达式的赋值和计算,并且提供两个伪指令:MEMORY和SECTIONS,用于编写命令文件。,1.连接器linker的调用,TMS320C54x的连接器(连接程序)名为lnk500.exe。连接器调用命令格式为: lnk500 filename1 filenamen - options其中filename为文件名,可以是目标文件、连接命令文件或文件库。,1.连接器linker的调用(续),Lnk500 filename1 filenamen - options有3中方法调用连接器:在命令中指定

4、选项和文件名。如: lnk500 file1.obj file2.obj o link.out 将file1.obj和file2.obj目标文件,连接生成link.out文件(2) 只键入lnk500,按提示输入。,1.连接器linker的调用(续),有3中方法调用连接器:(3) 将文件名和选项写成命令文件的形式,命令文件的扩展名为.cmd。假设命令文件linker.cmd内容包含:则可以从命令行调用连接器:lnk500 linker.cmd,-o link.outfile1.objfile2.obj,2.连接器linker的选项,连接器lnk500常用选项:-a 生成一个绝对地址的、可执行的

5、输出模块。-c 使用由TMS320C54x C/C+编译器的ROM自动初始化模型所定义的连接约定。-help,-? 显示所有可以利用的连接命令行选项。-heap size 为 C语言的动态存储器分配设置堆栈大小,以字为单位。并且定义指定的堆栈大小的全局符号,size的缺省值为1千字。-h 使用所有的全局符号成为静态变量,2.连接器linker的选项(续),连接器lnk500常用选项:-l filename 命令一个文档库文件为连接器的输入文件-m filename 生成一个.map存储器映射文件。-o filename 对可执行输出模块命名。缺省,则生成的 文件名为a.out-stack si

6、ze 设置系统堆栈,大小以字为单位,并定义 指定堆栈大小的全局符号。缺省size为1千字。-vn 指定产生的COFF文件的格式n,n=0,1或2。缺省值为COFF2。,5.6 连接命令文件(.cmd)的编写方法,连接命令文件提供两个重要的连接命令伪指令: MEMORY和SECTIONS,用来将输出程序模块与实际的用户目标系统相联系。.,MEMORY伪指令一般和SECTIONS伪指令一起使用,控制输出段的分配。在MEMORY伪指令定义目标存储器的模型后,就可以使用段伪指令SECTIONS将输出段分配到具体指定名称或属性的存储器中。,cmd文件编写时参照DSK的存储器地址图,1.cmd文件的关键字

7、,连接器保留的关键字(自定义段时避免使用这些 MEMORY SECTIONS 关键字)align ALIGN attr ATTR LENGTH length len lORIGIN origin org oPAGE page RUN run Copy fill FILL type TYPE ,详见:TMS320C54x Assembly Language Tools Users Guide , SPRU102F.pdf,2.cmd文件的常数,命令文件中的常数:常数可用两种语法方式指定:(1)在汇编语言中用十进制、八进制或十六进制方式(2)在C语言中用整型方式,常数语法指定方式,3.cmd文件的

8、注释,命令文件中的注释采用C的方式,但 .cmd不支持/,只支持/* */,.cmd文件基本格式,MEMORY SECTIONS ,4.MEMORY伪指令及其使用,连接器确定输出段应分配到存储器的什么地方,必须要有一个目标存储器的模型来完成该项任务。MEMORY伪指令就是用来指定存储器的模型。 TMS320C54x不同的存储空间可以占有相同的地址去区间。MEMORY利用PAGE(页面)选项来分开构成这些地址空间。 在默认的方式下,PAGE0表示程序空间,PAGE1PAGE255表示数据空间。,MEMORY基本格式,MEMORY PAGE0: name0(attr):origin=常数,leng

9、th=常数 PAGE1: name1(attr):origin=常数,length=常数说明:(1)PAGE指定存储器空间页面,PAGE0代表程序存储器空间,PAGE1n代表数据存储器空间,n最多255页。,MEMORY基本格式,说明:(2)name指定存储区间名称。该名称只对连接器内部有效,在输出文件或符号表中均不保存。(3)attr指定所命名的存储器区间的属性。属性为选项,使用时必须用()括起来。具体属性为:R、W、X、IR:指定该存储器只能读;W:指定该存储器可以写;X:指定该存储器可以包含可执行代码;I:指定该存储器可被初始化若不指定属性,则默认该区间的存储器同时具有上述4种属性。,M

10、EMORY基本格式,说明:(4)origin指定存储器区间的起始地址,其值以字为单位,可以是十进制、八进制或十六进制。Origin可简写为org或o。(5)length指定存储区间的长度,其值以字为单位,可以是十进制、八进制或十六进制。length可简写为len或l。,5.SECTIONS伪指令及其使用,SECTIONS的功能如下:说明如何将输入的段结合成输出段;在可执行程序中定义输出段;指定输出段放置在存储器的何处;允许对输出段重新命名。 当没有指定SECTIONS伪指令时,连接器采用默认的段结构对段进行结合和分配。,SECTIONS伪指令语法,SECTIONS name:property,

11、 property, name:property, property, name:property, property,(介绍略),SECTIONS伪指令语法,所有的COFF文件都包含以下3种形式的段: .text、.data和.bss段.text段:通常包含可执行代码.data段:通常包含初始化数据.bss段:通常为未初始化变量保留存储空间 此外汇编器和连接器可以建立、命名和连接自定义段。,C/C+常用段名,(a) 初始化段 .cinit 包含C/C+程序的静态、全局变量初始化表格,通常 在ROM中.const 包括静态、全局初始化常数变量.pinit 包括C/C+程序的全局结构列表.tex

12、t 包含可执行代码和常数.switch 包含Switch 声明表,通常在ROM中(b) 未初始化段(通常在RAM).bss 包含静态、全局变量,.stack 包含堆栈.sysmem 为malloc函数保留空间,连接命令文件缺省值:,/*如果不提供.cmd,连接器可以给出缺省的连接命令文件*/MEMORY PAGE 0: PROG: origin = 0 x0080 length = 0 xFF00 PAGE 1: DATA: origin = 0 x0080 length = 0 xFF80SECTIONS .text: PAGE = 0 .data: PAGE = 0 .cinit: PAG

13、E = 0 ;cflag option only .bss: PAGE = 1,举例说明.cmd的编写,/* C5402 DSK DSP Memory Map */MEMORY /* Internal Program RAM */PAGE 0: VECS: origin = 0C000h, length = 0080h PRAM: origin = 8000h, length = 4000h /* Scratch Pad Data RAM */PAGE 1: SCRATCH: origin = 0060h, length = 0020h /* Internal Data RAM */ DATA

14、: origin = 3000h, length = 0080h /* Stack Memory Space */ STACK: origin = 3100h, length = 0500h /* External Data RAM */ EXRAM: origin = 3600h, length = 0900h,以Blink.pjt为例(5402.cmd),/* DSP Memory Allocation */SECTIONS .cinit PRAM PAGE 0 .text PRAM PAGE 0 .vectors VECS PAGE 0 .stack STACK PAGE 1 .trap

15、 SCRATCH PAGE 1 .const EXRAM PAGE 1 .data EXRAM PAGE 1 .bss EXRAM PAGE 1 .cio EXRAM PAGE 1 .switch EXRAM PAGE 1,以Blink.pjt为例(5402.cmd),如果编译选择如图填写,则生成blink.map,存储器映射图.map文件,.map文件是连接器在.cmd文件对存储器配置的基础上,根据程序和目标存储器的情况,实际使用存储器的状况。(连接时含-m选择时产生.map文件),连接器生成的blink.map,OUTPUT FILE NAME: ENTRY POINT SYMBOL: _

16、c_int00 address: 00008036MEMORY CONFIGURATION name origin length used attr fill - - - - - -PAGE 0: PRAM 00008000 00004000 0000038e RWIX VECS 0000c000 00000080 00000078 RWIXPAGE 1: SCRATCH 00000060 00000020 00000001 RWIX DATA 00003000 00000080 00000000 RWIX STACK 00003100 00000500 00000400 RWIX EXRAM

17、 00003600 00000900 00000045 RWIX,SECTION ALLOCATION MAP output attributes/section page origin length input sections- - - - -.cinit 0 00008000 00000036 00008000 00000009 rts.lib : exit.obj (.cinit) 00008009 00000006 : _lock.obj (.cinit) 0000800f 00000003 dsk5402.lib : brdinit.obj (.cinit) 00008012 00

18、000003 : brdsetfr.obj (.cinit) 00008015 00000020 drv5402.lib : intr.obj (.cinit) 00008035 00000001 -HOLE- fill = 0 (以下略),连接器生成的blink.map(续),1.阅读blink.pjt的连接命令文件5402.cmd,并给出详细的注释。2.将blink.map和5402.cmd相比较,得到什么结论?3.对给出的正弦产生程序sine.c,尝试编写.cmd文件,并在DSK板上通过。4.为sine.c中的SINE_TABLE 添加独立的段,并将段地址的范围限制在连续128字上。,扩展题和思考题,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号