




已阅读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下includelibrary(-l),详见:TMS320C54xOptimizingC/C+CompilerUsersGuide,SPRU103G.pdf,TMS320C54xAssemblyLanguageToolsUsersGuide,SPRU102F.pdf,DSP代码开发流图,5.5连接器linker使用,TMS320C54x的连接器(lnk500.exe)功能:根据连接命令文件(.cmd文件),将一个或多个COFF目标(.obj)文件连接起来,生成可执行的输出文件(.out文件)和存储器映射文件(.map文件)。,连接器linker使用(续),将多个目标文件合并起来,同时完成下面的工作:将各段配置到目标系统的存储器;对各个符号和段进行重新定位,并给它们指定一个最终的地址;解决输入文件之间未定义的外部引用。,连接器linker使用(续),连接器提供命令语言,用来控制存储器结构、输出段的定义以及将变量与符号地址建立联系,通过定义和产生存储器模型来构成系统存储器。该语言支持表达式的赋值和计算,并且提供两个伪指令:MEMORY和SECTIONS,用于编写命令文件。,1.连接器linker的调用,TMS320C54x的连接器(连接程序)名为lnk500.exe。连接器调用命令格式为:lnk500filename1filenamen-options其中filename为文件名,可以是目标文件、连接命令文件或文件库。,1.连接器linker的调用(续),Lnk500filename1filenamen-options有3中方法调用连接器:在命令中指定选项和文件名。如:lnk500file1.objfile2.objolink.out将file1.obj和file2.obj目标文件,连接生成link.out文件(2)只键入lnk500,按提示输入。,1.连接器linker的调用(续),有3中方法调用连接器:(3)将文件名和选项写成命令文件的形式,命令文件的扩展名为.cmd。假设命令文件linker.cmd内容包含:则可以从命令行调用连接器:lnk500linker.cmd,-olink.outfile1.objfile2.obj,2.连接器linker的选项,连接器lnk500常用选项:-a生成一个绝对地址的、可执行的输出模块。-c使用由TMS320C54xC/C+编译器的ROM自动初始化模型所定义的连接约定。-help,-?显示所有可以利用的连接命令行选项。-heapsize为C语言的动态存储器分配设置堆栈大小,以字为单位。并且定义指定的堆栈大小的全局符号,size的缺省值为1千字。-h使用所有的全局符号成为静态变量,2.连接器linker的选项(续),连接器lnk500常用选项:-lfilename命令一个文档库文件为连接器的输入文件-mfilename生成一个.map存储器映射文件。-ofilename对可执行输出模块命名。缺省,则生成的文件名为a.out-stacksize设置系统堆栈,大小以字为单位,并定义指定堆栈大小的全局符号。缺省size为1千字。-vn指定产生的COFF文件的格式n,n=0,1或2。缺省值为COFF2。,5.6连接命令文件(.cmd)的编写方法,连接命令文件提供两个重要的连接命令伪指令:MEMORY和SECTIONS,用来将输出程序模块与实际的用户目标系统相联系。.,MEMORY伪指令一般和SECTIONS伪指令一起使用,控制输出段的分配。在MEMORY伪指令定义目标存储器的模型后,就可以使用段伪指令SECTIONS将输出段分配到具体指定名称或属性的存储器中。,cmd文件编写时参照DSK的存储器地址图,1.cmd文件的关键字,连接器保留的关键字(自定义段时避免使用这些MEMORYSECTIONS关键字)alignALIGNattrATTRLENGTHlengthlenlORIGINoriginorgoPAGEpageRUNrunCopyfillFILLtypeTYPE,详见:TMS320C54xAssemblyLanguageToolsUsersGuide,SPRU102F.pdf,2.cmd文件的常数,命令文件中的常数:常数可用两种语法方式指定:(1)在汇编语言中用十进制、八进制或十六进制方式(2)在C语言中用整型方式,常数语法指定方式,3.cmd文件的注释,命令文件中的注释采用C的方式,但.cmd不支持/,只支持/*/,.cmd文件基本格式,MEMORYSECTIONS,4.MEMORY伪指令及其使用,连接器确定输出段应分配到存储器的什么地方,必须要有一个目标存储器的模型来完成该项任务。MEMORY伪指令就是用来指定存储器的模型。TMS320C54x不同的存储空间可以占有相同的地址去区间。MEMORY利用PAGE(页面)选项来分开构成这些地址空间。在默认的方式下,PAGE0表示程序空间,PAGE1PAGE255表示数据空间。,MEMORY基本格式,MEMORYPAGE0:name0(attr):origin=常数,length=常数PAGE1:name1(attr):origin=常数,length=常数说明:(1)PAGE指定存储器空间页面,PAGE0代表程序存储器空间,PAGE1n代表数据存储器空间,n最多255页。,MEMORY基本格式,说明:(2)name指定存储区间名称。该名称只对连接器内部有效,在输出文件或符号表中均不保存。(3)attr指定所命名的存储器区间的属性。属性为选项,使用时必须用()括起来。具体属性为:R、W、X、IR:指定该存储器只能读;W:指定该存储器可以写;X:指定该存储器可以包含可执行代码;I:指定该存储器可被初始化若不指定属性,则默认该区间的存储器同时具有上述4种属性。,MEMORY基本格式,说明:(4)origin指定存储器区间的起始地址,其值以字为单位,可以是十进制、八进制或十六进制。Origin可简写为org或o。(5)length指定存储区间的长度,其值以字为单位,可以是十进制、八进制或十六进制。length可简写为len或l。,5.SECTIONS伪指令及其使用,SECTIONS的功能如下:说明如何将输入的段结合成输出段;在可执行程序中定义输出段;指定输出段放置在存储器的何处;允许对输出段重新命名。当没有指定SECTIONS伪指令时,连接器采用默认的段结构对段进行结合和分配。,SECTIONS伪指令语法,SECTIONSname: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,连接器可以给出缺省的连接命令文件*/MEMORYPAGE0:PROG:origin=0 x0080length=0 xFF00PAGE1:DATA:origin=0 x0080length=0 xFF80SECTIONS.text:PAGE=0.data:PAGE=0.cinit:PAGE=0;cflagoptiononly.bss:PAGE=1,举例说明.cmd的编写,/*C5402DSKDSPMemoryMap*/MEMORY/*InternalProgramRAM*/PAGE0:VECS:origin=0C000h,length=0080hPRAM:origin=8000h,length=4000h/*ScratchPadDataRAM*/PAGE1:SCRATCH:origin=0060h,length=0020h/*InternalDataRAM*/DATA:origin=3000h,length=0080h/*StackMemorySpace*/STACK:origin=3100h,length=0500h/*ExternalDataRAM*/EXRAM:origin=3600h,length=0900h,以Blink.pjt为例(5402.cmd),/*DSPMemoryAllocation*/SECTIONS.cinitPRAMPAGE0.textPRAMPAGE0.vectorsVECSPAGE0.stackSTACKPAGE1.trapSCRATCHPAGE1.constEXRAMPAGE1.dataEXRAMPAGE1.bssEXRAMPAGE1.cioEXRAMPAGE1.switchEXRAMPAGE1,以Blink.pjt为例(5402.cmd),如果编译选择如图填写,则生成blink.map,存储器映射图.map文件,.map文件是连接器在.cmd文件对存储器配置的基础上,根据程序和目标存储器的情况,实际使用存储器的状况。(连接时含-m选择时产生.map文件),连接器生成的blink.map,OUTPUTFILENAME:ENTRYPOINTSYMBOL:_c_int00address:00008036MEMORYCONFIGURATIONnameoriginlengthusedattrfill-PAGE0:PRAM00008000000040000000038eRWIXVECS0000c0000000008000000078RWIXPAGE1:SCRATCH000000600000002000000001RWIXDATA000030000000008000000000RWIXSTACK000031000000050000000400RWIXEXRAM000036000000090000000045RWIX,SECTIONALLOCATIONMAPoutputattributes/sectionpageoriginlengthinputsections-.cinit000008000000000360000800000000009rts.lib:exit.obj(.cinit)0000800900000006:_lock.obj(.cinit)0000800f00000003dsk5402.lib:brdinit.obj(.cinit)0000801200000003:brdsetfr.obj(.cinit)0000801500000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒吧寻人活动方案
- 茶庄年会活动方案
- 高考会考试题及答案
- 高级防水考试题及答案
- 抚育技师考试题及答案
- 客户需求调研与问题解决方案
- 风景速描考试题及答案
- 我校招生宣传承诺书(3篇)
- 品牌宣传策略方案
- (正式版)DB15∕T 3355-2024 《规模化舍饲养羊主要疫病综合防治技术规程》
- 审计案例分析单选题100道及答案解析
- 二年级上册《生态 生命 安全》教案
- 中交集团国考云题库
- 高龄患者PICC导管静脉血栓形成的个案分享课件
- 中国骨折内固定术后感染诊断与治疗专家共识
- 食品安全与日常饮食智慧树知到期末考试答案章节答案2024年中国农业大学
- 基础护理学第七版题附有答案
- (正式版)HGT 20593-2024 钢制化工设备焊接与检验工程技术规范
- 200个句子涵盖高中英语3500词汇
- 光线传媒公司章程
- 二手车产品目录
评论
0/150
提交评论