DSP系统的软件程序设计.ppt_第1页
DSP系统的软件程序设计.ppt_第2页
DSP系统的软件程序设计.ppt_第3页
DSP系统的软件程序设计.ppt_第4页
DSP系统的软件程序设计.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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 Language Tools Users Guide , SPRU102F.pdf,DSP代码开发流图,5.5 连接器linker使用,TMS320C54x的连接器(lnk500.exe)功能: 根据连接命令文件(.cmd文件),将一个或多个COFF目标(.obj)文件连接起来,生成可执行的输出文件(.out文件)和存储器映射文件(.map文件)。,连接器linker使用(续),将多个目标文件合并起来,同时完成下面的工作: 将各段配置到目标系统的存储器; 对各个符号和段进行重新定位,并给它们指定一个最终的地址; 解决输入文件之间未定义的外部引用。,连接器linker使用(续),连接器提供命令语言,用来控制存储器结构、输出段的定义以及将变量与符号地址建立联系,通过定义和产生存储器模型来构成系统存储器。 该语言支持表达式的赋值和计算,并且提供两个伪指令:MEMORY和SECTIONS,用于编写命令文件。,1.连接器linker的调用,TMS320C54x的连接器(连接程序)名为lnk500.exe。 连接器调用命令格式为: lnk500 filename1 filenamen - options 其中filename为文件名,可以是目标文件、连接命令文件或文件库。,1.连接器linker的调用(续),Lnk500 filename1 filenamen - options 有3中方法调用连接器: 在命令中指定选项和文件名。如: 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.out file1.obj file2.obj,2.连接器linker的选项,连接器lnk500常用选项: -a 生成一个绝对地址的、可执行的输出模块。 -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 size 设置系统堆栈,大小以字为单位,并定义 指定堆栈大小的全局符号。缺省size为1千字。 -vn 指定产生的COFF文件的格式n,n=0,1或2。缺省值为COFF2。,5.6 连接命令文件(.cmd)的编写方法,连接命令文件提供两个重要的连接命令伪指令: MEMORY和SECTIONS,用来将输出程序模块与实际的用户目标系统相联系。 .,MEMORY伪指令一般和SECTIONS伪指令一起使用,控制输出段的分配。在MEMORY伪指令定义目标存储器的模型后,就可以使用段伪指令SECTIONS将输出段分配到具体指定名称或属性的存储器中。,cmd文件编写时参照DSK的存储器地址图,1cmd文件的关键字,连接器保留的关键字(自定义段时避免使用这些 MEMORY SECTIONS 关键字) align ALIGN attr ATTR LENGTH length len l ORIGIN origin org o PAGE page RUN run Copy fill FILL type TYPE ,详见:TMS320C54x Assembly Language Tools Users Guide , SPRU102F.pdf,2cmd文件的常数,命令文件中的常数: 常数可用两种语法方式指定: (1)在汇编语言中用十进制、八进制或十六进制方式 (2)在C语言中用整型方式,常数语法指定方式,3cmd文件的注释,命令文件中的注释采用C的方式,但 .cmd不支持/,只支持/* */,.cmd文件基本格式,MEMORY SECTIONS ,4.MEMORY伪指令及其使用,连接器确定输出段应分配到存储器的什么地方,必须要有一个目标存储器的模型来完成该项任务。 MEMORY伪指令就是用来指定存储器的模型。 TMS320C54x不同的存储空间可以占有相同的地址去区间。MEMORY利用PAGE(页面)选项来分开构成这些地址空间。 在默认的方式下,PAGE0表示程序空间,PAGE1PAGE255表示数据空间。,MEMORY基本格式,MEMORY PAGE0: name0(attr):origin=常数,length=常数 PAGE1: name1(attr):origin=常数,length=常数 说明: (1)PAGE指定存储器空间页面,PAGE0代表程序存储器空间,PAGE1n代表数据存储器空间,n最多255页。,MEMORY基本格式,说明: (2)name指定存储区间名称。 该名称只对连接器内部有效,在输出文件或符号表中均不保存。 (3)attr指定所命名的存储器区间的属性。 属性为选项,使用时必须用()括起来。具体属性为:R、W、X、I R:指定该存储器只能读; W:指定该存储器可以写; X:指定该存储器可以包含可执行代码; I:指定该存储器可被初始化 若不指定属性,则默认该区间的存储器同时具有上述4种属性。,MEMORY基本格式,说明: (4)origin指定存储器区间的起始地址,其值以字为单位,可以是十进制、八进制或十六进制。Origin可简写为org或o。 (5)length指定存储区间的长度,其值以字为单位,可以是十进制、八进制或十六进制。length可简写为len或l。,5.SECTIONS伪指令及其使用,SECTIONS的功能如下: 说明如何将输入的段结合成输出段; 在可执行程序中定义输出段; 指定输出段放置在存储器的何处; 允许对输出段重新命名。 当没有指定SECTIONS伪指令时,连接器采用默认的段结构对段进行结合和分配。,SECTIONS伪指令语法,SECTIONS name:property, 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+程序的全局结构列表 .text 包含可执行代码和常数 .switch 包含Switch 声明表,通常在ROM中 (b) 未初始化段(通常在RAM) .bss 包含静态、全局变量, .stack 包含堆栈 .sysmem 为malloc函数保留空间,连接命令文件缺省值:,/*如果不提供.cmd,连接器可以给出缺省的连接命令文件*/ MEMORY PAGE 0: PROG: origin = 0x0080 length = 0xFF00 PAGE 1: DATA: origin = 0x0080 length = 0xFF80 SECTIONS .text: PAGE = 0 .data: PAGE = 0 .cinit: PAGE = 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: 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 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: “_c_int00“ address: 00008036 MEMORY CONFIGURATION name origin length used attr fill - - - - - - PAGE 0: PRAM 00008000 00004000 0000038e RWIX VECS 0000c000 00000080 00000078 RWIX PAGE 1: SCRATCH 00000060 00000020 00000001 RWIX DATA 00003000 00000080 00000000 RWIX STACK 00003100 00000500 00000400 RWIX EXRAM 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 00000003 : brdsetfr.obj (.cinit) 00008

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论