程序开发工具及文件.ppt_第1页
程序开发工具及文件.ppt_第2页
程序开发工具及文件.ppt_第3页
程序开发工具及文件.ppt_第4页
程序开发工具及文件.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

程序开发工具及CMD文件 内容提要可编程DSP芯片开发需要一套完整的软 硬件开发工具 通常可分成代码生成工具和代码调试工具两大类 代码生成工具是指将高级语言或汇编语言编写的DSP程序转换成可执行的DSP芯片目标代码的工具程序 主要包括汇编器 链接器和C编译器以及一些辅助工具程序等 代码调试工具包括C 汇编语言源码调试器 仿真器等 程序开发工具及CMD文件 软件开发过程 F28x的应用软件开发主要完成以下工作 选择编程语言编写源程序提供2种编程语言 即汇编语言和C C 语言 对于完成一般功能的代码 这两种语言都可使用 但对于一些运算量很大的关键代码 最好采用汇编语言来完成 以提高程序的运算效率 2 选择开发工具和环境集成开发环境CCS 程序开发工具及CMD文件 软件开发过程 1 应用软件开发流程 应用软件的开发可在TI公司提供的开发环境中进行 用户可以用C C 语言或汇编语言编写源文件 经C编译器 汇编器生成COFF格式的目标文件 再用链接器进行链接 生成在可执行的目标代码 然后利用调试工具对可执行的目标代码进行仿真和调试 当调试完成后 通过Hex代码转换工具 将调试后的可执行目标代码转换成EPROM编程器能接受的代码 并将该代码固化到EPROM中或加载到用户的应用系统中 以便DSP目标系统脱离计算机单独运行 程序开发工具及CMD文件 开发工具 1 代码生成工具 C编译器 用来将C C 语言源程序自动编译为 C54x的汇编语言源程序 汇编器 用来将汇编语言源文件汇编成机器语言COFF目标文件 链接器 将汇编生成的 可重新定位的COFF目标模块组合成一个可执行的COFF目标模块 文档管理器 允许用户将一组文件 源文件或目标文件 集中为一个文档文件库 程序开发工具及CMD文件 开发工具 2 代码调试工具 C 汇编语言源码调试器 与软件仿真器 评价模块 软件开发系统 软件仿真器等配合使用 软件仿真器 是一种模拟DSP芯片各种功能并在非实时条件下进行软件调试的调试工具 它不需目标硬件支持 只需在计算机上运行 程序开发工具及CMD文件 开发工具 2 代码调试工具 软件开发系统SWDS 是一块PC插卡 可提供低成本的评价和实时软件开发 还可用来进行软件调试 程序可在DSP芯片上实时运行 可扩展的开发系统仿真器 XDS510 可用来进行系统级的集成调试 是进行DSP芯片软硬件开发的最佳工具 评价模块EVM板 是一种低成本的开发板 可进行DSP芯片评价 性能评估和有限的系统调试 程序开发工具及CMD文件 4 2汇编语言程序的编辑 汇编和链接过程 汇编语言源程序可以在任何一种文本编辑器中进行 如笔记本 WORD EDIT TC等 当汇编语言源程序编写完成后 还必须经过汇编和链接后才能运行 程序开发工具及CMD文件 程序的编辑 汇编和链接过程 示意图 程序开发工具及CMD文件 汇编器包括如下功能 将汇编语言源程序汇编成一个可重新定位的目标文件 obj文件 根据需要 可以生成一个列表文件 lst文件 并对该列表进行控制 将程序代码分成若干个段 每个段的目标代码都有一个SPC 段程序计数器 管理 程序开发工具及CMD文件 3 链接 所谓链接 就是根据链接器命令文件 cmd 对已汇编过的一个或多个目标文件 obj 进行链接 生成输出文件 out 和存储器映像文件 map 程序开发工具及CMD文件 4 5链接器的使用 链接器的主要任务是根据链接命令文件 cmd 将一个或多个COFF目标文件链接起来 生成存储器映像文件 map 和可执行的输出文件 out 在链接过程中 链接器将各个目标文件合并 并完成以下工作 将各个段配置到目标系统的存储器 对各个符号和段进行重新定位 并给它们指定一个最终的地址 解决输入文件之间未定义的外部引用 COFF的一般概念 COFF的一般概念 汇编器和链接器生成的目标文件 是一个可以由F28X器件执行的文件 这些目标文件的格式称之为公共目标文件格式 COFF 在编写汇编语言程序时 COFF采用代码段和数据段的形式 以便于模块化的编程 使编程和管理变得更加方便 这些代码段和数据段简称为段 汇编器和链接器提供一些伪指令来建立和管理各种各样的段 COFF的一般概念 COFF的一般概念 COFF文件的基本单元 COFF文件有3种类型 COFF0 COFF1 COFF2 每种类型的COFF文件 其标题格式都有所不同 但数据部分是相同的 链接器能够读 写所有类型的COFF文件 默认时链接器生成的是COFF2文件 COFF文件的基本单元 COFF文件的基本单元 1 段 sections 是COFF文件中最重要的概念 每个目标文件都分成若干段 段 是存储器中占据相邻空间的代码或数据块 一个目标文件中的每个段都是分开的和各不相同的 COFF目标文件都包含以下3种形式的段 text段 文本段 通常包含可执行代码 data段 数据段 通常包含初始化数据 bss段 保留空间段 通常为未初始化变量保留存储空间 COFF文件的基本单元 COFF文件的基本单元 2 段的基本类型 COFF目标文件中的段有两种基本类型 初始化段 未初始化段 1 初始化段 初始化段中包含有数据或程序代码 主要有 text段 已初始化段 data段 已初始化段 sect段 已初始化段 由汇编器伪指令建立的自定义段 COFF文件的基本单元 COFF文件的基本单元 2 段的基本类型 COFF目标文件中的段有两种基本类型 2 未初始化段 在存储空间中 为未初始化数据保留存储空间 它包括 bss段 未初始化段 usect段 未初始化段 由汇编命令建立的命名段 自定义段 COFF文件的基本单元 COFF文件的基本单元 3 段与目标存储器的对应关系 汇编器的任务 在汇编过程中 根据汇编命令用适当的段将各部分程序代码和数据连在一起 构成目标文件 汇编器对段的处理 汇编器对段的处理 汇编器对段的处理是通过段伪指令来区别各个段的 并将段名相同的语句汇编在一起 汇编器有5条伪指令可识别汇编语言程序的各个部分 bss usect text data sect 定义未初始化段 定义未初始化段 定义已初始化段 定义已初始化段 定义已初始化段 汇编器对段的处理 汇编器对段的处理 未初始化段就是在 C54x存储器中保留空间 通常它们被定位在RAM区 在目标文件中 这些段中没有确切的内容 由这些段定义的空间仅作为临时存储空间 在程序运行时 可以利用这些存储空间存放变量 未初始化段分为默认的和命名的两种 分别由汇编器伪指令 bss和 usect产生 1 未初始化段 汇编器对段的处理 1 bss伪指令 1 未初始化段 用于在bss段中保留若干个空间 格式 bss符号 字数 符号 对应于保留的存储空间第一个字的变量名称 可以让其他段引用 也可以用 global命令定义为全局符号 字数 表示在bss段或标有名字的段中保留若干个存储单元 每调用一次 bss伪指令 汇编器在相应的段保留更多的空间 汇编器对段的处理 汇编器对段的处理 已初始化段中包含有可执行代码或初始化数据 这些段中的内容都在目标文件中 当加载程序时再放到存储器中 每个已初始化段都是可以重新定位的 并且可以引用其他段中所定义的符号 链接器在链接时会自动地处理段间的相互引用 已初始化段由 text data和 sect三个伪指令建立 2 已初始化段 汇编器对段的处理 已初始化命令的句法 2 已初始化段 text 段起点 data 段起点 sect 段名 段起点 段起点 是任选项 若选用 它为段程序计数器SPC定义一个起始值 若默认 则SPC从0开始 段命令应用举例 例 段命令应用举例 汇编语言源程序 datacoeff word044h 055h 066h bssbuffer 8prt word0456h textadd LD0Dh Aaloop SUB 1 ABCaloop AGEQ dataivals word0CCh 0DDh 0EEh 初始化数据段 3组数据放入 data段 在 bss段保留8个单元 0456h放入 data段 初始化文本段 1字指令 2字指令 2字指令 共计5个字 初始化数据段 3组数据放入 data段 段命令应用举例 汇编语言源程序 var2 usect newvars 2inbuf usect newvars 8 textmpy LD0Ah Bmloop MPY 0Ah BBCmloop BNOV sect vectors word044h 088h 建立newvars命名段 保留2个单元 在newvars段保留8个单元 初始化文本段 1字指令 2字指令 2字指令 共计5个字 建立vectors命名段 2组数据放入vectors命名段 段命令应用举例 经汇编后 得列表文件 部分 2 3 汇编一个初始化表到 data段 4 50000 data600000044coeff word044h 055h 066h00010055000200667 8 在 bss段中为变量保留空间 9 100000 bssbuffer 811 12 仍然在 data段中 13 1400030456prt word0456h 段命令应用举例 15 16 汇编代码到 text段 17 180000 text190000100dadd LD0Dh A200001f010aloop SUB 1 A00020001210003f842BCaloop AGEQ00040001 22 23 汇编另一个初始化表到 data段 24 250004 data26000400ccivals word0CCh 0DDh 0EEh000500dd000600ee27 28 为更多的变量定义另一个段 29 300000var2 usect newvars 2310001inbuf usect newvars 8 段命令应用举例 32 33 汇编更多代码到 text段 34 350005 text360005110ampy LD0Ah B370006f166mloopMPY 0Ah B0007000a380008f868BCmloop BNOV00090006 39 40 为中断向量 vectors定义一个自定义段 41 420000 sect vectors 4300000044 word044h 088h00010088 源程序的行号 段程序计数器 目标代码 汇编语言源程序 段命令应用举例 汇编语言源程序经过汇编后 共建立了5个段 text段 文本段 段内有10个字可执行的程序代码 data段 已初始化的数据段 段内有7个字的数据 vectors段 用 sect命令生成的命名段 段内有2个字的初始化数据 bss段 未初始化的数据段 在存储器中为变量保留8个存储单元 newvars段 用 usect命令建立的命名段 为变量保留10个存储单元 段命令应用举例 经汇编后 得列表文件 部分 2 3 汇编一个初始化表到 data段 4 50000 data600000044coeff word044h 055h 066h00010055000200667 8 在 bss段中为变量保留空间 9 100000 bssbuffer 811 12 仍然在 data段中 13 1400030456prt word0456h 50000 data 600000044coeff word044h 055h 066h 100000 bssbuffer 8 1400030456prt word0456h data 6 0044 6 0055 6 0066 10 bss 没有数据保留8个字 14 0456 段命令应用举例 15 16 汇编代码到 text段 17 180000 text190000100dadd LD0Dh A200001f010aloop SUB 1 A00020001210003f842BCaloop AGEQ00040001 22 23 汇编另一个初始化表到 data段 24 250004 data26000400ccivals word0CCh 0DDh 0EEh000500dd000600ee27 28 为更多的变量定义另一个段 29 300000var2 usect newvars 2310001inbuf usect newvars 8 text 180000 text 190000100dadd LD0Dh A 19 100d 200001f010aloop SUB 1 A 20 f010 20 0001 210003f842BCaloop AGEQ 21 f842 21 0001 250004 data 26000400ccivals word0CCh 0DDh 0EEh data 26 00cc 26 00dd 26 00ee 300000var2 usect newvars 2 newvars 30 保留2个字 310001inbuf usect newvars 8 31 保留8个字 段命令应用举例 32 33 汇编更多代码到 text段 34 350005 text360005110ampy LD0Ah B370006f166mloopMPY 0Ah B0007000a380008f868BCmloop BNOV00090006 39 40 为中断向量 vectors定义一个自定义段 41 420000 sect vectors 4300000044 word044h 088h00010088 350005 text text 360005110ampy LD0Ah B 36 110a 370006f166mloopMPY 0Ah B 37 f168 37 000a 380008f868BCmloop BNOV 38 f868 38 0006 420000 sect vectors vectors 4300000044 word044h 088h 43 0044 43 0088 链接器对段的处理 链接器对段的处理 链接器是开发DSP器件必不可少的开发工具之一 它对段处理时有2个主要任务 将一个或多个COFF目标文件中的各种段作为链接器的输入段 经链接后在一个执行的COFF输出模块中建立各个输出段 在程序装入时对其重新定位 为各个输出段选定存储器地址 链接器对段的处理 链接器对段的处理 链接器有2条伪指令支持上述任务 MEMORY伪指令 用来定义目标系统的存储器配置空间 包括对存储器各部分命名 以及规定它们的起始地址和长度 SECTIONS伪指令 用来指定链接器将输入段组合成输出段方式 以及输出段在存储器中的位置 也可用于指定子段 若未使用伪指令 则链接器将使用目标处理器默认的方法将段放入存储空间 链接器对段的处理 4 5 2链接器命令文件的编写与使用 链接命令文件用来为链接器提供链接信息 可将链接操作所需的信息放在一个文件中 这在多次使用同样的链接信息时 可以方便地调用 在链接命令文件中 可使用MEMORY和SECTIONS伪指令 为实际应用指定存储器结构和地址的映射 MEMORY 用来指定目标存储器结构 SECTIONS 用来控制段的构成与地址分配 链接器命令文件举例 例 链接器命令文件举例 a objb obj 输入文件名 oprog out 指定输出文件的选项 mprog map 指定map文件的选项 MEMORY MEMORY伪指令 PAGE0 ROM origin 1000h length 0100hPAGE1 RAM origin 0100h length 0100h SECTIONS SECTIONS伪指令 text ROM data ROM bss RAM MEMORY指令 4 5 4MEMORY指令 MEMORY指令用来规定目标存储器的结构 在实际的应用中 目标系统所配置的存储器是各不相同的 通过MEMORY指令 可以进行各种各样的存储器配置 MEMORY指令的句法 MEMORY PAGE0 name1 attr origin constant length constant PAGEn namen attr origin constant length constant 指令字 存储区间说明语句 书写方式 已大写MEMORY指令字开始 由大括号括起来的存储器区间说明 存储区间 存储页面 区间名称 区间属性 起始地址 区间长度 MEMORY指令 4 5 4MEMORY指令 存储区间说明语句 PAGE 指定存储器空间页面 最多为255页 取决于目标存储器的配置 每一个PAGE代表一个完全独立的地址空间 通常 PAGE0用于程序存储器 PAGE1用于数据存储器 若没有规定PAGE 则链接器默认为PAGE0 MEMORY指令 4 5 4MEMORY指令 存储区间说明语句 name 存储器区间名称 可由用字母 等组成 存储器区间为内部记号 因此不需要保留在输出文件或者符号表中 不同PAGE上的存储器区间可以取相同的名字 但在同一PAGE内的名字不能相同 且不许重叠配置 MEMORY指令 4 5 4MEMORY指令 存储区间说明语句 attr 为任选项 用来为命名的存储器区间规定1 4个属性 当对输出段定位时 可利用属性限制输出段分配到一定的存储区间 属性选项共有4项 R规定可以对存储器执行读操作 W规定可以对存储器执行写操作 X规定存储器可以装入可执行的程序代码 I规定可以对存储器进行初始化 若未选属性 可将输出段不受限制地定位到任何一个存储器的位置 任何一个没有规定属性的存储器 包括所有默认方式的存储器 都有全部4项属性 MEMORY指令 4 5 4MEMORY指令 存储区间说明语句 origin 用来指定存储区间的起始地址 可简写为org或o 其值以字为单位 可以用十进制 八进制或十六进制数表示 Length 用来指定存储器空间的长度 可简写为len或l 其值以字为单位 可以用十进制 八进制或十六进制数表示 MEMORY指令 4 5 4MEMORY指令 存储区间说明语句 fill 为任选项 用来为没有定位输出段的存储器空单元充填一个数 键入fill或f均可 该值是2个字节的整型常数 可以是十进制数 八进制数或十六制数 MEMORY指令编写 例 用MEMORY伪指令编写连接命令文件 要求 程序存储器 4K字ROM 起始地址为C00h 取名为ROM 数据存储器 32字RAM 起始地址为60h 取名为SCR 512字RAM 起始地址为80h 取名为CHIP file1 objfiel2 obj oProg outMEMORY PAGE0 ROM origin C00h length 1000hPAGE1 SCR origin 60h length 20hCHIP origin 80h length 200h 两个输入文件 链接命令选项 指令字 页面名称 区间名称 起始地址 区间长度 例4 5 2 用MEMORY伪指令编写连接命令文件 file1 objfiel2 obj oProg outMEMORY PAGE0 ROM org C00h len 1000hPAGE1 SCR org 60h len 20hCHIP org 80h len 200h PAGE0 ROM org C00h len 1000h 00C00h 1000h 01C00h ROM PAGE1 SCR org 60h len 20h 00060h 0007Fh 20h SCR CHIP org 80h len 200h 00080h 200h 0027Fh CHIP SECTIONS指令 SECTIONS指令 用来控制段的构成与地址分配 指令功能 说明如何将输入段组合成输出段 在可执行程序中定义输出段 规定输出段在存储器中的存放位置 允许重新命名输出段 1 SECTIONS指令语法 SECTIONS指令语法 SECTIONS指令的句法 SECTIONS name property property property name property property property name property property property 指令字 输出段说明语句 段名 定义输出段的名称 属性 定义该段的内容和存储器的分配 段名 1 SECTIONS指令语法 属性 属性 属性 SECTIONS指令语法 1 SECTIONS指令语法 段属性用来定义输出段的内容和存储地址的分配 包括的内容如下 装入存储器分配 运行存储器分配 输入段 段的类型 充填值 SECTIONS指令语法 1 SECTIONS指令语法 装入存储器分配用于定义段装入时的存储器地址 语法格式 load allocation或allocation或 allocation allocation 关于段地址的说明 即给段分配存储单元 SECTIONS指令语法 1 SECTIONS指令语法 装入存储器分配 例如 text load 0 x1000 text load ROM bss load RW text align 0 x80 text PAGE0 将 text段定位到一个特定的地址 将 text段定位到命名为ROM的存储区 将 bss段定位到属性为R W的存储区 将 text段定位到从地址0 x80开始 将 text段定位到PAGE0 SECTIONS指令语法 1 SECTIONS指令语法 装入存储器分配 若用到一个以上参数 可以将它们排成一行 例如 text ROM align 16 PAGE 2 SECTIONS指令的使用 SECTIONS指令 2 SECTIONS指令的使用 例 SECTIONS指令的使用 file1 objfile2 obj oProg outSECTIONS text load ROM run 800h con load ROM bss load RAM vec load FF80h t1 obj int1 t2 obj int2 endvec data align 16 两个输入文件 链接命令选项 指令字 输出段说明语句 SECTIONS指令的使用 2 SECTIONS指令的使用 例 SECTIONS指令的使用 file1 objfile2 obj oProg outSECTIONS text load ROM run 800h con load ROM bss load RAM vec load FF80h t1 obj int1 t2 obj int2 endvec data align 16 输出段 加载地址 运行地址 text ROM RAM800h con ROM bss RAM vec ROMFF80 data RAM16位边界 SECTIONS指令的使用 2 SECTIONS指令的使用 例4 5 3 SECTIONS指令的使用 file1 objfile2 obj oProg outSECTIONS text load ROM run 800h con load ROM bss load RAM vec load FF80h t1 obj int1 t2 obj int2 endvec data align 16 text con bss vec data FF80h 运行时 800h text text text DSPF2812中MEMORY文件 MEMORY PAGE0 PRAMH0 origin 0 x3f8000 length 0 x001000PAGE1 SARAM RAMM0 origin 0 x000000 length 0 x000400RAMM1 origin 0 x000400 length 0 x000400 PeripheralFrame0 DEV EMU origin 0 x000880 length 0 x000180FLASH REGS origin 0 x000A80 length 0 x000060CSM origin 0 x000AE0 length 0 x000010XINTF origin 0 x000B20 length 0 x000020CPU TIMER0 origin 0 x000C00 length 0 x000008CPU TIMER1 origin 0 x000C08 length 0 x000008CPU TIMER2 origin 0 x000C10 length 0 x000008PIE CTRL origin 0 x000CE0 length 0 x000020PIE VECT origin 0 x000D00 length 0 x000100 PeripheralFrame1 ECAN A origin 0 x006000 length 0 x000100ECAN AMBOX origin 0 x006100 length 0 x000100 PeripheralFrame2 SYSTEM origin 0 x007010 length 0 x000020SPI A origin 0 x007040 length 0 x000010SCI A origin 0 x007050 length 0 x000010XINTRUPT origin 0 x007070 length 0 x000010GPIOMUX origin 0 x0070C0 length 0 x000020GPIODAT origin 0 x0070E0 length 0 x000020ADC origin 0 x007100 length 0 x000020EV A origin 0 x007400 length 0 x000040EV B origin 0 x007500 length 0 x000040SPI B origin 0 x007740 length 0 x000010SCI B origin 0 x007750 length 0 x000010MCBSP A origin 0 x007800 length 0 x000040 CSMPasswordLocations CSM PWL origin 0 x3F7FF8 length 0 x000008 SARAM DRAMH0 origin 0 x3f9000 length 0 x001000 F28X中SECTION文件 SECTIONS Allocateprogramareas reset PRAMH0 PAGE 0 text PRAMH0 PAGE 0 cinit PRAMH0 PAGE 0 Allocatedataareas stack RAMM1 PAGE 1 bss DRAMH0 PAGE 1 ebss DRAMH0 PAGE 1 const DRAMH0 PAGE 1 econst DRAMH0 PAGE 1 sysmem DRAMH0 PAGE 1 AllocatePeripheralFrame0RegisterStructures DevEmuRegsFile DEV EMU PAGE 1FlashRegsFile FLASH REGS PAGE 1CsmRegsFile CSM PAGE 1XintfRegsFile XINTF PAGE 1CpuTimer0

温馨提示

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

最新文档

评论

0/150

提交评论