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

TMS320C6711的FLASH引导装载系统研究与设计

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:59:04
【本文由PB创新网为您整理】
摘要:引导装载是DSP系统设计中必不可少的重要环节。文章对TI公司TMS320C6711中FLASH引导装载的概念、方法及特点做了详细阐述,同时以SST公司的FLASH器(SST39VF040)为例,设计了一个利用FLASH进行引导装载的系统方案,并给出相应的自加载程序源代码。

    关键词:数字信号处理器 FLASH存储器 引导装载 TMS320C6711

1 概述

在一些脱机运行的DSP系统中,用户代码需要在加电后自动装载运行。DSP系统的引导装载(Bootload)是指在系统加电时,由DSP将一段存储在外部非易失性存储器中的代码移植到高速存储器单元中去执行。这样既可利用外部存储单元来扩展DSP本身有限的ROM资源,又能充分发挥DSP内部资源的效能。因此,在装载系统中,外部非易失性存储器和DSP的性能显得尤为重要。FLASH是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统EPROM要低,十分适合用于低功耗、小尺寸和高性能的便携式系统。本文介绍了TI公司TMS320C6711浮点DSP芯片和SST公司SST39VF040 FLASH存储器的基本特点,同时给出了一具完整的用FLASH来实现系统引导装载的实现方案。

2 硬件设计

2.1 器件介绍

整个系统由DSP(TMS320C6711),外部FLASH存储器(SST39VF040)以及电源管理单元等构成。下面主要介绍前面两个模块。TMS320C6711数字信号处理器是美国TI公司推出的TMS320C6000系列浮点DSP的一种,它采用256管脚的BGA封装,3.3V的I/O电压和1.8V的内核电压供电方式,并具有两级cache缓存结构和高达900MFLOPS的峰值运算能力,可广泛应用于图像处理等系统中。

SST39VF040是SST公司推出的FLASH存储器,该器件十分适合用作外扩存储器,它的存储容量为4MB,采用3.3V单电源供电,无需额外提供高电压即可通过一些特殊的命令字序列实现对各个子模块的读写和擦除,并且可以重复十万次以上,因而可通过DSP软件编程来实现对它的读写操作,十分适合于系统的调试和开发。

2.2 硬件连接

DSP访问片外存储器主要通过外部存储器接口(EMIF),它不仅具有很强的接口能力,可以和各种存储器直接接口,而且还具有很高的数据吞吐能力,最高可达1200MB/s。TMS320C6711的EMIF支持8位、16位和32位宽的所有存储器,当从这些窄位宽的存储空间读写数据时,EMIF会将多个数据打包成一个32位的值,而不必增加额外电路。TMS320C6711与SST39VF040的连接电路如图1所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    该电路主要通过DSP的相关输出管脚来控制FLASH的擦除和读写。其中,A0~A18为地址线,DQ0~DQ7为数据线,OE和WE分别为输出使能和写使能,CE1为片使能。由于TMS320C6711默认的引导模式是从外部CE1空间的8位FLASH来引导装载,所以,TMS320C6711的CE1和FLASH的片选CE相连。如果是从16位或32位FLASH引导,则只需将HD[4:3]设置成相应的值即可。

2.3 EMIF寄存器的配置

由于TMS320C6000在异步接口上更加方便,因此,用户可以灵活地设置读写周期以实现与不同速度、不同类型的异步器件的直接接口。EMIF接口由一组存储器映射的寄存器进行 控制与维护,包括配置各个空间存储器类型和设置读写时序等。和异步器件接口时需配置CE空间控制寄存器,由它来控制存储器的读写周期,本系统用到了CE1空间,故需要设置CE1空间控制寄存器的值。在设置CE1空间控制寄存器时,应满足以下条件:

(1)异步读时:

SETUP+STROBE≥(tacc(m)+tsu+tdmax)/tcyc

SETUP+STROBE+HOLD≥(trc(m))/tcye

HOLD≥(th-tdmin-toh(m)/tcye

HOLD≥(th-tdmin-toh(m)/tcye

(2)异步写时:

STROBE≥(twp(m)/tcye

SETUP+STROBE≥(txw(m))/tcye

HOLD≥(Max(tih(m),twr(m))/tcye

SETUP+STROBE+HOLD≥(twc(m))/tcye

(3)附加参数TA:TA≥(tohz(m))/tcye

以上参数可以从芯片手册里查到,并可据此得以满足上述条件的CE1值:CE1=1161C901h。

3 软件设计

引导装载系统主要由实现自加载功能的定制代码和用户程序两部分构成,最后都存储在外扩SST39VF040的指定地址中。其中如何写定制代码是设计的重点,它负责将中断向量表和用户代码段从片外FLASH移植到其它高速存储器中,并且将程序指针指向用户 代码段的起始地址。

3.1 FLASH引导过程

对于许多DSP应用 系统,常常需要从FLASH装载程序到DSP以便使它能够脱机运行。设置完芯片装载方式后,FLASH引导装载的具体过程如下:

首先将位于外部CE1空间的FLASH(即图1中的SST39VF040)中的程序通过EDMA自动搬入内部RAM的地址0处(参见图2),实际上,尽管加载过程RAM的地址0处(参见图2),实际上,尽管加载过程是在芯片复位信号被释放后才开始的,但是当芯片开始复位时,就开始准备上述传输了。用EDMA进行 的加载过程是一个单帧数据块的传输过程,数据块的大小为1kB,当然这1kB的数据必须包括用于实现自加载功能的定制代码,1kB的数据传输完成后,CPU退出复位状态,开始执行地址0处的自加载功能的定制代码,同时把其它的初始化段从FLASH拷贝到相应的高速存储器处,之后初始化C变量以换行用户程序。

3.2 链接

在链接自加载功能的定制代码和其它代码时,需要特别注意该程序COFF(公共目标文件格式)段的放置。因为有时候需要对某些段制定两个不同的地址:一个导入地址,一个运行地址。导入地址用来决定装载器把段的原始数据放在何处,而运行地址就是该段代码运行的地方。任何对段的引用都是指它的运行地址。因此,如果给某个段指定不同的导入地址和运行地址,在程序访问该段之前,都需要把它从导入地址拷贝到运行地址处,当然这个拷贝过程有时是自动进行的,有时需要人工介入,即由自加载功能的定制代码来完成。如前面提到的1kB数据拷贝就是EDMA自动完成的。显然,制定两个不同地址的目的是为了加快代码的执行速度。链接可由*.cmd文件来实现。代码在链接在应遵循以下原则:

(1)所有代码和初始化数据都必须有一个FLASH的导入地址;

(2)所有非常数数据据都有一个RAM运行 地址;

(3)未初始化的数据无需独立的导入地址;

(4)从FLASH拷贝到RAM的代码要有一个FLASH导入地址和RAM运行 地址。

3.3 写自加载功能的定制代码

通常1kB的定制代码需要包括以下三个部分:

(1)配置EMIF寄存器。只有正确配置了EMIF的值,它才有可能访问外部存储器FLASH和SDRAM;

(2)拷贝初始化段。对于既有导入地址,又有运行地址的初始化段,需要把它从导入地址拷贝到它的运行地址处,处时还必须参考.map文件来确定要搬移的数据块的大小,这些段代码的搬移可以用汇编指令MOV来实现,也可以用TMS320C6711的EDMA来实现。由于用EDMA搬移数据要对EDMA参数进行设置,所以通常采用MOV指令来实现;

(3)转向C程序的入口_c_int00,即跳转到main()函数的入口处。
javascript:window.open(this.src);" style="cursor:pointer;"/>
   

[1] [2]  下一页

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

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

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