- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
知识要点:本章介绍了TMS320C54x软件开发流程、汇编语言程序的编写、编译和链接过程,重点介绍了COFF段的一般概念、汇编器和链接器处理段的方法以及程序的重定位方法等。;4.1 TMS320C54x软件开发流程; ; 如果源程序是C/C++语言,需调用’C54x的C编译器将其编译成汇编语言,并送入’C54x的汇编器进行汇编。对于用汇编语言编写的程序则直接送给汇编器进行汇编,汇编后产生COFF格式的目标文件,再用链接器进行链接,生成在’C54x可执行的COFF格式的目标代码,并利用调试工具对可执行的目标代码??行调试。; 对’C54x应用程序的开发提供以下几个开发调试工具:
◇ C/汇编语言源码调试器与软件仿真器、评价模块、软件开发系统、软件模拟器等开发工具配合使用。
◇ 软件仿真模拟器 ◇集成开发环境CCS
◇ DSK ◇ 软件开发系统SWDS
◇可扩展的开发系统仿真器(XDS510)
◇评价模块(EVM板)
;4.2 汇编语言程序的编辑、汇编和链接过程; ① 编辑
利用各种文本编辑器,如记事本、WORD、EDIT等,可编写汇编语言源程序。
② 汇编
当汇编语言源程序编写好以后,可利用’C54x的汇编器ASM500,对一个或多个源程序进行汇编,生成.lst文件和.obj文件。
常用汇编命令为:
asm500 %1 -s -l -x;大家学习辛苦了,还是要坚持; ③ 链接
链接就是利用’C54x的链接器LNK500,根据链接器命令文件(.cmd)对已汇编过的一个或多个目标文件(.obj)进行链接,生成存储器映像文件(.map)和输出文件(.out)。
常用链接命令为
lnk500 %1.cmd; ④ 调试
对输出文件(.out)调试可以采用多种手段,现介绍如下:
◆软件仿真器进行调试
◆硬件仿真器进行调试
◆评价模块进行调试
⑤ 固化用户程序
调试完成后,利用HEX500格式转换器对ROM编程,或对EPROM编程,最后安装到用户的的应用系统中。;4.3 COFF的一般概念;4.3.1 COFF文件的基本单元; 所有的COFF目标文件都包含以下3种形式段:
◆ .text段,通常包含可执行代码;
◆ .data段,通常包含初始化数据;
◆ .bss段,通常为未初始化变量保留存储空间。
此外,汇编器和链接器可以建立、命名和链接自定义段。这种自定义段是程序员自已定义的段,使用起来与.data、.text、及.bss段类似。它的好处是在目标文件中与.data、.text、及.bss分开汇编,链接时作为一个单独部分分配到存储器中。; COFF目标文件有以下两种基本类型的段。
① 初始化段
初始化段中包含有数据或程序代码。包括:
◆ .text段是已初始化段;
◆ .data段是已初始化段;
◆ .sect汇编器伪指令建立的自定义段也是已初始化段。; ② 未初始化段
在存储空间中,它为未初始化数据保留存储空间。包括:
◆ .bss段未初始化段;
◆ .usect汇编命令建立的自定义段也是未初始化段。; 链接器的一个任务就是分配存储单元,即把各个段重新定位到目标存储器中,如下图: ; 链接器的功能之一是将目标文件中的段重新定位到目标系统的存储器中,该功能称为定位或分配。
大多数系统都包含有几种存储器,通过对各个段的重新定位,可以使目标存储器得到更加有效的利用。;4.3.2 汇编器对段的处理; ① 未初始化段
.bss和.usect命令生成未初始化段。未初始化段就是’C54x存储器中的保留空间,通常将它们定位到RAM区。在目标文件中,这些段没有确切的内容;在程序运行时,可以利用这些存储空间存放变量。
这两条命令句法如下:
.bss 符号,字数
.usect “段名”,字数; 符号—对应于保留的存储空间第一个字的变量名称,可让其它段引用,也可以定义为全局符号;
字数—表示在.bss段或标有名字的段中保留多少个存储单元;
段名—程序员为自定义未初始化段起的名字。
② 已初始化段
.text、.data和.sect命令生成已初始化段。已初始化段中包含有可执行代码或初始化数据。这些段中的内容都在目标文件中,当加载程序时再放到’C54x的存储器中。每一个已初始化段都是可以重新定位的,并且可以引
原创力文档


文档评论(0)