欢迎来到天天文库
浏览记录
ID:22754409
大小:56.00 KB
页数:6页
时间:2018-10-31
《dsp+flash引导装载系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、DSP+FLASH引导装载系统的设计与实现
2、第1lunal>关键词:数字信号处理器FLASH存储器引导装载在一些脱机运行的DSP系统中,用户代码需要在加电后自动装载运行。DSP系统的引导装载(Bootload)是指在系统加电时,DSP将一段存储在外部的非易失性存储器的代码移植到内部的高速存储器单元中去执行。这样既利用了外部的存储单元扩展DSP本身有限的ROM资源,又充分发挥了DSP内部资源的效能。尽管用户代码在一段时间相对是固定的,但是如果直接将其掩膜到内部ROM中去的话,一方面受容量以及价格的限制,另一方面则在系统代码级上显得不是很灵活方便
3、。FLASH是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统的EPROM要低,十分适合于低功耗、小尺寸和高性能的便携式系统。除了可以采用专用的硬件编程器把代码灌入FLASH中之外,也可以利用现成的DSP通过软件编程来实现同样的功能。本文论述的正是如何通过DSP软件编程来实现对FLASH的读写操作,并介绍一个简单的系统引导装载方案的实现。1系统描述本系统由DSP(TMS320VC5410)及外部的FLASH(M29STRB为存储选通信号,R/S320VC5410是TI公司的C54x系列的定点DSP,具有低功耗和高速度,常用于
4、便携式系统开发。其内部在座资源包括256Kb的可掩膜RO凤及可高速运行的128Kb的DARAM和896Kb的SARAM。ROM中固化了TI提供引导装载代码,方案采用自编的引导程序。ST公司的M29b,分为11个不同大小的块结构,支持8位或16位操作模式。通过特殊的命令字序列可以对每一块独立进行擦除和读写。与以往的FLASH相比,它由外部单电压供电,无需额外提供高电压即可实现擦除及写入,因而在系统设计上无需考虑特殊的电平匹配。本方案采用16位模式。2.2地址映射方式由于用DSP操作FLASH,必然涉及到FLASH的实际地址在DSP中的映射方式。
5、TMS320VC5410的地址空间如图2所示,包括数据空间和程序空间,具体的映射方式由DSP内部的一些寄存器决定。它使用页面扩展机制,最多可以寻址8192Kb的程序空间。假设FLASH的起始地址0x0000和DSP的起始地址0x0000重合,那么FLASH中只有对应于DSP外部空间的那部分地址,才是DSP可见的。比如,本方案中采用微处理器模式(MP=1)且OVLY=1时,则DSP第0页程序空间中可见的FLASH的地址范围为0x8000~0xFFFF。在擦除或读写FLASH之前,必须先执行相应的命令字序列,即在指定的FLASH地址处写入指定的指
6、令代码。而整个FLASH地址空间并非和FSP的地址空间一一对应,所以需要考虑地址的重映射。现以对FLASH写入为例。未考虑地址重映射时,命令字序列如下所示:FlashP=1和OVLY=1时,FLASH地址0x5555L和0x2AAAL在DSP中位于外部空间之外,是不可见的。这样DSP执行上述语句时,根本没有对FLASH进行相应的操作,从而导致即使FLASH地址myaddress是DSP可见的,也无法实现数据写入的功能。仔细分析FLASH的命令字序可知,前三句命令字序列中真正起作用的地址位是A0~A14,而高地址位A15~A17可以是任意值。于
7、是考虑加一个偏移量0x8000,使得重映射后的FLASH地址在DSP中是可见的。修改后的代码如下所示:#defineOFFSET0x8000FlashP=1)。加电后,DSP首先执行0xFF80处的中断向量表起始处的跳转命令,转向0xF800处的引导程序段并实现代码移植功能。完毕后,再次跳转到移植后的用户程序段的起始地址并执行之。3.2逻辑功能分块引导装载系统包括引导程序段、用户程序段、中断向量表和连接命令文件四部分。引导程序段负责将用户程序段和中断向量表装载到目标地址,用户程序段是实现用户系统功能的核心代码,中断向量表包括加电后的跳转处理和
8、中断服务程序的入口,连接命令文件则是分配各个程序段在DSP地址空间中的位置。3.3具体代码实现引导程序段(load.asm)如下:.defload_start.sect"load_prg"load_start:ssbxintm;关中断rsbxsxm;符号扩展模式设置为0ld#0,dp;定义数据页指针为0nopnopnopld#0ff80h,a;移植中断向量表,0xff80为中断向量表的旧起始地址stm#VECT_NEAIN_OLD,a;移植用户程序段,MAIN_OLD表示用户程序段的旧起始地址stm#MAIN_NEAIN_NEAIN_LEN-
9、1);MAIN_LEN表示用户程序段的长度reada*ar1+endboot:orm#020h,1dh;设置OVLY=1,使得内部RAM同时映射到DSP数据和程序空
此文档下载收益归作者所有