DSP+FLASH引导装载系统的设计与实现
关键词:数字信号处理器 FLASH存储器 引导装载
在一些脱机运行的DSP系统中,用户代码需要在加电后自动装载运行。DSP系统的引导装载(Bootload)是指在系统加电时,DSP将一段存储在外部的非易失性存储器的代码移植到内部的高速存储器单元中去执行。这样既利用了外部的存储单元扩展DSP本身有限的ROM资源,又充分发挥了DSP内部资源的效能。尽管用户代码在一段时间相对是固定的,但是如果直接将其掩膜到内部ROM中去的话,一方面受容量以及价格的限制,另一方面则在系统代码级上显得不是很灵活方便。FLASH是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统的EPROM要低,十分适合于低功耗、小尺寸和高性能的便携式系统。除了可以采用专用的硬件编程器把代码灌入FLASH中之外,也可以利用现成的DSP通过软件编程来实现同样的功能。本文论述的正是如何通过DSP软件编程来实现对FLASH的读写操作,并介绍一个简单的系统引导装载方案的实现。
1 系统描述
本系统由DSP(TMS320VC5410)及外部的FLASH(M29W400T)以及相关的电源管理单元等构成。DSP与FLASH的连接如图1所示。DSP与FLASH是主从关系,由DSP的相关输出管脚控制FLASH的擦除和读写。其中,A0~D15为数据线,/MSTRB为存储选通信号,R/W是读写脉冲信号,/OE和/WE分别为读使能和写使能,/CE为片使能,/BYTE为8位或16位数据模式选择(图中接高电压为16位模式)。FLASH用于存放引导程序段和用户代码,由DSP软件编程来写入。当系统脱机加电时,DSP首先从外部FLASH指定的引导程序段的起始位置处开始执行引导装载。所谓引导装载,就是将原先存储在FLASH中的用户代码移植到DSP内部的高速执行执行,然后将程序指针设置为用户代码的起始地址。这样,接下来就可以利用DSP资源高速执行用户代码了。
(凹丫丫范文网fanwen.oyaya.net收集整理)
2 DSP对FLASH的操作
2.1 DSP及FLASH简介
TMS320VC5410是TI公司的C54x系列的定点DSP,具有低功耗和高速度,常用于便携式系统开发。其内部在座资源包括256Kb的可掩膜RO凤及可高速运行的128Kb的DARAM和896Kb的SARAM。ROM中固化了TI提供引导装载代码,方案采用自编的引导程序。
ST公司的M29W400系列的FLASH容量为4Mb,分为11个不同大小的块结构,支持8位或16位操作模式。通过特殊的命令字序列可以对每一块独立进行擦除和读写。与以往的FLASH相比,它由外部单电压供电,无需额外提供高电压即可实现擦除及写入,因而在系统设计上无需考虑特殊的电平匹配。本方案采用16位模式。
2.2 地址映射方式
由于用DSP操作FLASH,必然涉及到FLASH的实际地址在DSP中的映射方式。TMS320VC5410的地址空间如图2所示,包括数据空间和程序空间,具体的映射方式由DSP内部的一些寄存器决定。它使用页面扩展机制,最多可以寻址8192Kb的程序空间。假设FLASH的起始地址0x0000和DSP的起始地址0x0000重合,那么FLASH中只有对应于DSP外部空间的那部分地址,才是DSP可见的。比如,本方案中采用微处理器模式(MP=1)且OVLY=1时,则DSP第0页程序空间中可见的FLASH的地址范围为0x8000~0xFFFF。
在擦除或读写FLASH之前,必须先执行相应的命令字序列,即在指定的FLASH地址处写入指定的指令代码。而整个FLASH地址空间并非和FSP的地址空间一一对应,所以需要考虑地址的重映射。
现以对FLASH写入为例。未考虑地址重映射时,命令字序列如下所示:
Flash Write(0x5555L,0x00AA);//1st cycle
Flash Write(0x2AAAL,0x0055);//2nd cycle
Flash Write(0x5555L,0x00A0);//Program command
Flash Write(myaddress,mydata);//put mydata into myaddress
《DSP+FLASH引导装载系统的设计与实现》