CCS 中CMD文件的原理

上传人:zw****58 文档编号:46741393 上传时间:2018-06-27 格式:PDF 页数:12 大小:219.40KB
返回 下载 相关 举报
CCS 中CMD文件的原理_第1页
第1页 / 共12页
CCS 中CMD文件的原理_第2页
第2页 / 共12页
CCS 中CMD文件的原理_第3页
第3页 / 共12页
CCS 中CMD文件的原理_第4页
第4页 / 共12页
CCS 中CMD文件的原理_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《CCS 中CMD文件的原理》由会员分享,可在线阅读,更多相关《CCS 中CMD文件的原理(12页珍藏版)》请在金锄头文库上搜索。

1、CMD 文件的原理 玄德(网名)于 2009 年 3 月一、前言 开发 TI 公司的 DSP 芯片,肯定要编写或者修改 CMD 文件,这是在单片机开发中 没有碰到过的新事物,也是学习 DSP 的难点。面对里面种类繁多、名称各异、来历不明、 作用不清、功能千差万别的存储器、区域和变量、寄存器,初学者往往都会一头雾水。甚 至很多人已经把项目成功地完成了,对 CMD 文件仍然是一知半解。 笔者也经历了极度困惑的过程,曾经大量地看书,下载资料,分析所能搜集到的 CMD 源文件。可惜的是,无论是 TI 公司的原始文档,还是网上的资料,或者 BBS 的帖子, 都没有透彻地说明 CMD 文件的原理和使用,只

2、说“然” ,要靠自己去体会“所以然” , 去“悟” 。 终于有一天,我悟到了,也许只是“一些” 。现在,我把自己的“一些”写 下来。我将细致而通俗地说明 CMD 文件的原理,给您“鱼” ,更给您“渔” ,一步步 地引导象我当初一样的初学者。我将以 TI 的 2407 为对象展开说明,对于 TI 公司其他型 号、其他系列的 DSP,道理是完全相同的。 用时下学术界最最最流行的语式, 叫做“基 于 2407”这个词起源于英文的“based on” ,或“something based” ,被我们大量地 引用,以至于令人反胃了我们美妙、绚烂的语言,现在只剩下“基于”了。 笔者水平有限,但保证会用心去

3、写,您会看到很多别处没有的思路和信息,相信会 基本打通初学者的任督二脉。本文适用于那些有单片机的开发基础、刚开始学习 DSP 的 初学者。如果你还不知道程序空间,数据空间这些名词,可能就比较困难了。 二、CMD 文件的起源 在 DSP 系统中,存在大量的、各式各样的存储器,CMD 文件所描述的,就是开发 工程师对物理存储器的管理、分配和使用情况。 有必要先复习一下存储器的知识。目前的物理存储器,种类繁多,原理、功能、参 数、 速度各不相同, 有 PROM、 EPROM、 EEPROM、 FLASH、 NAND FLASH、 NOR FLASH 等(ROM 类) ,还有 SRAM、DRAM、SD

4、RAM、DDR、DDR2、FIFO 等(RAM 类) 。无论多么复杂,从断电后保存数据的能力来看,只有两类:断电后仍然能够保存数 据的叫做非易失性存储器(non-volatile,本文称为 ROM 类) ,数据丢失的叫做易失性存 储器(本文称为 RAM 类) ; ROM 类的芯片都是非易失性的, 而 RAM 类都是易失性 的。 即使同为 ROM 类或同为 RAM 类存储器,仍然存在速度、读写方法、功耗、成本等 诸多方面的差别。 比如 SRAM 的读写速度, 从过去的 15ns、 12ns, 提高到现在的 8ns、 10ns, FLASH 的读取速度从 120ns、75ns,到现在的 40ns、

5、30ns。 有没有人这样想过:使用存储 器的人,希望存在这样的区别吗? 或者说,理想的存储器,应当是什么样的? 我们使用存储器时,如果没有人为地改变它,就希望里面的数据永远不要变,即使 断了电也要完好地保存;如果里面的内容是我不需要的或者不能用的,我自然就会给它写 入有用的内容,比如初始化。理想的存储器就应当永远保存数据,无论掉电与否,而且, 希望读写速度为每秒无穷多字节,是 0ns,而不是什么 8ns,10ns。不是吗? 然而,人类实现存储器芯片的技术,还没有达到理想情况,所以才会有这么多类别。 “非易失”和“速度”就是一对典型的矛盾。非易失的 ROM 类存储器,可以“永远”地 保存数据,但

6、读写速度却很低,比如 30ns;RAM 的速度(8ns)一般都比 ROM(30ns) 快得多,但却不能掉电保存。这是很无奈的现实。假如有那么一天,ROM 类的读写速度 和 RAM 一样快,或者 RAM 也可以掉电保存数据,就不存在易失和非易失的区别了,那 将是革命性的进步。那时,智能芯片和智能系统的设计将会有很大的变化,编写 CMD 文 件就会很简单, 甚至不需要了。 已经有芯片厂家做了一些这方面的工作, 比如把电池和 RAM 结合起来, 就是一个能掉电保存的 RAM。 它既可以作为传统的 ROM 使用, 又可以当 RAM 使用。但这显然只是一个暂时、折中的方法,其原理、成本、体积、容量还不如

7、人意,不能 算是“革命性”的进步。 我们平时在用到存储器的时候,要考虑哪些因素呢? 首先必须确认,在你的使用场合,是要永久保存数据,还是暂时保存?这关系到选 择非易失性,还是易失性存储器的大问题,是首要的问题。在某些场合,如果必须永远地 保存数据,即使希望速度快一些,也只能选择非易失的 ROM 类存储器,而把速度问题放 在其次,或者另外想办法解决;另外一些场合,却要把速度放在第一位,只要在通电期间 能够始终保存数据,就够了,当然就要选择 RAM 类的存储器了。 这两种情况我们都会遇到:程序代码一般都要存储在 ROM 类存储器中,否则,从 设备生产开始,储存、运输,一直到用户手里,要必备不间断电

8、源,还要保证不发生断电 的意外;程序运行的时候,为了提高速度,就必须在 RAM 中运行,试想想,如果你的 MP4 放电影一停一顿的,谁还会用它看电影呢?所以 ROM 和 RAM 都是必不可少的,各有各 的用途,而且,出于功能、参数、速度、读写方法、功耗、工艺、成本等方面的考虑,往 往要同时使用不止一种存储器。 事实上,TI 在设计 DSP 芯片时,也遇到同样的问题,TI 考虑的情况要比我们更多, 更复杂。要知道,设计芯片的人是最牛 X 的,开发工程师只是跟在人家后面,在人家规定 的框框里亦步亦趋。翻开 DSP 的 PDF 文档,找到 memory map 就会看到,芯片上集成了 形形色色的存储

9、器: FLASH、ROM、BROM、OTP ROM,SRAM、SARAM、DARAM、 FIFO 等。就 2407 和 2812 而言,如果是做个流水灯之类的小东东,DSP 芯片加晶体加电 源就可以了,片上集成的 ROM 和 RAM,在仿真状态下已经足够用了,烧写并脱离仿真器 运行也足够。所以,它们的最小系统不需要外扩任何存储器。但也只能做简单的东东,往 往还需要外扩一些 ROM 和/或 RAM 存储器,才能委以大用。 (顺便说一句,DSP 的最 小系统,要比 8951 芯片的最小系统大得多。 ) 千万不要被这些存储器的名称所迷惑!翻来覆去,其实就是两大类:非易失和易失。 初学者往往忽略了这一

10、点。 两大类!记住这一点,CMD 文件就是以这两类存储器为主轴, 然后展开的。 DSP 芯片的片内存储器, 只要没有被 TI 占用, 用户都可以全权支配。 TI 设计了 “CMD 文件”这种与用户的接口形式,用户通过编写 CMD 文件,来管理、分配系统中的所有物 理存储器和地址空间。CMD 文件其实就是用户的“声明” ,包括两方面的内容: 1、用户声明的整个系统里的存储器资源。无论是 DSP 芯片自带的,还是用户外扩 的,凡是可以使用的、需要用到的存储器和空间,用户都要一一声明出来:有哪些存储器, 它们的位置和大小。如果有些资源根本用不到,可以视为不存在,不必列出来;列出来也 无所谓。 2、用

11、户如何分配这些存储器资源,即关于资源分配情况的声明。用户根据自己的 需要,结合芯片的要求,把各种数据分配到适当种类、适当特点、适当长度的存储器区域, 这是编写 CMD 文件的重点。 用户编写完自己的程序以后,要经过开发环境(编译器)的安排和解释(即编译) , 转换为芯片可以识别的机器码,最后下载到芯片中运行。CMD 文件就是在编译源程序、 生成机器码的过程中,发挥作用的,它作为用户的命令或要求,交给开发环境(编译器) 去执行:就这么分配! 下面将从这两个方面入手,详细说明如何编写 CMD 文件。 三、编写 CMD 文件之资源清单 如上文所述,CMD 文件包含两大内容,首先就是存储器的资源清单,

12、或者说,系 统中(电路板上)可用的存储器资源。 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 表示把可用的资源空间再划分成几个大块,最多允许分

13、 256 块,从 PAGE 0 到 PAGE 255。 如果把 MEMORY 比作图书馆, PAGE n 就是其中的 “社科类” 、“工 程类” 、 “外文类”等。大家都习惯于把 PAGE 0 作为程序空间,把 PAGE 1 作为数据空间。如果 你很好奇,也可以试试别的数字。凡智能芯片,都离不开这两种“空间” ,大名鼎鼎的冯 诺 依曼结构和哈佛结构,都是建立在程序空间和数据空间两种结构的基础上,我们面对的 DSP 也是如此。只要学习过单片机,就很容易理解。如果你构思出第三种结构,恭喜您, 您将与这二位齐名了。 CMD 文件中还可以写上注释,用“/*”和“*/”包围起来,但不允许用“/” ,这一

14、 点和 C 语言不同。 上面的例子,仅仅就是个“例子” ,不针对任何特定的芯片。带注释的语句有两行, 每一行都是一项声明,表示在程序空间或数据空间下,再细分更小的块,好比是“社科类” 又分了几个书架。比如 xxx : org = 0x1234 , length = 0x5678 表示在程序空间 PAGE 0 里面,划分出一个命名为 xxx 的小块空间,起始地址从存储单元 0x1234 开始, 总长度为 0x5678 个存储单元, 地址和长度通常都以十六进制数表示。 所 以, xxx 空间的实际地址范围从 0x1234 开始,到 0x1234 + 0x5678 1 = 0x68AB 结束(起始

15、地址加长度再减一) ,这一段连续的存储区域,就属于 xxx 小块了。上面的例子中,PAGE 0 和 PGAE 1 各包含了只有一个“小块” ,用户可以根据自己的情况,按照同样的格式任 意 增加。在支持多个 CMD 文件的开发环境里,某个或某几个 CMD 文件中, “小块”的数 量 可以为 0,也就是说,关键字 PAGE 0 或 PAGE 1 下面,可以是空白的。但不允许所有的 CMD 文件的同一空间都是空白。另外,没有资料提到过“小块”数量上限的限制,需要去 查阅文档或咨询 TI 公司。 很多关键字,还允许有别的写法,比如“org”可以写为“o” , “length”可以写为 “len” 。这

16、些规定和其他细节,可以去查阅 TI 的 pdf 文档,一般叫做“xxxxx Assembly Language Tools Users Guide.pdf” ,汇编语言工具指南,xxxxx 是芯片的型号或系列。但 这个文档不适合初学者。实践证明,至少对于 C2000 系列的 2407 和 2812 而言,存储单元的单位是“字 word” ,即 16bit。但 TI 的文档却说是“字节 byte” ,应当是 TI 写错了。 要特别注意以下几点: 1、必须在 DSP 芯片的空间分配的架构体系以内,分配所有的存储器。这里举两个 例子: a、对于 2407,程序空间和数据空间都是从地址 0x0000 到 0xFFFF,最大数 值是四个 F,共 64K 字范围。所以,2407 的 CMD 文件中不能出现五位数的地址,也不 允 许任何一个小块空间的地址范围覆盖到 64K 以外的区域,因为 2407 根本就无法控制这些 区域,或者说不能访问、无法寻址。要注意,起始地址和长度不要算错了。2812 也有同样 的问题。 b、2407 的数据空间里,0x0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号