摘要:简要介绍了MOTOROLA公司的24位定点数字信号处理器DSP56362的并行引导过程和特点。并结合实际,提出了一种双引导模式,给出了具体的实现方法。通过这种双引导模式,巧妙地达到了系统的要求。另外,介绍了采用DSP软件编程来实现FLASH擦除和读写方法。 关键词:DSP56362;Bootstrap;双引导模式;命令字序列
1 引言
在脱机运行的DSP系统中,用户代码往往都需要在上电后自动装载运行。目前,大多数的DSP内部都有固化的引导装载(Bootload)程序,它能在系统加电时,自动将一段存储在外部非易失性存储器中的程序代码移植到内部的高速存储器单元中去执行。采用这种方式,既可利用外部的存储单元来扩展DSP本身有限的ROM资源,又充分发挥了DSP内部资源的效能。

因为用户代码在一段时间内是相对固定的,所以可以将其固化在非易失性存贮器中。而如果将代码掩膜到DSP内部ROM中去一方面要受到容量以及价格的限制,另一方面,系统代码升级也不是很灵活方便。FLASH是一种高密度、非易失性的电可擦写存储器,其单位存储比特的价格比传统的EPROM要低,十分适合低功耗、小尺寸和高性能的脱机系统。此外,除了可以采用专用的硬件编程器把程序代码烧入FLASH中之外,
也可以直接利用DSP通过软件编程来实现。本文论述的正是如何通过DSP软件编程来实现对FLASH的读写操作,同时介绍了系统双引导装载方案的实现方法。
2 系统描述
本系统是基于MOTOROLA公司DSP56362芯片构建的数字音效处理系统中的一部分,整个数字音效处理系统的系统框图如图1所示。
DSP56362是一款24位通用定点数字信号处理器。它采用高性能单时钟指令周期的DSP56300内核和Motorola Symphony DSP的音频处理性能相结合的方法来实现具有运算速度快(100MIPS)精度高(24bit),外设接口丰富(具有增强型串行音频接口ESAI、并行主机接口HI08、串行主机接口SHI、数字音频接口DAX等),价格低廉等诸多优点,特别适用于音频处理。其24位的处理精度配合20位的A/D(PCM1800)和24位的D/APCM1744使得整个系统具有很高的动态范围(96dB以上)。它高达100MIPS的运算速度保证了算法处理的实时性。其增强型串行音频接口ESAI可以很方便地与音频A/D、D/A直接通过I2S协议进行连接。通过8bit的并行主机接口HI08可以方便地与负责键盘控制和LED显示的单片机89C51进行通信。
FLASH选用SST公司的39LV010其存储容量为128k×8bit,采用3.3V供电,读写周期为70ns,支持块擦除与字节编程,是一款高性价比存储芯片。
DSP与外部FLASH的连接示意图如图2所示。图中,DSP的AA1脚和FLASH的片选信号脚CE相连。
DSP56362的4个地址属性寄存器AAR[3~0]是24位读写寄存器,它们的值可用于控制DSP芯片的AA[3~0]引脚的状态,当某个AAR寄存器中的基址与外部访问指令存取范围相匹配时,由这个AAR定义的相应地址空间(X数据、Y数据或程序)将被相应的AA线选通。在本系统中,正是把DSP的AA1作为FLASH的片选线。AA1脚相应的AAR1寄存器的值设为0xD00811H,当访问地址的高8位为11010000时,外部FLASH被选通。

通过设置DSP的总线控制寄存器BCR,可以设置访问外部存储器时插入的等待状态的个数。在本系统中,FLASH的存取周期为70ns,为了保证FLASH的正确读写,一般要插入32个等待状态。
3 DSP56362的引导过程
在DSP56362内部的0xFF0000H-0xFF00BFH地址范围内有Motorola定制的24位192字的Bootstrap ROM。该ROM内的Bootstrap引导程序可以通过用户设置的DSP引导模式信号线,将用户程序从外部的8位EPROM、EEPROM、FLASH、 SHI接口或者HDI接口引导到DSP内部的高速RAM中全速运行。
当DSP56362硬件复位后,它将首先采样外部的MODA、MODB、MODC和MODD信号线,并将它们的状态写入工作模式寄存器OMROperating Mode Reg-ister的MA、MB、MC和MD位,然后使程序指针指向0xFF0000H去执行Bootstrap引导程序,Bootstrap引导程序通过对OMR的MA、MB、MC和MD位进行判断来决定选择哪种引导模式。主要的引导模式如表1所列。
表1 DSP56362 Bootstrap的引导模式
MODDMODCMODBMODA描 述
0001从字节存储器引导0010跳转到程序ROM起始地址0101从串行主机接口SHI引导(SPI从模式)0110从串行主机接口SHI引导(I2C从模式,时钟静止使能)0111从串行主机接口SHI引导(I2C从模式,时钟静止关闭)1001内部测试保留1100从并行主机接口HDI08引导(ISA模式)1101从并行主机接口HDI08引导(HC11非复用模式)1110从并行主机接口HDI08引导(8051复用总线模式)1111从并行主机接口HDI08引导(68302总线模式)在本系统中,由于程序保存在外部的FLASH里,所以采用的引导模式为第一种即从字节存储器引导。在这种模式下Bootstrap程序将从地址0xD00000H处开始加载外部数据,并采用以下数据格式从外部接口下载用户的系统程序:
(1) 最开始的3个字节用于定义系统程序的总字数(24位)。
(2) 接着的3个字节用于定义系统程序下载到DSP56362程序存储器的目的地址。
(3) 其余是用户的系统程序(每个24位的字由三个字节组成),这些程序将存储在DSP程序存储器内连续的地址空间里。
Bootstrap引导程序要求系统程序在外部FLASH中以地位字节(LSB)在前的顺序排列每个24位字的3个字节。DSP的引导程序一旦完成数据的下载,将马上跳转到内部程序存储器的起始目的地址开始运行用户的系统程序。
4 双引导装载方法
4.1 DSP56362的片内内存分配
DSP56362采用增强型哈佛结构,片内空间可分为程序空间、X数据空间、Y数据空间,每个空间都有一套独立的24位地址总线和数据总线。在缺省情况下,DSP片内的RAM分配情况为:3kB程序RAM、5.5kB X数据RAM和5.5kB Y数据RAM。通过设置内存切换模式(MS=1)可以将2kB的Y数据RAM映射到程序RAM中,此时的片内RAM分配为:5kB程序RAM、5.5kB X数据RAM和3.5kB Y数据RAM。考虑到本系统对程序空间的需求量较大,而数据RAM相对较多,且系统对内部数据RAM的需求并不是很大,因此,将DSP设置成内存切换模式比较好。DSP56362在内存切换模式下(MS=1)的内存映像图如图3所示。
4.2 直接使用Bootstrap引导程序的问题
DSP的内存切换模式需要通过软件指令对OMR寄存器进行设置来实现。由于只有在该指令执行后才能生效,这样就产生了一个矛盾。因为若在系统程序开始时将DSP设置为内存切换模式,那么,往往希望DSP能装载5kB的程序指令,但是,DSP的Bootstrap引导程序是在系统复位后立即执行的,此时DSP处于缺省(MS=0)状态,程序RAM只有3kB,如果此时外部的指令代码的大小超过了这个限制,引导程序就不能把它们加载进去,而当这条设置指令生效时,虽然DSP的程序空间又增加了2kB,但是引导程序已经结束,因而这2kB的程序空间实际上没有被利用。
另外,从DSP的Bootstrap程序流程可以看出,这个引导程序只能将系统的程