共2条
1/1 1 跳转至页
问
答 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: 没有联系 答 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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |