现在位置:范文先生网>理工论文>电子通信论文>TMS320C6711的FLASH引导装载系统研究与设计

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

时间:2023-02-20 22:38:44 电子通信论文 我要投稿
  • 相关推荐

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

  摘要:引导装载是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公司SST39VF040FLASH存储器的基本特点,同时给出了一具完整的用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所示。
  
  该电路主要通过DSP的相关输出管脚来控制FLASH的擦除和读写。其中,A0~A18为地址线,DQ0~DQ7为数据线,OE和WE分别为输出使能和写使能,CE1为片使能。由于TMS320C6711默认的引导模式是从外部CE1空间的8位FLASH来引导装载,所以,TMS320C6711的CE1和FLASH的片选CE相连。如果是从16位或32位FLASH引导,则只需将HD[4:3]设置成相应的值即可。
  
  2.3EMIF寄存器的配置
  
  由于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))/tc
  
  
  
  ye
  
  以上参数可以从芯片手册里查到,并可据此得以满足上述条件的CE1值:CE1=1161C901h。
  
  3软件设计
  
  引导装载系统主要由实现自加载功能的定制代码和用户程序两部分构成,最后都存储在外扩SST39VF040的指定地址中。其中如何写定制代码是设计的重点,它负责将中断向量表和用户代码段从片外FLASH移植到其它高速存储器中,并且将程序指针指向用户代码段的起始地址。
  
  3.1FLASH引导过程
  
  对于许多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()函数的入口处。
  
  该自加载功能的代码如下:
  
  BOOT_SIZE.equ0x9800;待装载代码的大小
  
  FLASH_START.equ0x90000000;FLASH起始地址
  
  BOOT_START.equ0x0000000;L2sram起始地址
  
  EMIF_GCR.equ0x01800000;EMIF全局控制寄存器的地址
  
  EMIF_CE1.equ0x01800004;CE1空间控制寄存器的地址
  
  EMIF_CE1-8.equ0x1161C901;CE1空间控制寄存器的值
  
  .sect".boot_load"
  
  .global_boot
  
  .ref_c_int00
  
  _boot:
  
  mvklEMIF_GCR,A4
  
  mvkl0x3300,B4
  
  mvkhEMIF_GCR,A4
  
  
  
  
  mvkh0x3300,B4
  
  stwB4,*A4;配置EMF全局控制寄存器
  
  mvk1EMIF_CE1,A4
  
  mvk1EMIF_CE1-8,B4
  
  mvkhEMIF_CE1,A4
  
  mvkhEMIF_CE1-8,B4
  
  stwB4,*A4;配置CE1空间控制寄存器
  
  mvklBOOT_START+1024,A4;待搬移数据的目标地址
  
  mvklFLASH_START+1024,B4;待搬移数据的源地址
  
  mvkhBOOT_START+1024,A4
  
  mvkhFLASH_START+1024,B4
  
  zer0A1
  
  _boot_loop1:数据搬移
  
  ldb*B4++,B5
  
  mvklBOOT_SIZE,B6
  
  add1,A1,A1
  
  mvkhBOOT_SIZE,B6;B6为待搬移数据块大小,可根据实际情况来修改
  
  cmpltA1,B6,B0
  
  nop
  
  stbB5,*A4++
  
  [B0]b_boot_loop1
  
  nop5
  
  mvk1.S2_c_init00,B0
  
  mvkh.S2_c_int00,B0
  
  B.S2B0;转向C程序的入口
  
  nop5
  
  3.4FLASH编程
  
  建立好了上述定制代码段、用户程序段、中断向量表和链接命令文件后,便可利用TI公司的DSP集成开发环境CCS进行编译、调试及链接,之后生成的目标文件*.out就是DSP能够识别的COFF格式。为了使系统能够脱机运行,需要把该目标文件的代码写入FLASH中,往FLASH中写入目标代码可以采用以下两种方法:
  
  (1)用硬件仿真器XDS510/560通过JTAG口对FLASH进行在线编程。此时需要把*.out文件数据放入缓冲存储器,然后按照FLASH芯片手册提供的编程格式把缓冲存储器里的数据写入FLASH。
  
  (3)利用编程器进行编程。由于编程器不支持*.out文件模式,不能直接写入FLASH中,所以必须将*.out文件转换成编程器可读入的*.hex格式,这可以通过CCS软件中的转换工具hex6x来实现,转换时要注意hex.cmd文件的写法,而且整个文件转换过程是在DOS提示符下完成的。
  
  4结论
  
  利用上述方法可使系统在脱机状态下实现引导装载,本次实验所用的用户代码段的功能是利用DSP的多通道缓冲串口发送一个字符串给PC机的RS232口。按照前面的方法写好定制代码段、用户程序段、中断向量表和链路命令文件并进行编译、链接、格式转换以及写入FLASH之后,系统就可以实现脱机运行了。这样,给DSP系统加电后,就可以通过串行口调试软件在PC机上接收到DSP所发送的字符串以证明引导装载成功。由于用户代码段也可以被其它程序代替,因此,本文设计的引导装载系统其有一定的通用性。
  
  
  
  

【TMS320C6711的FLASH引导装载系统研究与设计】相关文章:

DSP+FLASH引导装载系统的设计与实现08-06

DSP外挂Flash在系统编程及并行引导装载方法08-06

TMS320VC5402的并行引导装载方案的研究与设计08-06

C6202 ROM引导装载方式的研究08-06

DSP56362的双引导装载方法研究与实现08-06

TMS320C6x DSP的FLASH引导方法研究与实现08-06

TMS320C5410烧写Flash实现并行自举引导08-06

产品形象设计及评价系统研究08-06

TMS320VC5402外部并行引导装载方法的研究08-06