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

上传人:hw****26 文档编号:3543586 上传时间:2019-06-03 格式:DOC 页数:7 大小:39KB
下载 相关 举报
TMS320C6711的FLASH引导装载系统研究与设计.doc_第1页
第1页 / 共7页
TMS320C6711的FLASH引导装载系统研究与设计.doc_第2页
第2页 / 共7页
TMS320C6711的FLASH引导装载系统研究与设计.doc_第3页
第3页 / 共7页
TMS320C6711的FLASH引导装载系统研究与设计.doc_第4页
第4页 / 共7页
TMS320C6711的FLASH引导装载系统研究与设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、TMS320C6711 的 FLASH 引导装载系统研究与设计摘要:引导装载是 DSP 系统设计中必不可少的重要环节。文章对 TI 公司 TMS320C6711中 FLASH 引导装载的概念、方法及特点做了详细阐述,同时以 SST 公司的 FLASH 器(SST39VF040)为例,设计了一个利用 FLASH 进行引导装载的系统方案,并给出相应的自加载程序源代码。关键词:数字信号处理器 FLASH 存储器 引导装载 TMS320C67111 概述在一些脱机运行的 DSP 系统中,用户代码需要在加电后自动装载运行。DSP 系统的引导装载(Bootload )是指在系统加电时,由 DSP 将一段存

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

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

4、V 单电源供电,无需额外提供高电压即可通过一些特殊的命令字序列实现对各个子模块的读写和擦除,并且可以重复十万次以上,因而可通过 DSP软件编程来实现对它的读写操作,十分适合于系统的调试和开发。22 硬件连接DSP 访问片外存储器主要通过外部存储器接口(EMIF),它不仅具有很强的接口能力,可以和各种存储器直接接口,而且还具有很高的数据吞吐能力,最高可达1200MB/s。TMS320C6711 的 EMIF 支持 8 位、16 位和 32 位宽的所有存储器,当从这些窄位宽的存储空间读写数据时,EMIF 会将多个数据打包成一个 32 位的值,而不必增加额外电路。TMS320C6711 与 SST3

5、9VF040 的连接电路如图 1 所示。该电路主要通过 DSP 的相关输出管脚来控制 FLASH 的擦除和读写。其中,A0A18 为地址线,DQ0DQ7 为数据线, OE 和 WE 分别为输出使能和写使能,CE1 为片使能。由于 TMS320C6711 默认的引导模式是从外部 CE1 空间的 8 位 FLASH 来引导装载,所以,TMS320C6711 的 CE1 和 FLASH 的片选 CE 相连。如果是从 16 位或 32 位 FLASH 引导,则只需将 HD4:3设置成相应的值即可。23 EMIF 寄存器的配置由于 TMS320C6000 在异步接口上更加方便,因此,用户可以灵活地设置读

6、写周期以实现与不同速度、不同类型的异步器件的直接接口。EMIF 接口由一组存储器映射的寄存器进行 控制与维护,包括配置各个空间存储器类型和设置读写时序等。和异步器件接口时需配置 CE 空间控制寄存器,由它来控制存储器的读写周期,本系统用到了 CE1 空间,故需要设置 CE1 空间控制寄存器的值。在设置 CE1 空间控制寄存器时,应满足以下条件:(1)异步读时:SETUP+STROBE(tacc(m)+tsu+tdmax)/tcycSETUP+STROBE+HOLD(trc(m)/tcyeHOLD(th-tdmin-toh(m)/tcyeHOLD(th-tdmin-toh(m)/tcye(2)异

7、步写时:STROBE(twp(m)/tcyeSETUP+STROBE(txw(m)/tcyeHOLD(Max(tih(m),twr(m)/tcyeSETUP+STROBE+HOLD(twc(m)/tcye(3)附加参数 TA:TA (tohz(m))/tcye以上参数可以从芯片手册里查到,并可据此得以满足上述条件的 CE1 值:CE1=1161C901h。3 软件设计引导装载系统主要由实现自加载功能的定制代码和用户程序两部分构成,最后都存储在外扩 SST39VF040 的指定地址中。其中如何写定制代码是设计的重点,它负责将中断向量表和用户代码段从片外 FLASH 移植到其它高速存储器中,并且将

8、程序指针指向用户 代码段的起始地址。31 FLASH 引导过程对于许多 DSP 应用 系统,常常需要从 FLASH 装载程序到 DSP 以便使它能够脱机运行。设置完芯片装载方式后,FLASH 引导装载的具体过程如下:首先将位于外部 CE1 空间的 FLASH(即图 1 中的 SST39VF040)中的程序通过EDMA 自动搬入内部 RAM 的地址 0 处(参见图 2),实际上,尽管加载过程 RAM 的地址0 处(参见图 2),实际上,尽管加载过程是在芯片复位信号被释放后才开始的,但是当芯片开始复位时,就开始准备上述传输了。用 EDMA 进行 的加载过程是一个单帧数据块的传输过程,数据块的大小为

9、 1kB,当然这 1kB 的数据必须包括用于实现自加载功能的定制代码,1kB 的数据传输完成后, CPU 退出复位状态,开始执行地址 0 处的自加载功能的定制代码,同时把其它的初始化段从 FLASH 拷贝到相应的高速存储器处,之后初始化 C变量以换行用户程序。32 链接在链接自加载功能的定制代码和其它代码时,需要特别注意该程序 COFF(公共目标文件格式)段的放置。因为有时候需要对某些段制定两个不同的地址:一个导入地址,一个运行地址。导入地址用来决定装载器把段的原始数据放在何处,而运行地址就是该段代码运行的地方。任何对段的引用都是指它的运行地址。因此,如果给某个段指定不同的导入地址和运行地址,

10、在程序访问该段之前,都需要把它从导入地址拷贝到运行地址处,当然这个拷贝过程有时是自动进行的,有时需要人工介入,即由自加载功能的定制代码来完成。如前面提到的 1kB 数据拷贝就是 EDMA 自动完成的。显然,制定两个不同地址的目的是为了加快代码的执行速度。链接可由*.cmd 文件来实现。代码在链接在应遵循以下原则:(1)所有代码和初始化数据都必须有一个 FLASH 的导入地址;(2)所有非常数数据据都有一个 RAM 运行 地址;(3)未初始化的数据无需独立的导入地址;(4)从 FLASH 拷贝到 RAM 的代码要有一个 FLASH 导入地址和 RAM 运行 地址。33 写自加载功能的定制代码通常

11、 1kB 的定制代码需要包括以下三个部分:(1)配置 EMIF 寄存器。只有正确配置了 EMIF 的值,它才有可能访问外部存储器FLASH 和 SDRAM;(2)拷贝初始化段。对于既有导入地址,又有运行地址的初始化段,需要把它从导入地址拷贝到它的运行地址处,处时还必须参考.map 文件来确定要搬移的数据块的大小,这些段代码的搬移可以用汇编指令 MOV 来实现,也可以用 TMS320C6711 的 EDMA 来实现。由于用 EDMA 搬移数据要对 EDMA 参数进行设置,所以通常采用 MOV 指令来实现;(3)转向 C 程序的入口_c_int00,即跳转到 main()函数的入口处。该自加载功能

12、的代码如下:BOOT_SIZE .equ 0x9800 ;待装载代码的大小FLASH_START .equ 0x90000000 ;FLASH 起始地址BOOT_START .equ 0x0000000 ;L2 sram 起始地址EMIF_GCR .equ 0x01800000 ;EMIF 全局控制寄存器的地址EMIF_CE1 .equ 0x01800004 ;CE1 空间控制寄存器的地址EMIF_CE1-8 .equ 0x1161C901 ;CE1 空间控制寄存器的值.sect “.boot_load“.global_boot.ref_c_int00_boot:mvkl EMIF_GCR,A

13、4mvkl 0x3300,B4mvkh EMIF_GCR,A4mvkh 0x3300,B4stw B4,*A4 ;配置 EMF 全局控制寄存器mvk1 EMIF_CE1,A4mvk1 EMIF_CE1-8,B4mvkh EMIF_CE1,A4mvkh EMIF_CE1-8,B4stw B4,*A4 ;配置 CE1 空间控制寄存器mvkl BOOT_START+1024,A4 ;待搬移数据的目标地址mvkl FLASH_START+1024,B4 ;待搬移数据的源地址mvkh BOOT_START+1024,A4mvkh FLASH_START+1024,B4zer0 A1_boot_loop1

14、: 数据搬移ldb *B4+,B5mvkl BOOT_SIZE,B6add 1,A1,A1mvkh BOOT_SIZE,B6 ;B6 为待搬移数据块大小,可根据实际情况来修改cmplt A1,B6,B0nopstb B5,*A4+B0b_boot_loop1nop 5mvk1 .S2_c_init00,B0mvkh .S2_c_int00,B0B .S2 B0 ;转向 C 程序的入口nop 534 FLASH 编程建立好了上述定制代码段、用户程序段、中断向量表和链接命令文件后,便可利用 TI公司的 DSP 集成开发环境 CCS 进行编译、调试及链接,之后生成的目标文件*.out 就是DSP 能

15、够识别的 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 所发送的字符串以证明引导装载成功。由于用户代码段也可以被其它程序代替,因此,本文设计的引导装载系统其有一定的通用性。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。