您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > DSP与CMD文件的原理
题目:《DSP与CMD文件的原理》姓名:玄德原创阿狸整理玄德:2001LHL@21CN.COM阿狸:190356321@qq.comContents前言....................................................................................................................................................1绪论....................................................................................................................................................11总线——CPU与外设的连接...............................................................................................................22存储器——程序和数据的家..............................................................................................................83MEMORY命令——存储器的声明.......................................................................................................104SECTIONS命令——存储器的分配...................................................................................................165一个完整的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”——这个词起源于英文的“basedon”,或“somethingbased”,被我们大量地引用,以至于令人反胃了——我们美妙、绚烂的语言,现在只剩下“基于”了。笔者水平有限,但保证会用心去写,您会看到很多别处没有的思路和信息,相信会基本打通初学者的任督二脉。本文适用于那些有单片机的开发基础、刚开始学习DSP的初学者。如果你还不知道程序空间,数据空间这些名词,可能就比较困难了。本文包括这样5个部分:第1部分主要介绍总线与程序空间、数据空间这几个概念。这对于你熟练编写CMD文件时很有帮助的。第2部分介绍存储器,这从物理存储器的角度来分析为什么要编写CMD文件。第3部分和第4部分介绍编写CMD文件昀重要的两个命令。第5部分详细分析一个CMD文件。CMD文件是开发DSP芯片的一个难点。如果站在TI公司或者编译器的角度,去考虑问题,对于理解CMD文件会有很大的帮助,从而更快地掌握CMD文件的编写。本文正是按这个思路展开的,如果能够对初学者有一些帮助,将是笔者莫大的荣幸。21总线——CPU与外设的连接在说明CMD文件之前,有必要重新回顾一下总线与空间的概念。CPU是计算机的核心部件.它控制整个计算机的运作并进行运算,要想让一个CPU工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是平时所说的内存。存储器在一台PC机中内存的作用仅次于CPU。离开了内存,性能再好的CPU也无法工作。指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。二进制信息:1000100111011000─89D8H(数据)1000100111011000─MOVAX,BX(程序)CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息的交互:存储单元的地址(地址信息)器件的选择,读或写命令(控制信息)读或写的数据(数据信息)那么CPU是通过什么将地址、数据和控制信息传到存储芯片中的呢?在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。物理上是一根根导线的集合;逻辑上划分为:地址总线、数据总线、控制总线。地址总线CPU是通过地址总线来指定存储单元的。地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N。这样的CPU昀多可以寻找2的N次方个内存单元。3数据总线8位数据总线和16位数据总线CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了CPU和外界的数据传送速度。控制总线CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。内存空间物理上有CPU和外设、加上一套地址总线、数据总线、控制总线就可以组成一个空间。其实,空间这个概念是对硬件资源的一个抽象概括。有了空间的概念,软件编程和硬件就架起了一道桥梁,彼此的交流就有了“共通”语言。当然,正是由于空间这个概念太抽象,不容易理解,才给初学者造成很大麻烦。4抽象成空间就变成这样:所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器;每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间;CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。昀终运行程序的是CPU,我们用汇编编程的时候,必须要从CPU角度考虑问题。对CPU来讲,系统中的所有存储器中的存储单元都处于统一的逻辑存储器中,它的容量受CPU寻址能力的限制。这个逻辑存储器即是我们所说的内存空间。前面我们回顾了一下微机原理里面一些概念。8086采用的事冯诺依曼结构,但对于我们理解空间的概念是有帮助的,下面来讨论一下DSP所使用的哈佛结构。哈佛结构和冯诺依曼结构昀大的区别就是对程序和数据存储的区分,当然也有专业的说上说成是程序空间的数据空间的分开。换个角度,也就是至少有两套总线:1:程序地址总线、程序数据总线(这样说总觉得别扭哈)、程序控制总线;2:数据地址总线、数据数据总线(更别扭了,你理解就好)、数据控制总线。这样做的目的只有一个:提高处理速度。因为这样CPU就能同时读写程序和数据了,数据处理速度提高的不仅仅一倍这么简单。哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的6条总线:程序的地址总线、数据总线和控制总线,数据的地址总线、数据总线与控制总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储5器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。又由于程序和数据存储在两个分开的物理空间中,因此取址和执行能完全重叠。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。cpu程序存储器数据地址数据地址数据存储器分开编址的哈佛结构这种结构是程序存储器和数据存储器分开编址的(SeparateDataMemoryBusesandProgramMemoryBus),还有一种是程序存储器和数据存储器是统一编址的(UnifiedMemoryProgrammingModel)。cpu程序存储器数据地址数据存储器地址数据统一编址的哈佛结构下面通过几个例子来说明这个问题。分别看一下具有代表性的5402、5509、2407、2812这四种芯片的存储器编址方式:5402和2407属于分开编址的哈佛结构;5509和2812属于统一编址的哈佛结构。关于它们的详细信息请参考芯片的数据手册。这里只是把它们的空间分配情况(MemoryMap)粘贴过来。6TMS3205402存储器分配图TMS3205509存储器分配图7TMS3202407存储器分配图TMS3202812存储器分配图82存储器——程序和数据的家在DSP系统中,存在大量的、各式各样的存储器,CMD文件所描述的,就是开发工程师对物理存储器的管理、分配和使用情况。有必要先复习一下存储器的知识。目前的物理存储器,种类繁多,原理、功能、参数、速度各不相同,有PROM、EPROM、EEPROM、FLASH、NANDFLASH、NORFLASH等(ROM类),还有SRAM、DRAM、SDRAM、DDR、DDR2、FIFO等(RAM类)。无论多么复杂,从断电后保存数据的能力来看,只有两类:断电后仍然能够保存数据的叫做非易失性存储器(non-volatile,本文称为ROM类),数据丢失的叫做易失性存储器(本文称为RAM类);ROM类的芯片都是非易失性的,而RAM类都是易失性的。即使同为ROM类或同为RAM类存储器,仍然存在速度、读写方法、功耗、成本等诸多方面的差别。比如SRAM的读写速度,
本文标题:DSP与CMD文件的原理
链接地址:https://www.777doc.com/doc-2147047 .html