题 目: 《DSP 与 CMD 文件的原理》(修改版 1.2)
姓 名: 玄德原创 阿狸整理
玄 德: 2001LHL@21CN.COM
阿 狸: 190356321@qq.com
Contents
前 言...........................................................................................................................1
绪 论...........................................................................................................................1
1 总线——CPU 与外设的连接 ....................................................................................2
2 存储器——程序和数据的家 ...................................................................................8
3 MEMORY 命令——存储器的声明 ............................................................................10
4 SECTIONS 命令——存储器的分配 ........................................................................16
5 一个完整的 CMD 文件 .............................................................................................22
前 言
这里只是整理了玄德(网名)同学的《CMD 文件的原理》和一些网页博客上关于 CMD 文
件的资料,一些内容还参考了王爽老师的《汇编语言》。但是本文并不是一次简单的复制粘
贴,我在最后一部分加入了自己的一些感悟和理解。这里只是出于一种对 DSP 和 CMD 文件的
兴趣!强烈建议读者阅读原文,希望不会引起读者朋友的拍板砖。
由于DSP编程所用的CMD文件,没有秘密可言。好经验应该大家共享,我们自己也是这么
学来的。作者愿意公开本文的电子文档。
版权声明如下:
(1)读者可以任意拷贝、修改本文的内容,但不可以篡改作者(当然是玄德不是我)。
(2)未经作者许可,不得出版或大量印发本文。
(3)如果你有好的修改建议,或者也写了一些心得体会,欢迎联系我,与大家共享。
1
绪 论
开发 TI 公司的 DSP 芯片,肯定要编写或者修改 CMD 文件,这是在单片机开发中没有
碰到过的新事物,也是学习 DSP 的难点。很多人不太了解 CMD 文件。 其实,CMD 是一
个行命令批处理文件, 原本是 DOS 环境下的程序格式相当于现在的 exe 一样, 现在随着
系统的越来越智能,DOS 对我们来说越来越陌生。 这也是我们不了解他的原因。其实网上
有很多病毒的专杀工具,是用 DOS 语言编写的。由于 DOS 的执行效率比较高,因此会受
很多电脑高手的亲睐。CMD 的专业名称叫链接器配置文件,是存放链接器的配置信息的,
我们简称为命令文件,其中比较关键的就是 MEMORY 和 SECTIONS 两个伪指令的使用,
常常令人困惑,系统出现的问题也经常与它们的不当使用有关。CMD 文件是与存储器息息
相关的,学习 CMD 文件一定要了解存储器。但面对种类繁多、名称各异、来历不明、作用
不清、功能千差万别的存储器、区域和变量、寄存器,初学者往往都会一头雾水。甚至很多
人已经把项目成功地完成了,对 CMD 文件仍然是一知半解。笔者也经历了极度困惑的过程,
曾经大量地看书,下载资料,分析所能搜集到的 CMD 源文件。可惜的是,无论是 TI 公司
的原始文档,还是网上的资料,或者 BBS 的帖子,都没有透彻地说明 CMD 文件的原理和
使用,只说“然”,要靠自己去体会“所以然”,去“悟”。终于有一天,我悟到了,也许只是“一
些”。现在,我把自己的“一些”写下来。我将细致而通俗地说明 CMD 文件的原理,给您“鱼”,
更给您“渔”,一步步地引导象我当初一样的初学者。
我将以 TI 的 24x、28x、54x、55x 系列为对象展开说明,对于 TI 公司其他型号、其他
系列的 DSP,道理是完全相同的。用时下学术界最最最流行的语式, 叫做“基于 2407”——
这个词起源于英文的“based on”,或 “something based”,被我们大量地引用,以至于令人反胃
了——我们美妙、绚烂的语言,现在只剩下“基于”了。笔者水平有限,但保证会用心去写,
您会看到很多别处没有的思路和信息,相信会基本打通初学者的任督二脉。本文适用于那些
有单片机的开发基础、刚开始学习 DSP 的初学者。如果你还不知道程序空间,数据空间这
些名词,可能就比较困难了。
本文包括这样 5 个部分:
第 1 部分主要介绍总线与程序空间、数据空间这几个概念。这对于你熟练编写 CMD 文
件时很有帮助的。
第 2 部分介绍存储器,这从物理存储器的角度来分析为什么要编写 CMD 文件。
第 3 部分和第 4 部分介绍编写 CMD 文件最重要的两个命令。
第 5 部分详细分析一个 CMD 文件。
CMD 文件是开发 DSP 芯片的一个难点。如果站在 TI 公司或者编译器的角度,去考虑
问题,对于理解 CMD 文件会有很大的帮助,从而更快地掌握 CMD 文件的编写。本文正是
按这个思路展开的,如果能够对初学者有一些帮助,将是笔者莫大的荣幸。