AT29LV256在DSP并行引导装载模式中的应用

时间:2023-06-19

   摘要:介绍了ATMEL公司低电压AT29LV系列存储器的结构、特点及性能。同时结合TI公司DSP芯片TMS320VC5402的并行装载方式,给出了AT29LV256在实际应用中的硬件原理图和在线编程注意事项。以亮灯程序为例,给出了AT29LV256在线编程的关键程序。


Flash存储器是一种高密度、非易失的电可擦写存储器。它具有功耗低、容量大、速度快等特点,而且单位存储比特的价格比传统的EPROM要低,因而大量应用于数字信号处理系统中。Flash 可分为并行Flash和串行Flash。串行Flash与外围芯片连接简单,可节约印制板空间,但存储量相对较小且成本高。同时串行通信速度较慢,编程也比较复杂。并行Flash芯片则具有存储量大、速度快、使用方便等优点。ATMEL公司生产的AT29LV系列低电压存储器就是一种并行、高性能、可支持3V在线编程的Flash存储器。对Flash编程除了可以采用专用的硬件编程器把程序代码烧写到Flash中外,还可利用DSP的开发系统通过软件编程来实现同样的功能。


TMS320VC5402(以下简称C5402)是美国德州仪器公司(TI)推出的一款性价比极高的定点数字信号处理器(DSP)。该芯片内置4k×16bit片内屏蔽式ROM(F000-FFFF),且在4kB ROM资源里包含了Bootloader程序。C5402的Bootloader在系统加电时会把外部源程序传送到内部存储器或内部程序空间。它允许程序放在外部较慢的存储器或微处理器中,并将其调到高速的DRAM存储器中运行,从而大大减小了对C5402内部掩膜的需要,降低了电路的设计成本。

本文在笔者实际使用经验的基础上,详细介绍了AT29LV256在C5402并行引导装载模式下的软件编程技术,给出了并行装载的数据流和系统的硬件设计,以亮灯程序为例给出了对AT29LV256编程时的具体步骤及方法。

  1 AT29LV256编程技术

AT29LV256是ATMEL公司生产的容量为32k×8bit、可支持3V在系统编程的Flash存储器。AT29LV256将存储空间分成512个独立的扇区,每个扇区有64个字节,其中A6~A14用来选择扇区地址,A0~A5选择字节地址。每个扇区的编程操作长需要20ms,而其读操作与一般的SRAM相同,时间为70ns 。AT29LV256在编程之前,片内对应扇区会自动擦除,因而不需要额外的擦除命令。同时芯片还提供了六个软件控制字以用于完成对整片的擦除,其整片擦除命令见表1所列。

表1 AT29LV256全片擦除命令

次  序1st2nd3rd4th5th6th
地  址5555H2AAAH5555H5555H2AAAH5555H
命令字5555hAAh2AAAh55h5555h90h

AT29LV256的编程操作是以扇区为单位进行的。它内部有64字节的数据缓冲器。如果写入缓冲器的字节数不足64字节,则编程时自动将未写入的字节擦除为FFH。一旦某一扇区中的字节被装入,这些字节将同时在内部编程时间进行编程,此时若有数据装入,则会产生不确定的数据。每一个新装载的数据若要被编程,必须有WE由高到低的跳变,这一跳变需要在150μs内完成,如果超过150μs,器件会自动进入扇区内部编程方式。为了防止意外的编程操作,AT29LV256提供有软件保护编程功能,在对Flash 的每个扇区进行编程时,必须先将3个命令字正确地写入到对应的地址单元,然后才能向片内编写程序。在对每一个扇区编程之前,都要执行相同的三字节指令序列,采用软件保护编程的具体流程如图1所示。


通过AT29LV256提供的软硬件操作可识别芯片的系列号和型号。当按图2顺序写入控制字后,即可读到产品识别码1F和器件识别码BC。器件识别完成后,若需开始编写程序,则应退出器件识别,并延时20ms,为了减小编程的等待时间,AT29LV256提价有下列两种检测编程周期是否结束的方式:

(1) 循环检测方式。该方式首先读出写入本扇区一个单元的内容,若其I/O7位是写入该单元真实值的反码,则表明编程周期没有结束;若为实际值,则表明编程结束。

(2) 检测I/O6方式。该方式在扇区编程期间将连续读出任意单元地址的内容,若I/O6在连续读出时状态不一样,说明编程没有结束,若相同,则表明编程周期已经结束。

  2 C5402的自引导装载模式

C5402上电后,通常首先检查MP/MC引脚的状态:如果为高电平,说明DSP处于微处理器工作模式,此时便可从外部程序存储器0FF80h地址处开始执行用户程序;若为低电平,说明DSP被设置为微计算机模式,此时则从片内ROM的0FF80h地址开始执行程序。另外,在C5402的0FF80h地址处存放着一条跳转至0F800h处执行DSP自行引导装载(Bootloader)程序的指令。

当C5402执行Bootloader程序时,将会按HPI引导装载模式→串行EEPROM引导装载模式→并行引导装载模式→标准串行口引导装载模式→I/O口引导装载模式的顺序循环检测,以决定执行哪种启动模式。

C5402的并行引导装载模式是将程序代码数据从外界EEPROM或Flash的相应DSP数据寻址区中加载到片内DARAM或系统的扩展存储器SRAM内。由于C5402的数据区寻址范围为64k 字 ,因此在不自行编写Bootloader程序的情况下,并行引导装载模式只能装载32k字的程序或数据。当程序数据大于32k时可将自己编写的并行装载内核程序通过片内装载程序传送到片内DRAM中,然后再运行转载内核程序以将大于32k字的程序数据送到片外SRAM中。

若采用并行装载模式对程序进行加载,则应根据并行装载的格式来配置Flash的程序数据存储空间。可先在DSP对应的数据空间FFFEH和FFFFH地址内写入要存放程序的地址,然后根据并行装载的数据流将标识控制字、各个寄存器的初始化值、装载后的起始运行地址、程序段的大小和装载地址依次写入Flash的存放程序地址中,再写入所编写的程序,表2所列是Flash中的并行引导源程序数据流。其程序段的大小以及起始运行地址可根据系统仿真时生成的.MAP文件来确定。

表2 Flash中的并行引导源程序数据流

数据区地址(H)内容(H)含    义
8000  800108  AA8位并行引导标志
8002  800388  06SWWSR寄存器初值
8004  800500  00BSCR寄存器初值
8006  800700  00程序入口XPC
8008  800900  80程序入口地址
800A  800B00  0B程序段长度
800C  800D00  00存放目标XPC
800E  800F00  80存放目标地址
8010  8011F6  BD程序代码1
………………
801F  801FFC  00程序代码N
8020  802100  00程序块结束标志
………………
FFFE  FFFF80  00程序存储首地址

  3 基于AT29LV256和DSP的硬件设计

下面以AT29LV256与C5402组成的硬件系统为例对Flash在并行装载模式中的应用进行详细说明,其硬件系统原理框图如图3所示。因为AT29LV256为32k×8Bit存储器,因此不需要扩展外部SRAM。本系统采用Altera公司的EPM3064来完成C5402与AT29LV256之间的逻辑转换,EPM3064内部的编程逻辑如图4所示。

当C5402上电复位装载时,由于Bootloader程序在初始化时,XF被设置为高电平,因此,C5402可以通过EPM3064总的逻辑,将AT29LV256 08000h—0FFFFh单元中的数据读到C5402对应于0000h—3FFFh寻址区的片内DARAM中。在系统进入并行引导装载模式后,C5402会从数据寻址为0FFFFh的单元(A15=1,选中Flash)中读取将要载入的程序存储区的首地址,然后从程序存储首地址处将标识控制字、各个寄存器的初始化值、装载后的起始运行地址、程序段的大小以及装载地址依次装载到片内DRAM中。在EPM3064逻辑控制中使用XF是为了在bootload之后释放Flash所占用的数据空间。当主处理程序的条语句为RSBX XF,也就是置XF引脚为低电平时,CE将输出片选无效信号,从而可以让出数据空间。

  4 系统软件设计

该系统软件编程的在于按照并行装载数据流格式对Flash进行编程。下面以向AT29LV256烧写一个简单的亮灯程序为例来说明对Flash进行软件编程时应注意的问题和关键步骤。

程序如下:

.mmregs

.data

kaishi: .word 08AAh,7FFFh,8806h,0000h,0080h,000bh,0000h,0080h ;并行装载数据流中的各数据参数

.global_c_int00

.text

_c_int00:   ;这里还应有必要的初始化

stm #100h,ar1

stm #0fffeh,ar2 ;将8000入口地址写到FFFeH和FFFFH中

st #8000h,*ar1

call prog0 ;开始烧写需要先写入命令字

call prog1 ;将16位数据分成两个8位烧写到Flash中

stm #kaishi,ar1 ;将并行数据流各参数写到8000h开始的单元

stm #8000h,ar2

stm #07h,brc

rptb loopa

call prog1

loopa: nop

stm #qq,ar1 ;将亮灯程序数据接着并行参数烧写到Flash中

stm #0bh,br ;程序大小为0bh

rptb loopb

call prog1 ;因为总共烧写没超过64字节,因此不用执行命令字

looopb: nop

;prog0为软件保护模式下写控制字子程序,每编程64字节执行

prog0: stm #0d555h,ar3

st #0aah,*ar3

stm #0aaaah,ar3

st #55h,*ar3

stm #0d555h,ar3

st #0a0h,*ar3

ret

; prog1为16位数分成8位数据烧写子程序

prog1: ld *ar1,-8,a

and #0ffh,a

stl a,*ar2+

ld *ar1+,a

and #0ffh,a

stl a,*ar2+

ret

;以下一小段为亮灯程序,通过设置XF引脚的高低电平可使灯闪烁!

.sect "chengxu"

qq: rsbx xf

rpt #0ffffh

nop

ssbx xf

b qq

ret

.end

  5 结束语

本文介绍的基于AT29LV256编程技术的TMS320VC5402并行引导装载方案,可以在没有专用烧写器的情况下对Flash进行编程,从而实现了DSP的脱机独立运行。实践表明:该系统稳定可靠,具有较高的应用价值。

上一篇:智能读写器电源管理与接口芯片的原理及应用
下一篇:SAW射频识别无源电子标签技术及应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料