打印

TI DSP--cmd文件

[复制链接]
876|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
追逐浪花|  楼主 | 2015-7-20 21:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cmd文件是使用TI芯片很重要的一步,了解它,能对整个软件系统的分布,对芯片本身资源的使用有一个更清晰的了解,从而达到优化系统的目的。CMD文件一句话来表达:定义芯片内部硬件资源和分配管理软件代码的一个配置文件。因此从cmd文件的组织上你能看到两个部分:1定义硬件资源,2管理软件代码

(非原创,总结与网络)
用户通过编写CMD 文件,来管理、分配系统中的所有物理存储器和地址空间。CMD文件,全名连接命令文件(linkercommand files),以后缀.cmd结尾。

CMD文件其实就是 用户的“声明” ,包括两方面的内容:
1、用户声明的整个系统里的存储器资源。无论是DSP 芯片自带的,还是用户外扩的,凡是可以 使用的、需要用到的存储器和空间,用户都要一一声明出来:有哪些存储器,它们的位置和大小。如果有些资源根本用不到,可以视为不存在,不必列出来;列出来也无所谓。
2、用户如何分配这些存储器资源,即关于资源分配情况的声明。用户根据自己的需要,结合芯片的要求,把各 种数据分配到适当种类、适当特点、适当长度的存储器区域

编写CMD文件
例子
/**********************************************************************************************/

-stack 200h                  /* #1  */

/**********************************************************************************************/

MEMORY                  /* #2 声明存储空间 */

{

PAGE 0 ://PAGE 0程序存储空间

VECS  : origin = 0000h , length =0040h  /* 中断向量   */  /* #3 */

PROG  : origin = 0100h , length =7F00h  /* 片上 FLASH  */  /* #4 */



PAGE 1 ://PAGE1 数据存储空间

B2   : origin = 0060h , length =0020h  /* DARAM B2 块 */  /* #5 */

B0B1  : origin = 0200h , length =0200h  /* DARAM B0 块 */  /* #6 */

SARAM : origin = 0800h , length = 0800h /* SARAM 块  */  /* #7  */

ExtSRAM : origin = 8000h , length = 8000h /* 外部存储器  */  /* #8  */

}

/**********************************************************************************************/

SECTIONS                  /* #9 分配段到存储空间 */

{

.vectors :  > VECS  PAGE 0  /* 中断向量表  */  /* #10 */.vectors代表输出段, >VECS同样可以写成load=VECS或VECS,和load平级的还有run,run定义输出段将会在哪里运行,语法run=VECS或run>VECS,当只出现一个run或load时表示地址相同

.text  :  > PROG  PAGE 0   /* 代码    */  /* #11 */

.cinit  :  > PROG  PAGE 0          /* #12 */



.bss  : > SARAM PAGE 1          /* #13*/

这个其实是.bss load = SARAM PAGE1

                   {

*.(bss)

                    }的简写。表示输入端和输出段同名

.stack  :  > B0B1  PAGE 1          /* #14 */



.extdata :  > ExtSRAM PAGE 1          /* #15 */ }

/**********************************************************************************************/


相关帖子

沙发
追逐浪花|  楼主 | 2015-7-20 21:07 | 只看该作者
1 资源清单
如上文所述,CMD 文件包含两大内容,首先就是存储器的资源清单,或者说,系统中 (电路板上)可用的存储器资源。
TI 规定,CMD文件的资源清单用关键字“MEMORY”作为标识,具体内容写在后面的大括号{ } 里面。如下面的形式:
MEMORY

{

PAGE 0:

xxx  : org = 0x1234 ,  length = 0x5678  /*This is my house.*/

PAGE 1:

aaa  : org = 0x1357 ,  length = 0x2468  /*My home here.*/

}

其中,MEMORY,PAGE n,org,length,包括冒号、等于号、花括号,都是关键字符,必不可少。
PAGE n表示把可用的资源空间再划分成几个大块,最多允许分256块,从PAGE0到PAGE 255。
很多关键字,还允许有别的写法,比 如“org”可以写为“o” ,“length”可以写为“len” 。这些规定和其他细节,可以去查阅TI 的pdf 文档。

使用特权

评论回复
板凳
追逐浪花|  楼主 | 2015-7-20 21:07 | 只看该作者
  资源的分配
首 先,SECTIONS,PAGE,包括花括号、冒号,都是关键字符。注意:SECTIONS字符是复数形式。在花括号内,每一行最左侧的“.vectors” 、“.text” 、“.cinit” 、“.bss” 、“.stack”这些名称,包括小数点,都是TI 默认的关键字符,只有“.extdata”是用户自己定义的名称。另外,“VECS”、“PROG” 、“SARAM” 、“B0B1” 、“ExtSRAM”必须是
在MEMORY 里声明过的资源名称。除此以外,有些字符也允许有别的写法,参见“AssemblyLanguage Tools User's Guide.pdf” ,汇编语言工具指南。这些东西,就是前文所说,对存储器资源有要求的“状 况”!前面声明的存储器资源,就是要分配给这些“状况”使用的!
段分为两类:已初始化段 (Initialized Sections)和未初始化段(Uninitialized Sections)。以下是常用的一些段(不全):
“.vectors” , 表示“中断向量段”
“.text” ,   编译后生成的二进制指令代码段
“.cinit”段,“对全局变量和静态变量初始化的常数” 。
“.bss” ,“保存全局变量和静态变量”,它属于“未初始化的”段,
“.stack”,堆栈,它属于“未初始化的”段,定位在数据空间。
“.extdata”,用户自定义的段, 属于“未初始化的”


注意:

1.主要有PAGE0PAGE1PAGE0上的memory可以overlayPAGE1 and so on
2. originlength都是22bit的常数,在以前的一些dsp由于它的地址总线是16bit的,所以相应的originlength只能为16bit的常数。
3. Sectionsname开始,name就是定义的输出段。4. load的格式有:     load=allocation   or   allocation   or       >allocation
5. run的格式有:run =     allocation   or    run>allocation


具体cmd文件的使用ti有详细的文档说明,不再重复。
请参考TMS320C28x Assembly Language Tools。

使用特权

评论回复
地板
zhangmangui| | 2015-7-20 22:37 | 只看该作者
非常感谢楼主分享  辛苦了

使用特权

评论回复
5
verilog90| | 2015-7-21 13:04 | 只看该作者
好像ti有份文档是专门介绍cmd文件格式的,楼主有没有,发一个啊

使用特权

评论回复
6
baimiaocun2015| | 2015-7-21 22:29 | 只看该作者
用户声明的整个系统里的存储器资源。无论是DSP 芯片自带的,还是用户外扩的,凡是可以 使用的、需要用到的存储器和空间,用户都要一一声明出来:有哪些存储器,它们的位置和大小。如果有些资源根本用不到,可以视为不存在,不必列出来;列出来也无所谓。

使用特权

评论回复
7
可可球| | 2015-7-29 10:51 | 只看该作者
CMD是定义芯片内部硬件资源和分配管理软件代码的一个配置文件

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

256

帖子

1

粉丝