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

上传人:max****ui 文档编号:6338369 上传时间:2020-02-23 格式:PPT 页数:34 大小:297.05KB
返回 下载 相关 举报
DSP系统的软件程序设计.ppt_第1页
第1页 / 共34页
DSP系统的软件程序设计.ppt_第2页
第2页 / 共34页
DSP系统的软件程序设计.ppt_第3页
第3页 / 共34页
点击查看更多>>
资源描述
第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 CompilerUser sGuide SPRU103G pdf TMS320C54xAssemblyLanguageToolsUser sGuide SPRU102F pdf DSP代码开发流图 5 5连接器linker使用 TMS320C54x的连接器 lnk500 exe 功能 根据连接命令文件 cmd文件 将一个或多个COFF目标 obj 文件连接起来 生成可执行的输出文件 out文件 和存储器映射文件 map文件 连接器linker使用 续 将多个目标文件合并起来 同时完成下面的工作 将各段配置到目标系统的存储器 对各个符号和段进行重新定位 并给它们指定一个最终的地址 解决输入文件之间未定义的外部引用 连接器linker使用 续 连接器提供命令语言 用来控制存储器结构 输出段的定义以及将变量与符号地址建立联系 通过定义和产生存储器模型来构成系统存储器 该语言支持表达式的赋值和计算 并且提供两个伪指令 MEMORY和SECTIONS 用于编写命令文件 1 连接器linker的调用 TMS320C54x的连接器 连接程序 名为lnk500 exe 连接器调用命令格式为 lnk500filename1 filenamen options 其中filename为文件名 可以是目标文件 连接命令文件或文件库 1 连接器linker的调用 续 Lnk500filename1 filenamen options 有3中方法调用连接器 在命令中指定选项和文件名 如 lnk500file1 objfile2 obj olink 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 详见 TMS320C54xAssemblyLanguageToolsUser sGuide SPRU102F pdf 2 cmd文件的常数 命令文件中的常数 常数可用两种语法方式指定 1 在汇编语言中用十进制 八进制或十六进制方式 2 在C语言中用整型方式 常数语法指定方式 3 cmd文件的注释 命令文件中的注释采用C的方式 但 cmd不支持 只支持 cmd文件基本格式 MEMORY SECTIONS 4 MEMORY伪指令及其使用 连接器确定输出段应分配到存储器的什么地方 必须要有一个目标存储器的模型来完成该项任务 MEMORY伪指令就是用来指定存储器的模型 TMS320C54x不同的存储空间可以占有相同的地址去区间 MEMORY利用PAGE 页面 选项来分开构成这些地址空间 在默认的方式下 PAGE0表示程序空间 PAGE1 PAGE255表示数据空间 MEMORY基本格式 MEMORY PAGE0 name0 attr origin 常数 length 常数PAGE1 name1 attr origin 常数 length 常数 说明 1 PAGE指定存储器空间页面 PAGE0代表程序存储器空间 PAGE1 n代表数据存储器空间 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伪指令语法 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 PAGE0 PROG origin 0 x0080length 0 xFF00PAGE1 DATA origin 0 x0080length 0 xFF80 SECTIONS 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 cinit PRAMPAGE0 text PRAMPAGE0 vectors VECSPAGE0 stack STACKPAGE1 trap SCRATCHPAGE1 const EXRAMPAGE1 data EXRAMPAGE1 bss EXRAMPAGE1 cio EXRAMPAGE1 switch EXRAMPAGE1 以Blink pjt为例 5402 cmd 如果编译选择如图填写 则生成blink map 存储器映射图 map文件 map文件是连接器在 cmd文件对存储器配置的基础上 根据程序和目标存储器的情况 实际使用存储器的状况 连接时含 m选择时产生 map文件 连接器生成的blink map OUTPUTFILENAME ENTRYPOINTSYMBOL c int00 address 00008036MEMORYCONFIGURATIONnameoriginlengthusedattrfill PAGE0 PRAM00008000000040000000038eRWIXVECS0000c0000000008000000078RWIXPAGE1 SCRATCH000000600000002000000001RWIXDATA000030000000008000000000RWIXSTACK000031000000050000000400RWIXEXRAM000036000000090000000045RWIX SECTIONALLOCATIONMAPoutputattributes sectionpageoriginlengthinputsections cinit000008000000000360000800000000009rts lib exit obj cinit 0000800900000006 lock obj cinit 0000800f00000003dsk5402 lib brdinit obj cinit 0000801200000003 brdsetfr obj cinit 0000801500000020drv5402 lib intr obj cinit 0000803500000001 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字上 扩展题和思考题
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!