下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2丄第五章TMS320C54x DSP软件开发一、 软件开发过程及开发工具二、 公共目标文件格式(COFF)三、 常用汇编伪指令六、TMS320C54x C语言编程七、 用C语言和汇编语言混合编程1.建立源程序2.C编译器( (CCompiler)3.汇编器( (Assembler)、目五、 软24.链接器( (Linker)5.调试工具6.十六进制转换公用程序(HEXConversionUtility)TMS320C54x DSP软件开发流程C54x DSP提供了2种编程语言汇编语言C54x DSP提供了2种开发环境非集集成开发ArchiverLmfccrLUtxary ofobject f
2、ixMacrolibraryEPROMprogrammerAiscnblytrAntitionasfitantExecutableCOFF fteUbtanr-buildutiityAssemblersourceCross-referenoetstgrMocrosource6链接命令文件8TMS320C54xV3.50版代码生成工具程序理序名作 fflCL500.exe编译汇编直接程序 将 C 程序转 换成 out 文件AR500.ee文档营连程序对目标文件库进行 増加肌际、提取,替代等匿乍ACJOO.exeC 文法分斫程序,对丄文件进方 文法分析生成 if 中间文件A5M500.e6COFF
3、 汇絹应用程序,裕汇编语言 程序转砂为 COFF 冃标文件。可OPT500.exe忧化程序,对.if 文件进行优化, 生成opt 文件HEX500exe代码格式转换程序,将 out 文件转 拱为指走桔式的文件CG500.exe代码生成程序,将.if 或.opt 文件 生成fiSTH 文件L14K500exe琏接琨存,将目标文件陡接戒.out 文件CUST.exe交叉列表程序,对 CG500 生成 的妙m 文件注行交叉列表,生 成以文件IvK5C0.e:e库生成应用程序汇编器和链接器建立的目标文件,是一个 可以在TMS320器件上执行的文件,这些文件 的格式称之为公共目标文件格式,即COFFo
4、COFF使模块化编程和管理变得更加方便。公10汇编器根据汇编命令用适当的段将各部分程序代 码和数据连在一起,构成目标文件链接器的一个任务就是分配存储单元,即把各个 段重新定位到目标存储器中。链接器建立的是绝对地址的C0FF文件即o说文件丿段是COFF文件中最重要的概念,一个段就是 最终在存储器映像中占据连续空间的一个数据块或 代码块,汇编器和链接器都有一些伪指令来建立和 管理各种各样的段。段可以分为两大类,即已初始 化段和未初始化段。分段的优点:在目标文件中将程序、数据、变 量的代码分开放置,便于在链接时作为一个单独的 部分分配存储器。由于大多数系统都有好几种形式 的存储器,通过对各个段重新定
5、位,可以使目标存 储器得到汇编器和链接器功能的异同相同不同点建立公共目标文件格式的目棕文件汇编器建立的是相对地址的COFF文件即obj文件1.CO11更为有效的利用。12COFF目标文件中至少包含3个默认的段:text段(文本段):包含可执行代码data段(数据段):包含已初始化的数据 bss段(保留空间段):为未初始化的数据保留空间标文件中的段与目标存储器关系的一个例子;Object FileTarget Memory142.汇编器对段的处理 bss初始化段.usect未初始化自定义段 text已初始化程序正文 data已初始化程序数据段 一sect已初始化自定义段如果在汇编语言程序中一个段
6、命令都没有用,那 么汇编注意用于定义段的汇编命令(1)未初始化段15器把程序中的内容都汇编到text段。未初始化段主要用来在存储器中保留空间,通常将它们定位到RAM中。这些段在目标文件中没有实际内容,只是保留空间。程序可以 在运行时利用这些空间建立和存储变量。未初 始化段是通过使用bss和.usect汇编伪指令建立 的。16未初始化段由bss和usect命令建立使用方法bss符号/,字数符号.usect“段名”,字数,,程序员为自定义未 初始化段起的名字对应于保留的存储空间第一个字的变量名称作用位置(2)已初17已初始化段包含可执行代码或已初始化数据o这些段的内容存储在目标文件中,加载程序时再
7、放到TMS320C54X存储器中。三个用于建立已初始化段的伪指令为:.text、.data、.sect。18已初始化段是由.text、 data、 sect命令建立(3)命名段命名段就是程序员自己定义的段,它与缺省的.text、.data和bss段一样使用,但与缺省段分 开汇编。data段不同的存储器中,将未初始化 的变量汇编到与.bss段不同的存储器中。产生 命名段的伪指令为:符号.usect -段名”,字数sect“段名”,段起点作用位置包含使用方法段程序计数器(SPC)定义的一个起始值通常将它程序员为自定义未初始化段起的名字(4)子段子段( (Subsections)是大段中的小段。可以
8、像处理段一样处理子段。釆用子段可以使存储器图更加紧密。子段的命名句法为:基段名:子段名子段也有两种,用.sect命令建立的是已初始化段,用USCt命令建立的是未初始化段。作用子段结构可以使存储器分配图更加紧密位置目可单独分配空间或在基段位置之后基段名:子段名 sect text:_func子段也有两种:用.sect命令建立的是已初始化 段,而用.usect命令建立的段是未初始化段。19使用方法(5)段程序计数器(SPC)作用表示一个程序代码段或数据段内的当前地址一开始,汇编器将每个SPC置0。当汇 编器将程序代码或数据加到一个段内时,相应的SPC就增加。如果再继续 对某个段汇编,则相应的SPC
9、就在先 前的数值上继续增加。链接器在链接 时要对每个段进行重新定位。例5-1段命令应用举例:0002 00330000.bss buffer.10 2 2 2 2 *rTw rTwrrwrTwrTrTw编址过程211011127*7* rTw rjwrTw Twr7w eTw rTw rTwTw rvw3* Assemble an initialized table into .data *560000data00000011Reserve* *still in .data* 耳Tw rjw TwJ 0003 0123 ptr word 0123h0000.text0000 lOOf add:
10、 LD 0Fh,A0001 010 aloop: SUB #1,A0002 00010003 f842BC aloop, AGEQ0004 00010004.data0004 OOaa ivals .word 0Aah,0BBh,0CCh0005 OObb0006 OOccvar2 . %*卜 *rjw丫*rjw*rjw丫rjwrj .卜ej*卜rjw*町丫 町卜rjw丫* *Assemblecodeintothe .textsection*卜 匕%1%22%少300000* *Anot28 * *440001 0033例中,一共建立了5个段: text段内有10个字的程序 代码。.data段
11、内有7个字的数据。vectors是一个用.sect建立 的自定义段,段内有2个字的已初始化数 据。 bss在存储器中为变量保留10个存储单元。newvars是一个用usect命令 建立的自定义段,它 在存储器中为变量保 留8个存储单元。i7名为 vectorsusect为耒初始化支量俣留存储空 间的目定义段STACK .usectMSTACKH,10h 表示在数据存傭銘中笛 出 16 个单元作为堆栈区名为 STACK (栈顶地址)右1.段定义伪指令为便于链接器将程序、 数据分段定位于指定的(物理存在的)存储器空间,并将不同的Obj文件链 接起来。段的使用非常灵活,但常用以下约定:.text此段
12、存放程序代码。.data此段存放初始化了的数据。bss一此段存入未初始化的变量。.sect名称,定义一个有名段,放初始化了的数据或程序代码 .if .elseif .else .endif伪指令告诉汇编器按照表 达式的计算结果对代码块进行条件汇编。 .if expression标志条件块的开始,仅当条件为 真(expression的值非0为真)时汇编代码。 .elseif expression标志若if条件为假,而.elseif条件为真时要汇编代码块。 1S标志若if条件为假时要汇编代码块。 .endif标志条件块的结束,并终止该条件代码 块。占3.引用其他丈件和初始化常数伪指令 includ
13、ev文件名将指定文件复制到当前位:其内容可以是程序、数据、符号定义等。 .copy4文件名,与.include似。-.def*符号名 在当前文件中定义一个符号,可 以被其他文件使用。-.ref符号名在其他文件中定义,可以在本文件 中使用的符号。 .global符号名 其作用相当于def ref效果之和。条件汇编伪指令39IK142 .mmregs定义存储器映射寄存器的符号名,这 样就可以用ARO、PMST等助记符替换实际的存储器地址。 .float数1,数2指定的各浮点数连续放置到存 储器中(从当前段指针开始)。 .word数1,数2指定的各数(十六进制)连续 放置到存储器中。 .space
14、n以位为单位,空出n位存储空间。 .end程序块结束。4.宏定义和宏调用TMS320C54X汇编程序支持宏语言。如果程序中需要多次执行某段程序,可以把这段程序定义为一个宏(宏定义),然后在需要重复 执行这段程序的地方调用这条宏指令。SUL41宏指令与子程序:两者都可以被多次调用,但子程序汇编成目标代 码的过程只进行一次,而在用到宏指令的每个地方 都要对宏指令中的语句逐条地进行汇编。在调用前,由于子程序不使用参数,故子程序所需要的寄存器等都必须事先设置好;而对于宏指令 来说,由于可以使用参数,调用时只要直接代入参 数就行了。宏指令可以在源程序的任何位置上定义,但必须 在用到它之前先定义好。宏定义
15、可以嵌套。macname macro parameter 1,parameter n助记符指令与宏指令 mexit endm宏调用的格式label : macname parameter 1,parametern宏定例 宏定义、宏调用和宏展开的一个例子。链接器主要功能根据链接命令或链接命令文件(.cmd文件),将一个或多个COFF目标文件链接起来, 生成存储器映 象文件(.map)和可执行的输出文 件(.out) (COFF目标模块)0123456782345678 9-11111111111add3ADDRP=P1+P2+P3 ;说明宏功能add3 .macro pl,p2,p3,ADDRP;定义宏LDpl,AADD p2,AADD p3,ASTLA,ADDRP endmglobal abc,def,ghi,adr;定义全局符号000000 add3abc9def9ghi9adr;调用宏数“0000000000010000020000031000!0000!0000!8000!LD abc.A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 育婴员-模拟练习题及答案
- 临床诊断学核心知识点总结
- (辅导班)2026年新高三数学暑假讲义(基础班)第02讲 函数的性质:单调性与奇偶性(原卷版)
- 【2026】年品牌推广专员(某大型国企)面试题题库解析
- 2026届河南百师联盟高三下学期5月模拟联考历史试题
- 教育基础及其方法 4
- 中级经济师考试中级工商管理试题及答案解析
- GEO发稿平台深度测评:2026年AI推广TOP5渠道实力排名与选型指南
- 煤炭销售合同协议2026年违约责任
- 党课试题及答案2021
- 《消防产品监督检查》课件
- 六年级下册辩论四项辩论材料
- ACT的正常值及临床意义
- 上海市建筑施工风险管控与隐患排查实施导则
- YDT 4409.3-2023云原生能力成熟度模型 第3部分:架构安全
- DB34∕T 2396-2015 高速公路桥梁伸缩缝维修与更换技术规程
- GB/T 15568-2024通用型片状模塑料(SMC)
- 《JJG196-2006-常用玻璃量器检定规程》
- 员工雇佣合同
- 5.1.4 识读识读预焙阳极铝电解槽的结构图
- (高清版)DZT 0426-2023 固体矿产地质调查规范(1:50000)
评论
0/150
提交评论