对于TMS320F2812的CMD文件的理解探析.doc

对于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????

文档评论(0)

1亿VIP精品文档

相关文档