- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 TMS320C6000的软件开发环境 4.1 软件开发流程和开发工具 4.2 集成开发环境CCS(code composer studio) 4.3 实时操作系统DSP/BIOS 4.1 TMS320C6000 软件开发流程和开发工具 4.1.1 TMS320C6000软件开发流程 4.1.2 连接命令文件(.cmd)的编写 4.1.3 C语言编程常见问题 4.1.4 汇编代码结构 4.1.5 线性汇编语言结构 4.1.6 C语言和线性汇编语言的混合编程 (1)准备工作:7个需要复制的文件 说明 兰色的3个文件是一个最小的C应用程序项目中必须和至少包含的 软件开发流程和开发工具 C/C++ compiler:.c?.asm 将ANSI C或C++语言编写的程序转换为面向DSP的汇编代码 直接利用高级语言实现DSP软件的初步设计,缩短开发周期 Assembly optimizer: .sa ?.asm 允许开发者编写线性汇编代码而无需考虑流水线结构和寄存器分配,它可以自动分配寄存器以及利用循环优化将线性汇编转化为利用软件流水线的高度并行汇编代码 Assembler: .asm? .obj 将汇编代码翻译成DSP可以执行的机器语言 Linker: .obj ?.out 将目标文件组合成一个单独的可执行目标模块。当它创建可执行模块时,分配段到目标系统所配置的内存,重新分配符号和段到最终地址,并且解决未定义符号的外部引用的问题。 其他工具 (1)文档管理器(Archiver): 管理一组文件,把这组文件放入一个称为库的文档文件内; Archiver管理的库称为宏库或目标库,目标库作为连接器的输入 (2) 建库工具(Library-build Utility) Ti不仅提供了标准的ANSI C运行支持库,而且还提供了运行支持库的源码rts.src。目的是使用户可以按照自己的编译选项生成符合用户系统要求的运行支持库 (3)十六进制转换工具(Hex Conversion Utility) 用于将Ti的COFF格式转换为编程器支持的其他格式 (4)交叉引用列表(Cross-reference Lister) 列出了目标文件中所有的符号以及它们在文件中的定义和引用情况。 4.1.2连接命令文件(.cmd)的编写 最为重要;由用户自己编写。 首先了解3个基础知识 1.C6000的存储器映射 2. C6000编译器的C环境实现和COFF文件格式 3. 连接器linker 的使用 TMS320C6713存储器映射 2. C6000编译器的C环境实现和COFF文件格式 汇编器产生的目标文件是一种模块化的文件格式-COFF格式(Common Object File Format)。 表1 C编译器产生的默认代码段和数据 C 程序内用#pragma CODE_SECTION定义用户自定义的代码段 用#pragma DATA_SECTION定义用户自定义的数据段 #pragma DATA_SECTION (GlobalBuf, “sect_sb”) //数组GlobalBuf放在sect_sb段中 #pragma DATA_ALIGN (GlobalBuf, 4) //数组首地址按4字节对齐 int far GlobalBuf[2048]; //使用关键字far定义数组GlobalBuf #pragma CODE_SECTION (Func1, “sect_sb”) //函数Func1的代码放在sect_sb段中 void Func1 (int a, int b) { …. } 3. 连接器的使用 (1) 连接器的输入文件是浮动地址目标(*.obj),产生的输出文件是可执行目标文件(*.out)和连接过程结果说明文件(*.map) (2) 在连接过程中,连接器把所有目标文件中的同名段合并,并按照用户的连接命令文件(.cmd)给各个段分配地址,最后生成可执行的.out 文件。 (3) 对于C程序,系统复位和数据初始化都必须基于C的运行环境(建立堆栈、变量初始化、调用main函数等,即是c_int00() 函数完成的任务)。要得到C运行库的支持,C程序必须和C运行库rtsxxxx.lib连接,在CCS中只要将库文件加入到项目中即可 4. 连接器命令文件(.cmd) 用户需在.cmd文件内说明系统的存储器配置以及程序和数据的具体存放地址。 然后, .cmd文件作为连接器的一个命令参数输入连接器。具体过程由连接器完成。 最简单的MEMORY和SECTIONS的语法 MEMORY { 存储器空间名:o=十六进制存储器起始地址 l=十六进制存储器长度 } SE
文档评论(0)