- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对于TMS320F2812的CMD文件的理解
1.COFF格式
??? 要谈CMD文件,首先不可避免的要谈下COFF格式,COFF格式是通用目标文件格式(Common Object File Format)的缩写,它是一种流行的二进制可执行文件格式,在DSP里二进制可执行文件包括库文件(.lib)、目标文件(.obj)和最终可执行文件(.out)。详细的COFF格式文件包括段头、可执行代码、初始化数据、可重定位信息、行号入口、符号表、字符串。对于DSP的C语言编程我们只需要了解定义段和给段分配空间即可。采用COFF格式更利于我们对其进行模块化编程,我们可以自由的把哪些段分配到哪些空间。
2.Section
(1)其次,在编写CMD文件得时候要碰到SectionS命令,SectionS命令的英文理解就有区域的意思,我们利用SectionS来将目标文件的代码放到指定的区域中。SectionS目标文件中最小的单位我们称之为块,一个块就是最终在存储器映像中占据连续空间的一段代码或者数据。COFF文件格式默认有三个块:
.text?????? 存放可执行代码;
.data?????? 存放已初始化数据;
.bss??????? 为未初始化数据留下的保留空间。
(2)汇编器对块的处理和设置
未初始化块的设置:
.bss??????? 变量存放空间;
.usect????? 用户自定义的未初始化段;
初始化块的设置:
.text?????? 汇编指令代码
.data?????? 常数数据(比如对变量的初始化数据)
.sect?????? 用户自定义的已初始化段
.asect????? 类似于.sect,多了绝对地址定位功能,一般不用
(3)C语言对块得的设置和处理
未初始化块(data)
.bss??????? 存放全局和静态变量
.ebss?????? 长调用的.bss(超过了64K地址限制)
.stack????? 存放C语言的栈
.sysmem???? 存放C语言的堆
.esysmem????长调用的.sysmem(超过了64K地址限制)
初始化块
.text?????? 可执行代码和常数(program)
.switch???? switch语句产生的常数表格(program/低64K数据空间)
.pinit????? Tables for global constructors (C++)(program)
.cinit????? 用来存放对全局和静态变量的初始化常数值(program)
.const????? 全局和静态的const变量初始化值和字符串常数,(data)
.econst???? 长.const(可定位到任何地方)(data)
(4)C语言自定义块
#pragma DATA_SECTION(函数名或者全局变量名,“用户自定义在数据空间的段名”);
#pragma CODE_SECTION(函数名或者全局变量名,“用户自定义在程序空间的段名”);
必须注意:不能在函数体内声明,必须在定义和使用前声明。#pragma可以阻止对未调用的函数的优化(优化我也不太理解)。
3.2812的CMD文件
(1)在CMD文件中有两个伪指令MEMORY和SECTIONS,其中SECTIONS的用法在上面已经有了介绍,就是将生成的代码或者数据分配到指定的存储器的映射空间去。哪里是映射空间呢,这个就是由MEMORY这个伪指令来定义的,它的作用就是对整个存储器进行分区,然后给每个存储器进行命名,DSP只认物理地址(在我的第一篇日志里已经详细阐述了)。下面先写下这两个伪指令的语法格式:
MEMORY {
?PAGE 0: name1[(attr)]origin=constant, length=constant;?PAGE n: name1[(attr)]origin=constant, length=constant;}
PAGE n中页号的最大值是255,每个PAGE代表一个完全独立得地址空间,通常n=0为数据空间,n=1为程序空间,name是对存储区间命名,attr规定了存储器得属性,R-读,W-写,一般我们不写的??,origin,起始地址,length,该存储区间的大小。
SECTIONS{
??????? Name:[property,property,…]??????? Name:[property,property,…]??????? Name:[property,property,…]}
Name:源程序中的段名。如.text,Property:段的属性参数。一个段的属性参数包括下列五种:
(1)Load allocation,由它定义将输出段加载到存储器中的什么位置。语法:load: allocation????
您可能关注的文档
- 农业生态学研究.doc
- 诺亚泰GPS数据处理说明书研究.doc
- 20151203德州市人民医院心电方案介绍.doc
- 20160924第09章爆破安全介绍.doc
- 1320010724虚拟内存调度算法介绍.doc
- 盘锦市2011中考物理研究.doc
- 计算机习题剖析.docx
- 201520162017电大国际公法全题库介绍.doc
- 《雷电颂》优秀教学_答辩.ppt
- 爱丽丝梦游仙境阅读引导讲解.pptx
- 江西省2024年度审(认)定的林木良种名录.docx
- 黑龙江省草品种名录(2024年).pdf
- Unit3TheArtofPaintingVocabulary单词分级讲解课件-高中英语牛津译林版(2020)选择性.pptx
- Unit2MoralsandVirtuesDiscoveringUsefulStructures课件高中英语人教版(1).pptx
- Unit1Art词形变化课件高中英语人教版选择性_2.pptx
- Unit6ReadingThegrasshopperandtheant第一课时课件上海牛津版七年级上册.pptx
- StarterUnit1Hello!SectionBProject(14)课件人教版(2024)七年级英语上册.pptx
- 第一至三章导游服务导游员道德修养.pptx
- Unit3Lesson14课件冀教版七年级英语下册.pptx
- 专题五发展全过程人民民主保障人民当家作主地位(复习课件)-2023年中考道德与法治二轮复习时政与热点综合复习课.pptx
文档评论(0)