首页 TI DSP芯片应用编程重要知识点之CMD文件

TI DSP芯片应用编程重要知识点之CMD文件

举报
开通vip

TI DSP芯片应用编程重要知识点之CMD文件 TI DSP芯片应用编程重要知识点——.cmd 文件 Larry 2013-12-03 一、.cmd文件简介 .cmd文件的专业名称叫做链接器配置文件,文件中存放有链接器的配置信息,一般简称为命令文件。其 主要作用是告诉链接程序怎样计算ROM和RAM地址和分配空间。不同的芯片有不同大小的ROM和RAM,存放 用户程序的地方也不尽相同,因此要根据芯片具体的存储空间对.cmd文件进行修改以满足用户应用程序的要 求。.cmd文件主要有两部分——MEMORY和SECTIONS。 MEMORY /*将目标系统的存储...

TI DSP芯片应用编程重要知识点之CMD文件
TI DSP芯片应用编程重要知识点——.cmd 文件 Larry 2013-12-03 一、.cmd文件简介 .cmd文件的专业名称叫做链接器配置文件,文件中存放有链接器的配置信息,一般简称为命令文件。其 主要作用是告诉链接程序怎样计算ROM和RAM地址和分配空间。不同的芯片有不同大小的ROM和RAM,存放 用户程序的地方也不尽相同,因此要根据芯片具体的存储空间对.cmd文件进行修改以满足用户应用程序的要 求。.cmd文件主要有两部分——MEMORY和SECTIONS。 MEMORY /*将目标系统的存储器划分为多个存储区间*/ { PAGE 0: name01[(attr)] : origin = constant, length = constant … name0n[(attr)] : origin = constant, length = constant PAGE 1: name11[(attr)] : origin = constant, length = constant … name1n[(attr)] : origin = constant, length = constant } SECTIONS /*将用户应用程序中定义的各种段装载到MEMORY划分的存储区间。*/ { .text: {所有.text输入段名} load=加载地址 run =运行地址 .data: {所有.data输入段名} load=加载地址 run =运行地址 .bss: {所有.bss输入段名} load=加载地址 run =运行地址 .other: {所有.other输入段名} load=加载地址 run =运行地址 } 注:PAGE关键字对独立的存储空间进行标记,页号n的最大值为255。实际应用中一般分为两页,PAGE 0为程序空间,PAGE 1为数据空间。 namexx—— 存储区间的名字,不超过8个字符。不同的PAGE上可以出现相同的名字(最好不用,以免混淆) ,一个PAGE内不许有相同的namexx。 attr—— 存储区间的属性标识。R表示可读,W表示可写,X表示区间可以装入可执行代码,I表示存储区间可 以进行初始化。若无属性代码,表示存储区间具有上述的四种属性(一般都选择这种写法)。 以.text段的属性语句为例,“{所有.text输入段名}”用来说明连接器输出段.text由哪些子目标文件的段 组成。例如: SECTIONS { .text: { file1.obj(.text) file2(.text) file3(.text, cinit) } } 指明输出段.text要链接file1.obj的.text和file2的.text 还有file3的.text和.cinit。在CCS的SECTIONS里通常只写一个中间没有 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 的“{ }”,表示所有目标文件的相应段。 接下来说明“load=加载地址 run =运行地址”。链接器在目标存储器中为每个输出段都分配两个地址:一个是加载地址,一个是运行地址。通常情 况下两个地址是相同的,可以认为输出段只有一个地址,这时可以不加“run =运行地址”这条语句;但有时需要将两个地址分开,比如将程序加载到FLASH,然后放到RAM中高速运行,这种情 况就要分别配置运行地址和加载地址,例如: .const : {略} load = PROG run = 0x0800 /*常量加载在程序存储区,配置为在RAM里调用(TI DSP 2407)*/ “load=加载地址”有几种写法。首先“load”关键字可以省略,“=”可以写成“>”;“加载地址”可以是:地址值、 存储区间的名字、PAGE关键字等。“run =运行地址”中的“ = ”也可以用“>”。其它的简化写法就没有了,大家不要乱用。 CCS对命令文件进行了简化,不用指定输入链接器的目标文件,CCS会自动默认处理。 例:example_link_command_file.cmd /*要链接的子目标文件*/ file.obj //子目标文件名1 file2.obj //子目标文件名2 file3.obj //子目标文件名3 -c /*告诉链接器在运行时自动初始化变量*/ -o hello.out /*指定链接完成后输出的.out文件名*/ -m hello.map /*指定链接完成后输出的.map文件名*/ -stack 100 /*指定栈大小为100 words*/ -l rts2xx.lib /*指定应用程序要链接的库文件为rts2xx.lib*/ MEMORY { PAGE 0: VECT: origin = 0x8000, length = 0x040 PAGE 0: PROG: origin = 0x8040, length = 0x6000 PAGE 1: DATA: origin = 0x8000, length = 0x400 } SECTIONS { .vectors: > VECT, PAGE 0 .text: > PROG, PAGE 0 .bss : > DATA, PAGE 1 .const: > DATA, PAGE 1 } other_command_file.cmd /*本命令文件要调用的其它命令文件。必须放到本命令文件的末 行,若放在开头,链接器将不会从被调用的其它命令文件返回本命令 文件*/ 二、.cmd文件的编写 (一)、COFF格式 通用目标文件格式(Common Object File Format)是一种流行的二进制可执行文件格式。二进制可执行文 件包括库文件(lib),目标文件(obj)和最终可执行文件(out)。Windows95和NT4.0之后操作系统的二进制 文件格式(PE)就是在COFF格式的基础上进一步扩充而来的。采用COFF更有利于模块化编程,程序员可以自 由决定把哪些代码归属到哪些段,然后加以不同的处理。 详细的COFF文件格式包括段头、可执行代码、初始化数据、可重定位信息、行号入口、符号表、字符串 表等,这些是编写操作系统和编译器的人员所关心问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。对于DSP的C语言编程,只需要了解如何定义段,如 何给段分配存储空间就可以了。 段(section)是目标文件中最小的代码块。代码块是在物理存储器中占据连续空间的一段代码或数据。C OFF目标文件包含三个默认的段:.text .data .bss 。 (二)、汇编器对汇编语言块的处理 1. 未初始化块 .bss 变量存放空间 .usect 用户自定义的未初始化段 2. 初始化块 .text 汇编指令代码 .data 常数数据(比如对变量的初始化数据) .sect 用户自定义的已初始化段 .asect 类似.sect,只是多了绝对地址定位功能,一般不用 (三)、C语言的段 1. 未初始化块(data) .bss 存放全局和静态变量 .ebss 长调用的.bss(超过了64K地址限制) .stack 存放C语言的栈 .sysmem 存放C语言的堆 .esysmem 长调用的.sysmem(超过了64K地址限制) 2. 初始化块 .text 可执行代码和常数(program) .switch switch语句产生的常数 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 (program/低64K数据空间) .pinit Tables for global constructors (C++)(program) .cinit 用来存放对全局和静态变量初始化的常数值(program) .const 全局和静态的const变量初始化值和字符串常数(data)。由关键字const限定的全局变量(c onst限定的局部变量不产生)的初始化值,和出现在表达式(做指针使用,用来初始化字符串数 组变量不产生)中的字符串常数,另外数组和结构体是局部变量时,其初始值会产生.const段, 而全局时不产生。 .econst 长.const(可定位到任何地方)(data) (四)、自定义段(C语言) #pragma DATA_SECTION( 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 名或全局变量名, "用户自定义在数据空间的段名"); #pragma CODE_SECTION(函数名或全局变量名, "用户自定义在程序空间的段名"); 注:1. 不能在函数体内声明。2. 必须在函数名或全局变量名定义和使用前声明。 3. #pragma可以阻止对未调用函数的优化。 (五)TI CCS3.3 IDE 编译器生成的DSP程序段: 1. 已初始化的段 .cinit(或.pinit)——包含程序中的变量初值表和常量。 .const——包含字符串常量、显式初始化的全局和静态变量(用const修饰)的声明和初值。 .econst——包含字符串常量、显式初始化并且存放在far内存中的全局和静态变量(即用far const修饰 或使用大内存模型的变量)的声明和初值。 .switch——包含switch语句的跳转地址表。 .text——包含可执行代码和常量。 2. 未初始化的段 .bss——为全局和静态变量保留存储空间的段。程序启动时,c引导程序从.cinit段(该段可以在ROM中) 拷贝出数据,然后存放在.bss段中。 .ebss——为声明为far(c语言或使用大内存模式时)的全局和静态变量保留存储空间的段。程序启动时, c引导程序从.cinit段(该段可以在ROM中)拷贝出数据,然后存放在.ebss段中。 .stack——该段用于c语言系统的栈。该段的存储空间用于向函数传递 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 和为局部变量分配空间。 .system—— 该段存储空间用作动态内存分配,由malloc函数使用。若程序中没用到malloc函数,则该段空 间的大小为0。 .esystem——该段存储空间用作动态内存分配,由far malloc函数使用。若程序中没用到far malloc函数,则该段空间的大小为0。
本文档为【TI DSP芯片应用编程重要知识点之CMD文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_178002
暂无简介~
格式:pdf
大小:96KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2013-12-22
浏览量:19