基于FLASH的TMS320C6416自启动实现方法

2010-09-25 02:29冀云
重庆电子工程职业学院学报 2010年5期
关键词:用户程序应用程序入口

冀云

(重庆电子工程职业学院 重庆401331)

基于FLASH的TMS320C6416自启动实现方法

冀云

(重庆电子工程职业学院 重庆401331)

介绍了一种通过自己编写的烧写FLASH的程序以及二次引导程序实现DSP上电自启动的方法。当DSP复位时内部引导装载程序会装载位于FLASH的前1KB的二次引导程序。装载成功后DSP从0x00地址开始执行二次引导程序;二次引导程序的作用就是完成加载用户应用程序,并且加载完成后跳到C程序入口点c_int00处,执行用户程序,实现用户程序的FLASH自启动。

FLASH自启动;TMS320C6416;二次引导;烧写FLASH

1 引言

近年来随着数字信号处理器(DSP)技术的迅猛发展,其越来越广泛地应用于生产生活的各个领域。其中,TMS320C6000系列TI公司推出的最新DSP型号,其性能得到了很大的提升,核心频率最高达到1GHz。在许多需要进行大量数字信号处理运算并兼顾高实时性要求的场合得以广泛应用。TI公司的C6x1x产品的内部BOOT只能加载1K的程序,如果应用程序大于1K则无法实现自启动。在TMS320C6000系列DSP的系统设计应用过程中,DSP器件的启动加载设计是最关键的技术之一,这就需要用户自己编写一个二次引导程序。本文针对这一问题提出一种有效解决的方法。

2 硬件系统设计

2.1 TMS320C6416芯片

TMS320C6416是TI公司最新推出的高性能定点DSP,其时钟频率可达1GHz,采用两级缓存结构,一级缓存 (L1)由128Kbit的程序缓存和128Kbit的数据缓存组成,二级缓存 (L2)为8Mbit;有2个扩展存储器接口(EMIF),一个为 64bit(EMIFA),一个为 16bit(EMIFB),可以与异步存储器 (SRAM、EPROM)或同步存储器(SDRAM、SBSRAM、ZBTSRAM、FIFO)实现无缝连接。本系统就是DSP通过外部存储接口EMIFB来外挂FLASH芯片,FLASH采用的是8位数据线接法。

在通过DSP对FLASH操作编程时,FLASH数据宽度为16bit时,DSP地址要左移 1bit;数据宽度为 8bit时,DSP地址要左移2Bit。有些FLASH资料已经分别将写操作命令在8位和16位的不同命令时序给出,这种情况下就不需要再进行移位。

2.2 FLASH芯片AM29LV400BT介绍

本系统采用的 FLASH芯片是 AMD公司推出的AM29LV400BT,存储容量是4M Bit。用户可根据需求配置成 512K x 8-Bit或者 256K x 16-Bit两种形式。由于TMS320C64x支持16bit的FLASH读写操作,但是只支持8-bit的FLASH加载;为了方便后面烧写FLASH,本系统采用的是512K x 8-Bit形式。

DSP通过EMIFB控制FLASH的读写和擦除;存储空间分配在EMIFB的CE1内,占用DSP内部地址范围是64000000-643FFFFF。其中A0-A19作为地址线,D0-D7作为数据线,CE为片选信号,WE是写选通信号,OE为使能信号,BYTE为8位或16位数据模式选择 (BYTE接地时是8位模式)。

2.3 接口原理图

3 二次引导程序

如前面所说因为TI公司的C6x1x产品的内部BOOT只能加载1K的程序,而用户的应用程序往往远大于1K,所以必须通过用户自己编写二次引导程序才能实现FLASH自启动。DSP上电后内部BOOT自动加载FLASH前1K数据,用户要编写的二次引导程序最终将写入FLASH的前1K存储空间,且该空间的剩余部分不能再用来存储其他程序。二次引导程序的作用就是按照一定的参数将存储在FLASH中的其他用户程序数据搬移到DSP内存空间,并且搬移完成后,要跳转到用户程序的C语言的入口地址c_int00处,开始执行用户程序。

本系统的二次引导程序采用汇编程序编写,其中主要代码如下:

以上程序中0x64000400可根据自己的FLASH地址而改变;而C语言程序入口地址,各段在RAM中起始地址以及段的字节长度都可以在用户工程的MAP文件中得到。

以下是一个工程的MAP文件部分内容:

上面分别显示了C语言入口地址以及各段在内存中的起始地址和字节长度。烧写FLASH的时候需用到这些参数,二次引导程序加载用户程序的时候也会用到这些参数。

4.FLASH的烧写与擦除

对FLASH的擦除和写操作都要按照一定的时序进行,不同的芯片可能稍微有所不同,这里首先按照芯片资料做如下定义:

以上程序分别定义了擦除烧写FLASH的命令内容以及地址。

下面定义擦除整片FLASH函数:

下面是烧写单字节到FLASH的函数内容:

下面是烧写一段数据到FLASH的函数部分内容:

首先将.boot_load段写入FLASH的前1k空间,然后在0x400地址处写用户应用程序的入口地址数据,最后依次写数据段的长度以及本段在RAM中的起始地址和本段数据。如果是多段,则按照第一段规则依次写入。需要注意的是,写FLASH的写入顺序要和二次引导程序相对应,不同的二次引导程序对应的写入顺序和内容不同。

5 应用程序烧写方法

用户将应用程序编写好后,只要简单地把编写的汇编二次引导程序添加到用户工程,同时要更改工程的CMD文件,将boot_load段编译到DSP内部RAM的前1k空间,即0-0x400内,然后重新编译工程即可。

利用上面烧写FLASH函数,建立一个工程FlashBurn.prj的工程,其作用是用将用户工程的内容从内存中读出来并烧写到FLASH中。首先查看前面编译好的用户应用程序工程里的MAP文件;MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的在内存映射文件。按照MAP文件把各需要写进FLASH的非初始化段的起始地址以及段长度参数设置好,然后设置本工程各代码以及数据段分配的CMD文件。需要注意的是一定要将FlashBurn工程的内存空间分配和用户应用程序的内存空间分配分开,不能重叠,以免相互覆盖。设置完成后编译工程。

最后将用户程序生成的.out文件通过 JTAG下载到DSP内部RAM中,但不要运行;接着将FlashBurn.prj的工程的.out文件用同样的方法下载到DSP内部RAM中并运行。这个程序完成的任务就是将先前载到片内RAM的用户工程数据写进FLASH。写完成后断电重启,DSP就会自动执行用户程序,实现用户程序自启动。

6 结论

本文以TMS320C6416为例阐述了用户自己编写烧写FLASH程序实现自启动功能,已经在工程中得到了应用。TI公司提供了一个烧写FLASH的工具FlashBurn,但是这种力法的缺点是需要将程序编译后生成的.out文件再转换成.hex文件;转换过程的同时,需要一个cmd文件。并且 FlashBurn工具运行时需要下载 FBTC(FlashBurn Target Component)到DSP系统中,然后由上位PC机通过仿真器发送指令和数据给下位DSP,具体对FLASH的操作由FBTC执行。然而,这个FBTC一般是针对TI公司提供的DSP专门编写的,与板上使用的FLASH的接口宽度、操作关键字都有关,对用户自己制作的硬件不一定适合。与FlashBurn工具相比较,本方法更为灵活,只要按照MAP文件更改下FlashBurn.prj工程中各段的参数就可以适用于其他DSP和工程,并且避免了文件格式转换的繁琐。

[1]汪安民,张松产,常春藤.TMS320C6000DSP实用计数与开发案例[M].北京:人民邮电出版社,2008.

[2]TMS320C6x Assembly Language Tools User’s Guide.1999

[3]CreationCreating a Second-Level Bootloader for FLASH.2006

责任编辑 王荣辉

The Self-implementation Method Based on TMS320C6416 of FLASH

JI Yun
(Chongqing College of Electronic Engineering,Chongqing 401331,China)

This paper introduces the self-implementation methods of the secondary bootloader and the flash burning in DSP in detail.After the resetting of DSP,the inner initial program loader would load the secondary bootloader of 1KI in FLASH.And then DSP executes the secondary bootloader from 0x00,which accomplishes the user's application program,after that,it jumps to the entry point c_int00 in C program and executes user program.Finally,the self-implementation f FLASH can be achieved.

FLASH self-implementation;TMS320C6416;secondary bootloader;flash burning

TP39

A

1674-5787(2010)05-0144-03

2010-08-22

冀云,男,重庆电子工程职业学院电子信息系,助理工程师。

猜你喜欢
用户程序应用程序入口
基于新一代称重设备的入口治超劝返系统分析
变速箱控制系统Bootloader设计与实现
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
秘密入口
作品三
第九道 灵化阁入口保卫战
基于CCS5.5的TMS320C6000程序Flash上电自举设计及三种固化方法对比
C8051F410单片机BootLoader的实现
DSP并行I/O自举加载方法研究