这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ccs 请教一个ccs 的

共2条 1/1 1 跳转至

ccs 请教一个ccs 的

院士
2006-09-17 18:14:16     打赏
ccs 请教一个ccs 的



关键词: 请教     一个    

院士
2006-12-22 22:43:00     打赏
2楼
1: 不好意思,上次发了个空的请问ccs中,option菜单下面的memory map和cmd文件里面的编写有联系么?

谢谢 2: 没有联系 3: 那应该怎么设置? 4: 谢谢我将memory option的设置改了一下,然后ccs提示说有程序段写到ROM里面了。
怎么改都是这个提示,只好将c5xx的simulator reset,采用默认设置,就可以load了。一直不明白memory option怎么设置。能不能详细指点一下呢?
5: 用默认设置,或者编写cmd指示定位信息 6: 可以提供一些编写cmd的资料么谢谢指教,我只会照着编写一点,至于cmd的编写手册不知道哪里有。可以提供一下么,我的邮箱是zuojuncai@sohu.com 7: 一般example里面有标准的cmd,你可以改改 8: 谢谢 9: 在CCS的目录下有TMS320XXX Assembly Language Tools该文档的linker description一章里有cmd文件的编写说明 10: thx 11: 答谢高人,我说的不对的请指出,呵呵本人在学习中对cmd文件编写的一点理解,希望能和同事们交流一下.

cmd文件是给linker(链接器)使用的,linker根据cmd文件,将一个或多个COFF目标文件连接起来,生成存储器映像文件(.map)和可执行的输出文件(.out).

链接命令文件(cmd)的编写和使用:

其实就是为要写进DSP的文件分配一个存储的空间,一般文件三段: .text段(可执行代码),.data段(初始化的数据段).bass段(保留空间段,未初始化变量).未初始化的段一般存放在RAM中.

主要有2个编写指令:MEMORY 和  SECTIONS.下面举个例子:

a.obj   b.obj          // 第一个输入文件名
-o  prog.out           // 制定输出文件的选项
-m prog.map            // 制定map文件的选项
MEMORY                
{
PAGE 0:  ROM:   origin=1000h,  length=0100h     //程序存储器  名字为ROM,起始地址为1000h,长度为0100h
PAGE 1:  RAM:   origin=0100h,  length=0100h     //数据存储器  位子为RAM, 起始地址为1100h, 长度为0100h
}

SECTIONS
{
.text    :>ROM
.data    :>ROM
.bss     :>ROM
}

syntax:
MEMORY
{
PAGE 0:   name 1[(attr)]:   origin=constant,length=constant
PAGE 1:   name 2[(attr)]:   origin=constant,length=constant
}
MEMORY 规定的是存储器的使用,其中,PAGE对存储器空间加以标记页号最多为255,一般习惯PAGE 0为程序存储器,PAGE 1定为数据存储器.
name   存储器空间名字,  
attr   有4个选项R(可以对存储器读操作)W(可以对存储器进行写操作)X(存储器可以装入可执行的程序代码)I(可以对存储器进行初始化),默认情况为4个功能都具备.
origin 起始地址
length 长度             

SECTIONS
{
name:[property,property,preoperty,...]
name:[property,property,preoperty,...]
name:[property,property,preoperty,...]
}
SECTIONS是对输出段存放的详细说明,它可以有如下功能.
1.定义将输出段加载到存储器中的什么位置举几个例子:
   .text:  load=0x1000           // 将输出段放到一个特定地址
      .text:  load>ROM              // 将输出段放到一个名为ROM的存储区
      .bss:   load>(RW)             // 将输出段定位到属性为R,W的存储区
      .text:  align=0x80            // 将输出段定位到从地址0x80开始 
      .bss:   load=block(0x80)      // 定位到一个n字存储器块的任何一个位置,n为2的幂次
      .text:  PAGE 0                //  定位到PAGE 0
也可以这样.text:>ROM(align(16) PAGE(2))
2. 可以定义为输出段在存储器的什么位置开始运行
syntax:
run=allocation  or  run>allocation
可以为程序分配2个地址,比如一些常用的程序,存在ROM中,而运行的时候在RAM中,这样可以设置一个加载地址,一个运行地址. ,fir:  load=ROM,run=RAM
3. 用它定义输出段由哪些输入段组成
在一般情况下不列出每个输入文件的输入段段名,下面是列出段名的情况:
SECTIONS
{
.text:
{
fi.obj(text)      //来自f1.obj中的.text段    
f2.obj(sec1)             //来自f2.obj文件中的sec1段
f3.obj                   //来自f3.obj的所有段
f4.obj(.text,sec2)   //来自f4.obj文件中的.text段和sec2段
}
}
4. 为输出段定义特殊形式
  type=COPY   type=DSECT
5. 对未初始化空单元指定一个数值
  fill=value
6. 如果没有利用MEMORY和SECTIONS命令,linker按默认的算法来定位输出段:
MEMORY
{
PAGE 0: PROG:  origin=0x0080,length=0xFF00
PAGE 1: DATA:  origin=0x0080,length=0xFF80
}
SECTIONS
{
.text: PAGE=0
.data: PAGE=0
.cinit: PAGE=0
.bss    PAGE=1 12: 请教ccs一个关于.out的问题我在build我的程序时,总是提示我.out not built。
在build option里我都已经设置好了,不知道是什么原因啊??
请高人指点下了。
谢谢啦

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]