用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

利用Flash实现DSP对多个程序有选择的加载

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:30:12
【本文由PB创新网为您整理】
摘要:主要介绍一种利用Flash存储器实现双DSP系统对多份用户代码有选择的上电加载的方法。其中,重点介绍M29W800AB Flash的使用和编程方法,TMS320VC54X DSP的上电自动引导过程,以及HPI模式和并行模式加载用户代码的方法。

    关键词:Flash存储器 DSP 主机接口 Bootloader 引导表

引 言

  在TMS320C54X系列DSP系统的开发中,由于DSP片内只有ROM和RAM存储器,如要将用户代码写入ROM中,必须要由DSP芯片厂家来完成;但这样做用户就不能再更改代码,很不实用。由于RAM在DSP掉电后不能再保存数据,因此,常常利用EPROM、javascript:window.open(this.src);" style="cursor:pointer;"/>Flash等一些外部存储器来存放用户代码。在DSP上电工作后,利用DSP提供的boot机制,再将程序下载到DSP RAM中运行。如果使用EPROM外部存储器存放用户代码,需要用代码转换工具将用户代码转换为二进制目标文件,然后用编程器将其烧写进EPROM;而如果使用Flash存储器存放用户代码,则可直接使用DSP仿真器和CCS(Code Composer Studio )仿真环境进行在线编程,使用灵活方便,不再需要其它编程设备。在某一以太网通信系统中,我们就采用Flash存储器来实现多份用户代码的有选择加载。下面就以此系统为例介绍对TMS320VC54X DSP的一种用户代码加载的方法。

1 系统构架

此通信系统基于802.3以太网标准,用以实现各终端之间的话音和其它数据的通信,以及实现局域网内终端与外界的话音和数据通信。为节约开发成本,提高系统的可扩展性、通用性和灵活性,我们对每个网内终端采用同样的硬件架构,通过使用不同的软件代码而使其实现不同的功能,发挥不同的作用。

每一通信终端由2块DSP芯片、1块网卡、1块CPLD和1块FPGA以及Flash存储器等器件组成可扩展的基本结构。其中,以TMS320VC5410 DSP作为主CPU,负责系统的逻辑控制和一般数据传输;以MS320VC5416 DSP作为从CPU,负责话音的编解码和回声消除、语音检测等工作。2块DSP之间通过主机接口(HPI)进行通信。为了实现代码的有选择下载,可由FPGA配置一端口作为拨码开关,使用户通过调节拨码开关,可以有选择地下载存储于Flash中的用户代码,其结构如图1所示。

配置拨码开关是为了扩充系统的功能,以实现一个硬件平台的多种用途。我们可以将实现不同功能的多份用户代码都写入Flash存储器中存放,通过硬件拨码开关的设置,选择其中一份用户代码下载执行。在系统上电加载用户代码时,系统先从Flash下载FPGA配置程序,然后通过FPGA读出拨码开关的值,再根据此值从Flash中选择对应的5410 DSP用户代码加载;而5416 DSP的用户代码加载是在5410代码加载完成,启动运行后由5410程序从Flash中读出相应的5416代码,再通过HPI加载到5416的,以此实现5416 DSP的代码加载与启动。javascript:window.open(this.src);" style="cursor:pointer;"/>

2 M29W800AB Flash存储器介绍及使用

在此系统中,我们选用的是M29W800AB Flash存储器,其容量为512K×16位, 分为16页,每页32K。其中,第0页有4个模块:0x00~0x1fff、0x2000~0x2fff、0x3000~0x3fff、0x4000~0x7fff。其余各页,每页为1个模块,共有19个模块。

对Flash的操作要靠写入一系列特定的地址和数据序列来完成。在每次对Flash写入之前,要对其原来的内容进行擦除。Flash的擦除包括块擦除和芯片擦除两种。块擦除是对一个模块进行擦除,芯片擦除是擦除整个Flash的内容。因此,对Flash的操作,是以模块为基本单元的。对Flash的操作由指令决定,其必须满足Flash的时序要求,每条指令需要1~6个不等的指令周期。主要操作指令包括读数据指令、编程指令、复位指令、自动选择指令和擦除指令。每个指令周期由一个命令构成,每个命令代码所执行的任务如表1所列。

表1 Flash的命令说明

HEX代码命    令
00h有效/保留
10h芯片擦除确认
20h保留
30h模块擦除继续/确认
80h建立擦除
90h读电平信号/模块保护状态
A0h编程
B0h擦除中止
F0h读阵列/复位

下面以M29W800AB Flash的块擦除指令为例,具体说明Flash的操作时序:块擦除指令需要6个总线周期,先以2个解锁周期开始,然后是1个擦除建立周期,接下来又是2个解锁周期,最后是1个擦除确认周期,其指令时序如表2所列。

表2 Flash擦除指令说明

周期第1周期第2周期第3周期第4周期第5周期第6周期
地址5555h2AAAh5555h5555h2AAAh模块地址
数据AAh55h80hAAh55h30h

其C语言程序设计代码如下:

#define flash ((volatile unsigned int*)0x8000)

Block_Erase(ADDR){

flash[0x5555] = 0x00AA;javascript:window.open(this.src);" style="cursor:pointer;"/>

wait(1000);

flash[0x2AAA] = 0x0055;

wait(1000);

flash[0x5555] = 0x0080;

wait(1000);

flash[0x5555] = 0x00AA;

wait(1000);

flash[0x2AAA] = 0x0055;

wait(1000);

flash[ADDR] = 0x0030;

}

需要注意的是,Flash相对于DSP来说是慢速设备,编程时,对Flash的访问需要有足够的延时等待。对其它指令这里就不一一介绍了。要了解更多内容,可参考具体的Flash存储器手册。

3 引导装载

TMS320VC5410和TMS320VC5416片内ROM中固化有TI公司的引导装载(Bootloader)程序,用于在上电复位时把用户代码从外部存储器引导到片内RAM中运行。引导程序是在一些片内固化的一个程序,它负

[1] [2]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:27,656.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号