《DSP存储空间的分配问题教程文件.doc》由会员分享,可在线阅读,更多相关《DSP存储空间的分配问题教程文件.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。DSP存储空间的分配问题-在DSP的开发过程中,开发者难免会遇到DSP芯片内部存储器和片外扩展存储器的配置等问题。本文以TMS320C54x系列DSP为例,讨论DSP存储空间的分配问题。存储器空间C54x系列DSP存储器分为三个独立选择的空间程序、数据和I/O,其中程序存储器存放待执行的指令和执行中所用的系数(常数),可使用片内或片外的RAM、ROM或EPROM等来构成;数据存储器存放指令执行中产生的数据,可使用片内或片外的RAM和ROM来构成。I/O存储器存放与映象外围接口相关的数据,也可以作为附加的
2、数据存储空间使用。这三个空间的寻址范围取决于DSP芯片地址线数目。例如,C54x系列DSP从C548开始,芯片有23根地址线,具有8M字节存储空间寻址能力。C54x通过包含在处理器工作方式的状态寄存器(PMST)中的3个状态位,选择片内存储器作为程序空间或数据空间。这3个状态位是:(1)MP/MC位。MP/MC=0,则片内ROM安排到程序空间;MP/MC=1,则片内ROM不安排到程序空间。(2)OVLY位。OVLY=1,则片内RAM安排到程序和数据空间;OVLY=0,则片内RAM只安排到数据存储空间。(3)DROM位。当DROM=1,则部分片内ROM安排到数据空间;DROM=0,则片内ROM不
3、安排到数据空间。程序设计者可根据不同的需求,相应的配置这3个位,使系统的存储空间满足应用要求。同时,为了扩展C54x系列DSP的寻址空间,还增加了一个额外的存储器映像寄存器程序计数器扩展寄存器XPC,以及6条寻址扩展程序空间的指令。以TMS320C5410为例,它的程序空间分成128页面,每页64K字。该64K字程序空间分为两部分:一部分是公共的32K字,另一部分是各自独立的32K字。公共存储器为所有页面共享,每个页面独立的32K字存储器只能按指定的页面号寻址,这个页面号由XPC寄存器设定。C54x系列的程序空间、数据空间和I/O空间的配置方式图略(详见电子产品世界2003.1)。C5410片
4、内有64Kx16bit的RAM,16Kx16bit的ROM,其中64KRAM分为4x2K字的双寻址RAM(DARAM)和7x8K字的单寻址RAM(SARAM)。编写cmd文件TI公司新的汇编器和链接器创建的目标文件采用一种COFF(通用目标文件格式),该目标文件格式更利于模块化编程,为管理代码段和目标系统存储器提供了强有力和灵活的编程方法。读者可以通过编写链接命令文件(.cmd文件)将链接信息放在一个文件中,以便在多次使用同样的链接信息时调用。在命令文件中使用两个十分有用的伪指令MEMORY和SECTIONS,来指定实际应用中的存储器结构和进行地址的映射。Memory用来指定目标存储器结构,S
5、ECTIONS用来控制段的构成与地址分配。需要说明的是:(1)COFF文件格式在用汇编语言或高级语言编程时使用基于代码块和数据块的概念,而不是一条条命令或一个个数据。(2)代码生成工具中,除编译器和链接器外,TI还提供了可将C语言编译为汇编语言程序的C编译器。查看段的分配及使用情况在cmd文件中包括各种各样的链接器选项,每种选项代表不同的含义。其中,使用-m选项可以创建一个扩展名为.map的链接器(存储器)分配映射文件。其语法为-mfilename(文件名)链接器的map文件描述以下内容:*存储器结构*输入和输出段的定位*在重新定位后外部符号的地址通过map文件可以查看各段的分配情况,包括段的
6、起始地址,使用的字节数等。配合cmd文件的使用,可确定各个段的使用情况,从而保证程序的正常运行和最小的空间使用。VisualLinker可视化链接器TI公司出品的DSP软件开发环境CCS还提供了一种可视化生成存储器配置文件的工具:VisualLinker可视化链接器。如果程序原来包含了一个链接器命令文件(.cmd文件),则当创建可视化链接文件的时候,原来cmd文件中的内存配置仍然会被使用。如果读者想修改内存配置,双击.rcp文件就会在CCS中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件。重复上面的步骤,直到出现满意的结果。结语不
7、同的DSP芯片内集成的存储器大小各异,但其配置方式是类似的。读者可通过查阅DSP芯片的数据手册,了解芯片内部存储空间大小。在实际的配置过程中,可根据开发程序的实际代码,正确的划分程序和数据空间中各段的大小,使其空间配置达到最优。存储器空间C54x系列DSP存储器分为三个独立选择的空间程序、数据和I/O,其中程序存储器存放待执行的指令和执行中所用的系数(常数),可使用片内或片外的RAM、ROM或EPROM等来构成;数据存储器存放指令执行中产生的数据,可使用片内或片外的RAM和ROM来构成。I/O存储器存放与映象外围接口相关的数据,也可以作为附加的数据存储空间使用。这三个空间的寻址范围取决于DSP
8、芯片地址线数目。例如,C54x系列DSP从C548开始,芯片有23根地址线,具有8M字节存储空间寻址能力。C54x通过包含在处理器工作方式的状态寄存器(PMST)中的3个状态位,选择片内存储器作为程序空间或数据空间。这3个状态位是:(1)MP/MC位。MP/MC=0,则片内ROM安排到程序空间;MP/MC=1,则片内ROM不安排到程序空间。(2)OVLY位。OVLY=1,则片内RAM安排到程序和数据空间;OVLY=0,则片内RAM只安排到数据存储空间。(3)DROM位。当DROM=1,则部分片内ROM安排到数据空间;DROM=0,则片内ROM不安排到数据空间。程序设计者可根据不同的需求,相应的
9、配置这3个位,使系统的存储空间满足应用要求。同时,为了扩展C54x系列DSP的寻址空间,还增加了一个额外的存储器映像寄存器程序计数器扩展寄存器XPC,以及6条寻址扩展程序空间的指令。以TMS320C5410为例,它的程序空间分成128页面,每页64K字。该64K字程序空间分为两部分:一部分是公共的32K字,另一部分是各自独立的32K字。公共存储器为所有页面共享,每个页面独立的32K字存储器只能按指定的页面号寻址,这个页面号由XPC寄存器设定。C54x系列的程序空间、数据空间和I/O空间的配置方式图略(详见电子产品世界2003.1)。C5410片内有64Kx16bit的RAM,16Kx16bit
10、的ROM,其中64KRAM分为4x2K字的双寻址RAM(DARAM)和7x8K字的单寻址RAM(SARAM)。编写cmd文件TI公司新的汇编器和链接器创建的目标文件采用一种COFF(通用目标文件格式),该目标文件格式更利于模块化编程,为管理代码段和目标系统存储器提供了强有力和灵活的编程方法。读者可以通过编写链接命令文件(.cmd文件)将链接信息放在一个文件中,以便在多次使用同样的链接信息时调用。在命令文件中使用两个十分有用的伪指令MEMORY和SECTIONS,来指定实际应用中的存储器结构和进行地址的映射。Memory用来指定目标存储器结构,SECTIONS用来控制段的构成与地址分配。需要说明
11、的是:(1)COFF文件格式在用汇编语言或高级语言编程时使用基于代码块和数据块的概念,而不是一条条命令或一个个数据。(2)代码生成工具中,除编译器和链接器外,TI还提供了可将C语言编译为汇编语言程序的C编译器。查看段的分配及使用情况在cmd文件中包括各种各样的链接器选项,每种选项代表不同的含义。其中,使用-m选项可以创建一个扩展名为.map的链接器(存储器)分配映射文件。其语法为-mfilename(文件名)链接器的map文件描述以下内容:*存储器结构*输入和输出段的定位*在重新定位后外部符号的地址通过map文件可以查看各段的分配情况,包括段的起始地址,使用的字节数等。配合cmd文件的使用,可
12、确定各个段的使用情况,从而保证程序的正常运行和最小的空间使用。VisualLinker可视化链接器TI公司出品的DSP软件开发环境CCS还提供了一种可视化生成存储器配置文件的工具:VisualLinker可视化链接器。如果程序原来包含了一个链接器命令文件(.cmd文件),则当创建可视化链接文件的时候,原来cmd文件中的内存配置仍然会被使用。如果读者想修改内存配置,双击.rcp文件就会在CCS中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件。重复上面的步骤,直到出现满意的结果。结语不同的DSP芯片内集成的存储器大小各异,但其配置方式
13、是类似的。读者可通过查阅DSP芯片的数据手册,了解芯片内部存储空间大小。在实际的配置过程中,可根据开发程序的实际代码,正确的划分程序和数据空间中各段的大小,使其空间配置达到最优。通过SPI接口协议实现DSP与其它设备的通信2006-5-2110:07:05摘要:介绍了SPI通信协议,给出了将TI公司生产的TMS320C5402DSP用于SPI协议通信的串口配置方法和接口电路设计,同时给出了串口McBSP的配置程序。关键词:多通道缓冲串行口McBSPTMS320C5402PD780308SPIDSP1引言随着信息技术革命的深入和计算机技术的飞速发展,DSP技术也正以极快的速度被应用到科技和国民经
14、济的各信领域。在很多工程开发设计中,由于要求实现单片DSP与单片DSP、多片DSP芯片以及及其它处理芯片之间的通信,因此,怎样更高效、更便捷的实现这些通信,已成为广大DSP应用者首先要解决的一个问题。本文根据笔者在工程应用和调试方面用TI的DSPTMS320C5402与NEC的PD780308单片机进行通信的经验,介绍并讨论了将TMS320C5402DSP的多通道缓冲串行口McBSP(Multi-channelBufferedSerialPort)配置为SPI模式(即时钟停止模式),从而实现DSP与其它单片处理器之间的通信设计方法同时给出了实现方法的部分程序代码。2多通道缓冲串行口McBSP多
15、通道缓冲串行口McBSP的功能是提供器件内外数据的串行交换。同以前的串口相比,McBSP串口具有相当大的灵活性。表1给出了有关TMS320C5402的McBSP管脚说明。其中串口接收、发送时钟和同步帧信号既可由外部设备提供,又可由内部时钟发生器提供,从而大大的提高了通信的灵活性。表1TMS320C5402的有关McBSP管脚说明管脚说明说明DR数据输入端DX数据输出端CLKR接收数据位时钟CLKX发送数据位时钟FSR接收数据帧时钟FSX发送数据帧时钟CLKS外部提供的采样率发生器时钟源3SPI协议中的McBSP时钟停止模式SPI协议是以主从方式工作的,这种模式通常有一个主设备和一个或多个从设备
16、,其接口包括以下四种信号:(1)串行数据输入(也称为主进从出,或MISO);(2)串行数据输出(也称为主出从进,或MOSI);(3)串行移位时钟(也称为SCK);(4)从使能信号(也称为SS)。图1为设备的SPI接口示意图。该接口在工作时,主设备通过提供移位时钟和从使能信号来控制信息的流动。从使能信号是一个可选的高低电平,它可以激活从设备(在没有时钟提供的情况下)的串行输入和输出。在没有专门的从使能信号的情况下,主从设备之间的通信则由移位时钟的有无来决定,在这种连接方式下,从设备必须自始至终保持激活状态,而且从设备只能是一个,不能为多个。TMS320C5402提供的时钟停止模式可用于SPI协议
17、通信,当McBSP被配置为时钟停止模式时,发送器和接收器在内部是同步的,即可将发送数据帧时钟(FSX)用作从使能(即SS),而将发送数据位时钟(CLKX)用作SPI协议中SCK。由于收数据位时钟(CLKR)和接收数据帧时钟(FSR)在内部与FSX和CLKX是相连的,因此,该管脚不能用于SPI模式。当McBSP被配置为一个主设备时,传送输出信号(BDX)被用作SPI协议的MOSI信号,而接收输入信号(BDR)则被用作MISO信号。图2所示为McBSP用作主设备时的SPI接口示意图。同样地,当McBSP被配置为一个从设备时,BDX被用作MISO信号,BDR则被用作MOSI信号。图3为McBSP用作
18、从设备的SPI接口示意图。当TMS320C5402的McBSP被用于时钟停止模式时,寄存器SPCR1的CLKSTP位域和引脚配置寄存器的CLKXP位的配置如表2所列。表2时钟停止模式配置CLKSTPCLKXP说明0XX不可用时钟停止模式。时钟被激活用于非SPI模式100时钟开始于上升沿(无延迟)110时钟开始于上升沿(有延迟)101时钟开始于下降沿(无延迟)111时钟开始于下降沿(有延迟)4其它有关寄存器的配置为了更好地掌握和了解McBSP作为SPI设备时的有关寄存器配置,现以McBSP作为SPI从设备来介绍有关McBSP的其它有关寄存器的配置,若McBSP做为SPI主设备,则相关配置正好相反
19、。当McBSP作为SPI从设备时,主设备外部产生主时钟。CLKX引脚和FSX引脚必须被设置为输入。由于CLKX引脚和CLKR信号在内部相连接,因而传送和接收回路均由外部主时钟计时(CLKX)。同时,由于FSX引脚和FSR信号也已在内部连接,因此,CLKR引脚和FSR引脚不再需要外部信号的连接。尽管CLKX信号由主设备外部产生且与McBSP同步,但是,McBSP的采样率发生器仍然必须正确启动SPI从设备,同时,采样率发生器还应被设置为最大速率(CPU时钟速率的一半)。另外,内部采样率时钟常被用来同步McBSP逻辑和外部主时钟以及从使能信号。每次传送时,McBSP一般在从使能信号的上升沿进行FSX
20、输入。也就是说,在每次传送的开始,主设备必须维护使能信号,而在每次传送完成后,则必须消除从使能信号。在两次传送之间,从使能信号不能一直保持为高电平。对正确的SPI从设备而言,McBSP的数据延迟参数必须设置为0,在这种运行模式中,设置值为1或2没有定义。配置McBSP为从设备所需的寄存器位值如表3所列。表3SPI操作模式下的寄存器位值表位域值功能描述寄存器CLKXM0配置BCLKX引脚为输入PCRCLKSM1由CPU时钟产生的采样率时钟SRGR2CLKGDV1为采样率时钟选择2的划分因素SRGR1FSXM0配置BFSX引脚为输入PCRFSGM0对每个包传送,BFSX信号被激活SRGR2FSXP
21、1配置BFSX引脚为活动低电平PCRXDATDLY0为SPI从设备运行,必须为0XCR2RDATDLY0为SPI从设备运行,必须为0RCR25程序设计下面是有关TMS320C5402器件的McBSP各个控制寄存器的配置,该配置程序笔者在实践中已经过测试,并已成功运用在了某工程设计中。VoidMcBSP1_Config(void)offlset=0x0000;SPCR11=0x1800;;配置串口时钟停止模式CLKSTP=10offlset=0x0001;SPCR21=0x0222;offlset=0x0005;SRGR11=0x00FA;offlset=0x0007;SRGR21=0xa00F
22、;offlset=0x0002;RCR11=0x0040;;接收一帧含一字,一字含16位offlset=0x0003;RCR21=0x0044;接收数据无延迟RDATDLY=00offlset=0x0004;XCR11=0x0040;发送一帧含一字,一字含16位offlset=0x0005;XCR21=0x0044;发送数据无延迟XDATDLY=00offlset=0x000E;PCR1=0x000;;发送时钟由外部时钟驱动,CLKX为输入脚CLKX=0,发送时钟极性CLKXP=0,发送帧同步极性FSXP=1offlset=0x0008;MCR11=0x0001;offlset=0x0009;
23、MCR21=0x0001;offlset=0x000C;XCERA1=0x0003;offlset=0x0001;SPCR21=0x0262;offlset=0x0001;SPCR21=0x0263;offlset=0x0000;SPCR11=0x1801;;接收器有效offlset=0x0001;SPCR21=0x02e3;发送器有效Return;6结束语串行SPI通信协议是一种标准的通信协议,很多场合下都采用这种机制,文中将DSP作为从设备的目的是时钟可由主设备来提供,因此不用再专门去调试时钟,这种方式在开发中比较方便。TMS320VC5402通用IO资源及其应用作者:邹志革,黄声华转贴自
24、:电子工程师点击数:148更新时间:2006-5-6【字体:A】摘要:介绍了TMS320VC54x的通用IO口资源:XF和并详细介绍了VC5402及该系列中后续芯片独有的通用IO口资源HPI8和McBSP。最后,以一个具体的看门狗电路为例,给出了这些通用IO口资源的使用方法。关键词:数字信号处理器,TMS320VC5402,通用IO口,看门狗1引言随着DSP芯片及相关技术的发展,DSP得到了人们的日益关注和越来越广泛的应用。德州仪器(TI)公司推出的TMS320VC54x系列具有高性能、低功耗等优良性能,受到用户的欢迎,已广泛地应用于有线和无线通讯、仪器仪表、雷达、图像处理、工业控制、语音处理
25、等领域。TMS320VC5402是C5000系列中性价比较高的一颗芯片。独特的6总线哈佛结构,使其能够6条流水线同时工作,工作频率达到100MHz。VC5402除了使用VC54x系列中常用的通用IO口(GeneralPurposeIO,简称GPIO)外,还为用户提供了多个可选的GPIO:HPI8和McBSP。本文将介绍VC5402的GPIO资源,并结合实例,介绍其典型用法。2VC54x系列的GPIOGPIO,即指能为外围设备提供信号输出和从外围设备输入信号到DSP的引脚。这些管脚能通过软件提供多用途的输入和输出信号。所有的VC54x系列提供两个GPIO:和XF。即分支控制输入引脚,被用来监视外
26、围设备的状态。在时间要求苛刻的循环中,在不允许受干扰的情况下,可根据引脚的状态(即外围设备的状态)来决定分支转移的去向,以替代中断。如:XC2,BIO表示如果引脚为低电平,则执行后面的1条双字或2条单字指令;否则,执行2条NOP指令。XF即外部标志输出引脚,它受软件控制,可以用来向外部器件发信号。用SSBX指令可以将ST1的XF位置1,XF脚输出高电平。同理,RSBX指令使XF脚输出低电平。BIO和XF通常被用作异步通信时的握手信号。3HPI-8用在GPIOVC54x系列提供有一个主机接口(HostPortInterface,HPI)。HPI是8位并行口,用来与主设备或主处理器接口。VC540
27、2的HPI8还有特殊的功能,即,当HPI8功能被禁止时(在启动复位时,让HPIENA脚为0),其8位双向数据总线HD可以用作GPIO。有两个存储器映像寄存器来控制HPI8口的GPIO功能,它们是:通用IO控制寄存器(GPIOCR)和通用IO状态寄存器(GPIOSR)。GPIOCR的各个位段的符号如图1所示。该寄存器的TOUT1位是Timer1的输出使能位。当HPI8功能被禁止后,TOUT1位允许或禁止Timer1从HINT脚输出。当系统只有一个定时器时,该位被保留。DIR70控制8个IO口的方向。当DIR70的某位置为1时,GPIOSR的相应位的值输出到该引脚;同理,当某位为0时,相应引脚的逻
28、辑电平被读入到GPIOSR的相应位。注意,当某个HD引脚用作输入功能,对GPIOSR相应位的写操作将不起作用。GPIOSR各位的含义见图2(高8位全部保留)。IO70的某位为0,表示在相应的HD引脚输出低电平,或者相应的HD引脚读入的外部信号为低。IO70的某位为1时,表示在相应的HD引脚输出高电平,或者相应的HD引脚读入的外部信号为高。4McBSP用作GPIOVC5402是VC54x系列中最早引入多通道缓冲串行口(McBSP)的芯片。VC5402及以后的VC54x系列芯片所引入的McBSP功能除了用作一般的BSP外,在两种情况下,其部分串口管脚(CLKX、FSX、DX、CLKR、FSR、DR
29、)还可以被用作GPIO,这两种情况是:(1)相关的串口处在复位状态,即,串口控制寄存器SPCR1、2的(RX)RST位为0;(2)相关的串口被允许用作GPIO,即,管脚控制寄存器PCR的(RX)IOEN位置1。管脚控制寄存器(PCR)给出了McBSP的管脚作为通用IO口时的配置情况,如图3所示。表1给出了具体的配置情况。从表中可以得知,当FS(RX)M0时,FS(RX)选作输入管脚。同理,当FS(RX)M1时,FS(RX)选作输出管脚。当选作输出时,FS(RX)P中储存着将要输出的值。选作输入时,FS(RX)P变成只读位,反映了该引脚信号的高低。CLK(RX)M和CLK(RX)P的工作情况类似
30、于CLK(RX)。当McBSP中具有发送功能的部分引脚被选作GPIO时,PCR中的DXSTAT位的值被送到DX。通常,将DR用作输入,输入值将被保存在PCR中的DRSTAT位。因为CLKS通常用作McBSP的输入,将影响到输入器和输出器的配置。所以,为了将CLKS配置成通用输入口,发送器和接收器都必须复位,而且保证(RX)IOEN1。5实例在一个DSP系统中,“看门狗”电路是必不可少的部分。“看门狗”和DSP的联络信号通常由DSP的GPIO口提供。比较常用的“看门狗”有MAX706和X25043。X25043有很好的Vcc电压监控、可编程看门狗定时器功能,还有4K字节的串行E2PROM。在X2
31、5043内部,有一个状态寄存器,控制该寄存器,就能对X25043的E2PROM进行读或写,并对看门狗超时周期进行设置。图4为DSP和X25043的接口电路。“看门狗”的工作原理是:如果允许看门狗定时器工作,且CS保持低电平的时间长于看门狗超时周期,则RESET变为低电平,CS的下降沿将复位看门狗定时器。因此,将VC5402的外部输出引脚XF和看门狗的CS相连。在VC5402的McBSP用作其它用途及HPI功能未被使用时,可以选用HD作为GPIO,用于和看门狗通讯:设置X25043的寄存器、对X25043的E2PROM写操作和读操作。软件设计思想为:在主程序中的初始化之后,将XF脚拉低。在主程序的最后或者是某一个最重要的中断子程序中将XF拉高。软件6结束语本文详细介绍了TMS320VC5402的通用IO资源,并结合DSP的外围电路“看门狗”给出了这些GPIO的一般使用方法。参考文献1戴明桢,周建江TMS320VC54xDSP结构、原理及应用北京:北京航空航天大学出版社,20012胡乾顺看门狗监控电路X2504345及其应用国外电子元器件,1997(4):3035-
限制150内