当前位置:首页 >> 信息与通信 >>

TMS320F2812的CMD文件配置详解---伪指令的补充


1 命令文件的组成 命令文件的开头部分是要链接的各个子目标文件的名字,这样链接器就可以根据子目标文件名,将相应的目标文件链接成一个 文件; 接下来就是链接器的操作指令, 这些指令用来配置链接器, 接下来就是 MEMORY 和 SECTIONS 两个伪指令的相关语句, MEMORY, 用来配置目标存储器, SECTIONS 用来指定段的存放位置。 结合下面的典型 DOS 环境的命令

文件 link.cmd 必须大写。 来做一下说明: file.obj file2.obj file3.obj //子目标文件名 1 //子目标文件名 2 //子目标文件名 3
DSP 交流网 DSP 学 习第一 论坛 D SP 技术应 用与推 广平台 DSP 开发 服务平 台 9 ]! }( @" c9 y$ C: l ; i ! q& d+ G) Y' t0 N+ i' v) f" c * F

- o prog.out //连接器操作指令,用来指定输出文件 - m prog.m MEMORY { 略 } SECTIONS { 略 } otherlink.cmd
DSP 交流网 D SP 学习第 一论坛 D SP 技术 应用与 推广平 台 DSP 开 发服务 平台 3 D 8 { 6 M5 t/ W, `$ s: r " c1 }2 s- a+ [

//用来指定 MAP 文件

www.hell odsp.com; T3 H2 u7 r 3 b

本命令文件 link.cmd 要调用的 otherlink.cmd 等其他命令文件,则文件的名字要放到本命令文件最后一行,因为放开头的话,链 接器是不会从被调用的其他命令文件中返回到本命令文件。
DSP 交流网 D SP 学习第 一论坛 D SP 技术 应用与 推广平 台 DSP 开 发服务 平台 6 L6 z 5 ~* l # u; k) J; r

2 MEMORY 伪指令

0 A% S3 C" U % Z% H& ]. ]0 g

SECTIONS 指令就可以根据这个模型来安排各个段的位置, MEMORY 指令可以定义目 MEMORY 用来建立目标存储器的模型, 标系统的各种类型的存储器及容量。MEMORY 的语法如下: MEMORY { PAGE 0 : name1[(attr)] : origin = constant,length = constant name1n[(attr)] : origin = constant,length = constant PAGE 1 : name2[(attr)] : origin = constant,length = constant name2n[(attr)] : origin = constant,length = constant
www.hell odsp.com/ _5 S9 ^0 B C 4 w; P- @ $ b 0 k( ` 9 u$ s) D 7 W+ [ www.hellodsp.com, o% H 2 z& M # x" ] 0Y P$ G5 h7 ~+ y" @

www.hell ods p.c om6 D* G2 u( V, B( T. x3 T% a8 h5 r

PAGE n : namen[(attr)] : origin = constant,length = constant namenn[(attr)] : origin = constant,length = constant }
1 R) I+ N0 O8 r+ l/ D+ c% S3 Z 2 q , [4 m4 ]0 @" P- J7 }, u

6 R6 `+ V0 \$ h9 V' S; I+ o! K% w

PAGE 关键词对独立的存储空间进行标记,页号 n 的最大值为 255,实际应用中一般分为两页,PAGE0 程序存储器和 PAGE1 数 据存储器。 ,一个 PAGE 内不许有 name 存储区间的名字,不超过 8 个字符,不同的 PAGE 上可以出现相同的名字(最好不用,免的搞混) 相同的 name。 attr 的属性标识, R 表示可读; 可写 X 表示区间可以装入可执行代码; 表示存储器可以进行初始话, 为 W I 什么属性代码也不写, 表示存储区间具有上述的四种属性,基本上我们都选择这种写法。 origin:略。 length:略。
DSP 交流网 D SP 学习第 一论坛 D SP 技术 应用与 推广平 台 DSP 开 发服务 平台 : H/ Z" F4 x2 N # E: E# w 6 V1 s ; x3 T, _, Z : [* I& a

下面是经常用的 2407 的简单写法大家参考,程序从 0x060 开始,要避开加密位,不从 0x0044 开始更可靠一点,此例中的同名 的页可以只写第一个,其后省略,但写上至少安全一点: MEMORY { PAGE 0: VECS: origin = 0x0000, length 0x40 PAGE 0: PROG: origin = 0x0060, length 0x6000
DSP 交流网 DSP 学 习第一 论坛 D SP 技术应 用与推 广平台 DSP 开发 服务平 台 3 L! m5 u) U7 ?% }- T : E0 b4 G0 Z# `4 r 8 d, r & D

PAGE 1: B0 : origin = 0x200, length 0x100 PAGE 1: B1 : origin = 0x300, length 0x100

8 Q' r( A( d. V8 T8 D

PAGE 1: DATA: origin = 0x0860, length 0x0780 }
: q/ {( Q5 e& k4 o6 n" ^

3 SECTIONS 伪指令

) Q: b* u2 E: { 7 K( H1 k8 z' }

SECTIONS 指令的语法如下: SECTIONS {
www.hell odsp.com0 R o# W; | b! t www.hellods p.c om' F 5 G) P0 D' @ / `& S

.text: {所有.text 输入段名} load=加载地址 run =运行地址

DSP 交流网

D SP 学习第 一论坛 DSP 技 术应用 与推广 平台 D SP 开发服 务平台 . z- D 8 R 7 } 6 | . X( x$ w

.data: {所有.data 输入段名} load=加载地址 run =运行地址 .bss: {所有.bss 输入段名} load=加载地址 run =运行地址
9 {) {" s' O" M3 S2 r8 V

.other: {所有.other 输入段名} load=加载地址 run =运行地址 }
3 K4 h1 L: N- j" ?* Z # v

SECTIONS 必须用大写字母,其后的大括号里是输出段的说明性语句,每一个输出段的说明都是从段名开始,段名之后是如何 对输入段进行组织和给段分配存储器的参数说明: 以.text 段的属性语句为例,“{所有.text 输入段名}”这段内容用来说明连接器输出段的.text 段由哪些子目标文件的段组成,举例如 下
/p x7 m$ ~- [" `

SECTIONS { .text:{ file1.obj(.text) file2(.text) file3(.text,cinit)}略 }
; A1 n2 m- m2 u. O DSP 交流网 DSP 学 习第一 论坛 D SP 技术应 用与推 广平台 DSP 开发 服务平 台 8 V0 J& r' E/ ~! E3 x" w! e; N* w

指明输出段.text 要链接 file1.obj 的.text 和 file2 的.text 还有 file3 的.text 和.cinit。在 CCS 的 SECTIONS 里通常只写一个中间 没有内容的“{ }”就表示所有的目标文件的相应段 接下来说明“load=加载地址 run =运行地址”链接器为每个输出段都在目标存储器里分配两个地址:一个是加载地址,一个是运 行地址。通常情况下两个地址是相同的,可以认为输出段只有一个地址,这时就可以不加“run =运行地址”这条语句了;但有时 需要将两个地址分开,比如将程序加载到 FLASH,然后放到 RAM 中高速运行,这就用到了运行地址和加载地址的分别配置了, 如下例所示:
/ h* q, L- G" y7 j

.const :{略} load = PROG run = 0x0800

( c9 A6 I" A# n

N $ `' ^/ R

常量加载在程序存储区,配置为在 RAM 里调用。

DSP 交流网

DSP 学 习第一 论坛 D SP 技术应 用与推 广平台 D SP 开发 服务平 台 ! L1 F

| ( J% S: J 3 t

“load=加载地址”的几种写法需要说明一下,首先“load”关键字可以省略,“=”可以写成“>”, “加载地址”可以是:地址值、存储区 间的名字、PAGE 关键词等,所以大家见到“.text:{ } > 0x0080”这样的语句可千万不要奇怪。“run =运行地址”中的“ = ”可以用“>”, 其它的简化写法就没有了。大家不要乱用。
7 C # V# r # y1 j & _9 E

另外,在上传一个 DSP2812 的标准 CMD 文件,可以根据自己的要求进行修改使用。


相关文章:
TMS320F2812的CMD文件配置详解---伪指令的补充
接下来就是链接器的操作指令, 这些指令用来配置链接器, 接下来就是 MEMORY 和 SECTIONS 两个伪指令的相关语句, MEMORY, 用来配置目标存储器, SECTIONS 用来指定段...
TMS320F2812的CMD文件配置详解
TMS320F2812的CMD文件配置详解_信息与通信_工程科技_专业资料。DSP2812的CMD文件...MEMORY 伪指令的一般语法为: MEMORY{ PAGE0: name[(attr)]: origin=constant...
TMS320F2812的CMD文件配置详解
TMS320F2812 的 CMD 文件配置详解 文件配置详解 2008-09-04 19:10 DSP 芯片...在命令文件中使用两个十分有用的伪指令 MEMORY 和 SECTIONS, , 来指定实际应用...
TMS320F2812的CMD文件配置详解
TMS320F2812的CMD文件配置详解 隐藏>> DSP 芯片以其极高的精度,性能及运算速度...在命令文 件中使用两个十分有用的伪指令 MEMORY 和 SECTIONS,来指定实际应用中...
对于TMS320F2812的CMD文件的理解
对于TMS320F2812的CMD文件的理解_计算机硬件及网络_...(2)汇编器对块的处理和设置 未初始化块的设置: ...下面先写 下这两个伪指令的语法格式: MEMORY { ...
CMD文件配置详解
TMS320F2812 的 CMD 文件配置详解 2008-09-04 19:10 DSP 芯片以其极高的...在命令文件中 使用两个十分有用的伪指令 MEMORY 和 SECTIONS,来指定实际应用中...
dsp2812的CMD文件详解
这些指令用来配置链接器,接下来就是 MEMORY 和 SECTIONS 两个伪指令的相关语句,...TMS320F2812的CMD文件配... 21页 5下载券 TI dsp CMD 文件详解 17页 5下载...
DSP入门之--CMD文件配置详解
在命令文件中使用两个十分有用的伪指令 MEMORY 和 SECTIONS,来指定实际应用中的...SCI 时的.cmd 文件的分配,已经在 TMS320F2812 仿真调试中得到了很好的应用。...
[原]TMS320F28335项目开发记录6_28335之cmd文件详解
[原]TMS320F28335项目开发记录6_28335之cmd文件详解...已初始化段: .text——C 语言编译生成的汇编指令...DSP2812_CMD文件详解 4页 1下载券 DSP的CMD文件...
DSP应用技术复习题
简要说明引导程序的启动过程 15、简要说明 TMS320F2812DSP 定时器的基本工作原理...简要说明 24、CMD 命令文件中经常用到的分配存储器的伪指令有哪两个,分别解释...
更多相关标签:
tms320f2812 | tms320f2812中文手册 | tms320f2812封装库 | tms320f2812原理图 | tms320f2812官方例程 | tms320f2812例程 | tms320f2812引脚图 | tms320f2812视频教程 |