中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 模拟技术 >>电子行业新闻正文

TMS320C6713的软件自动更新方案设计

时间:2007/4/9 12:13:00  作者:  来源:ic72  浏览人数:1292
 
 

      引 言

      目前市面上存在大量基于DSP的嵌入式系统,随着系统的完善和功能的增强,几乎所有的DSP系统都面临着软件更新的问题,这时,更新方法的简易和高效就显得特别重要。在基于DSP(数字信号处理器)的嵌入式系统中,软件更新通常需要借助仿真器将最新的程序下载到目标板上,然后将程序写入非易失型存储器中。同时,由于新程序编泽、链接后生成的各段的大小和运行空间会发生变化,系统引导程序也需要作相应的改动。例如:上一个版本的程序对应的.text段的运行空间位于0x80000000~0x80000l00,而新程序对应的.text段的运行空间则位于0x80001000~0x80001110,.text段的运行空间和长度都发生了变化。另外,引导程序的任务之一是将.texl,段的数据从Flash中复制到其运行空间,因此就必须重新修改引导程序,将.text段复制的起始地址由0.x80000000改为0x80001000,并将复制长度改为0xll0,每一次软件更新都会重复上面的步骤。在远程系统控制应用中,这种更新方法就显得非常不便;在需要同时对大量的DSP系统进行软件更新或经常需要软件更新的情况下,这种方法的效率也非常低下。

      笔者通过对TMS320C6713[1]DSP系统引导过程的分析和COFF[2](公共目标文件格式)文件格式的分析,提出了一个软件自动更新的方案,并在基于TI公司的TMS320C6713芯片与SST公司的SST39VFl601并行Flash芯片组成的硬件平台上实现;最后还简单介绍了本方案在TMS320VC5409系统上的实现。实现本方案的一个前提是DSP硬件系统上具有某种接口,可以从计算机中下载COFF文件到本地系统上,笔者使用的平台是通过UART接口连接计算机,使用Windows自带的超级终端工具,通过Xmodem协议将COFF文件下载到目标系统上,当下载完成后更新就会自动完成。DSP重新上电或复位后运行的就是最新的程序。本方案主要包括两个过程:一是通过解析COFF文件得到所需的数据并烧入Flash;二是系统上电后自动根据Flash中最新的数据引导、运行。下面详细描述两个过程的实现方法。

      1 COFF文件解析

      C或汇编程序在编译后会生成很多段(如.text、.bss、.switch、.cinit、.data等),这些段又可以分为需要初始化的段和不需要初始化的段。这里,需要初始化和不需要初始化是针对系统引导来说的。例如:.text为程序代码数据,系统上电后需要引导程序从Flash中复制到其运行空间中,称为“需要初始化的段”;.bss为初始化为0的数据空间,这个初始化为0的动作在C语言环境建立时进行,属于系统程序的一部分,与引导程序无关,称为“不需要初始化的段”。这样,只需要保存初始化的段到Flash中,而并不需要通过段的名称来识别哪些段是需要初始化的段,哪些是不需要初始化的段,两种类型可以通过COFF文件中的段信息表部分来区分。

      1.1 COFF文件简介

      COFF文件是DSP汇编器和链接器创建的目标文件,通常为项目目录下的Debug目录里后缀为.0ut的文件。在COFF文件中包含文件头、可选择的头信息、段信息表、每个初始化段的数据和重定位信息、符号表、字符串表。从中可以看出,COFF文件中包含了很多冗余的信息成分。为了节省空间、提高效率,在这里不直接将COFF文件烧进Flash,而只保存所需的信息,即每个初始化段的数据和程序的人口地址。下面详细描述如何从COFF文件中得到这些信息。

      1.2 COFF文件格式

      在COFF文件中,文件头部分提供了该文件中包含的段的个数,解析程序会根据段的个数扫描每个段的信息并保存初始化段的数据;可选择的头信息包含了程序的入口地址,在系统引导结束后会直接跳转到这个地址,系统就开始正常工作。段信息表的格式说明如表1所列。其中,段物理地址是该段的执行地址,也就是程序运行时该段所在的空间;原始数据文件指针指向段数据在COFF文件中的位置,如果该段为初始化段,那么从这里就可以得到需要写入Flash的数据的位置。计算如下:   

ic72新闻中心

ic72新闻中心

      段数据地址=COFF文件起始地址+原始数据文件指针

      标志信息用于判断该段是否为需要初始化的段,如表2所列。需要初始化的段标志为0x40和Ox20,这样就获得所有需要引导程序复制的段数据。此时不能将这些数据直接烧人Flash,若直接烧入Flash,则引导程序将无从知道段数据的起始位置、运行空间地址和长度。本方案设计了一个简单的数据结构放在段数据前,称为“段头”。数据结构如下:    

ic72新闻中心

      1.3 Flash存储空间安排

      获得所需的数据后,下一步就是将这些数据烧人Flash。Flash空间的数据格式如下:

ic72新闻中心

      除了保存段头和段数据,还需要记录程序入口地址和后面所有段的个数。程序入口地址是目标程序第一步开始执行的地址,当引导程序复制完所有的数据后就直接跳到这个地址开始运行。段的个数用于引导程序判断是否所有段的数据已复制完。

      在烧写Flash前还需要对Flash空间进行划分。以本系统为例,Flash空间为0x90000000~0x90400000,共4MB。划分如下:

      第一部分存储的是第一级引导程序。对TMS320C6713系统来说,这部分代码编译后产生所有初始化段大小必须小于1 KB(其详细分析见后),所以这部分空间大小固定为1 KB,即0x90000000~0x900003ff。

      第二部分存储的是第二级引导程序,这部分按照上述数据格式烧写。其长度没有特别限制,只需根据保存第二级引导程序所需的最大空间安排。由于Flash每个扇区的大小为8 KB,为了便于对上一部分的擦除操作,将第二部分的起始地址延长到Flash第二个扇区的起始地址,其空间为0x90002000~0x90003fff,共8 KB。

      第三部分为系统程序,其长度根据保存系统程序所需最大空间安排。数据格式与第二部分相同,对应地址为0x90004000~0x90103fff,共1 MB。剩余的Flash空间作其他用途。

      整个Flash空间划分如图1所示。注意:以上3个部分一旦规划好,每个部分的位置就不能改动。对于第二部分,只要第二级引导写好,这部分需要的空间也就确定了;而第三部分在每次软件更新时都要同时更新,因此需要预留足够大的空间。  

ic72新闻中心

      整个COFF文件解析流程如图2所示。

ic72新闻中心

      2 系统引导程序设计

      TMS320C6713支持3种引导方式:主机引导、仿真引导和EMIF引导。本方案采用EMIF引导,在此模式下,位于外部存储空间CE1的Flash中的1 KB代码通过EDMA拷贝到片内RAM地址0处。由于大多数引导程序代码大于1 KB,因此本方案采用两级引导方式[3]。编写引导程序的目的就是,将所有初始化段的数据从Flash中拷贝到其对应的运行时的存储空间。

      2.1 第一级引导程序设计

      对于基于TMS320C6713的系统,第一级的引导程序大小被严格限制在1 KB内,因此只能用汇编语言编写程序。在系统上电后第一级的引导程序由EDMA从Flash拷贝1 KB到片内RAM并开始执行,因此第一级引导程序编译后所有初始化段的长度不能大于1 KB。对于笔者提供的程序,这段程序编译后产生的初始化段只有.text段。其任务是根据数据格式找到段数据并拷贝到对应的物理地址中,然后跳到第二级引导程序入口处。第一级引导程序流程如图3所示。

ic72新闻中心

      2.2 第二级引导程序设计

      第二级引导程序大小没有限制,因此本方案使用C语言来实现。在本硬件系统中,系统程序在SDRAM中运行,因此在第二级引导程序拷贝段数据之前还需要初始化EMIF。如果在硬件上还用到了其他外设,也可以在这里完成初始化。初始化完成后就开始拷贝数据的过程,这与第一级引导程序的拷贝过程是完全相同的。第二级引导程序流程如图3所示。

      这里用简单的例子来解释系统引导程序如何工作的。在Flash空间中,所有的段头和段数据都是紧凑安排的。也就是说,上段头后面紧接着段数据,本段数据结束后就是下一段的段头。这种安排是必须的,否则,引导程序在复制完上一个段的数据后就无法找到下一个段头的地址。以第一级引导程序复制Flash中第二级引导程序为例说明。第二级引导程序的各段数据在Flash中的起始地址为0x90002000,首先从头两个字中读出程序入口地址、所有数据大小和段个数;然后读取段头,段大小用于确定本段数据长度;跳过本段数据区为下一段头开始位置,段物理地址则说明了段数据复制的目的地址。若复制的段个数等于开始读出的段个数,则表明所有数据复制均已完成,然后跳转到程序人口地址。从这个过程中可以看出,引导程序的复制过程完全是根据段头的信息来的。当软件更新时,段头信息也会相应更新,与引导程序无关。因此,引导程序可以自适应新程序段的变化,而不需要重新修改引导程序。

      3 在TMS320VC5409系统上的实现

      大多数DSP系统的引导过程都大同小异,笔者也将本方案应用在基于TMS320VC5409的硬件平台上。对于COFF文件的解析,两种平台没有区别,解析得到的段数据也同样是加上段头后烧进Flash。TMS320VC5409与TMS320C6713唯一的区别在于其引导过程。TMS320VC5409的引导方式较多,对本方案的实现也多种多样,这里只简单介绍笔者所使用的方法。

      将MP/MC引脚拉高,使TMS320VC5409为微处理器模式。这样程序空间0xff80~0xffff映射到外部,同时硬件上将Flash空间连接到DSP的0x8000~0xfff程序空间上。DSP上电复位后,PC从程序空间的0xff80开始执行,需要做的是在0xff80对应的Flash空间中写入一个跳转语句,将DSP跳转到引导程序开始的位置。可以看出,由于引导程序没有长度限制,因此采用一级程序引导。注意:此时的引导程序并没有复制到片内RAM中,而是直接在Flash上执行,所以在编译引导程序时要注意链接文件的书写。当引导程序开始执行后,直接在预先设定 好的Flash空间中根据1.2小节中的结构体寻找段数据并复制,复制完成后跳转到系统程序入口处。

      编者注:实现代码见本刊网站www.mesnet.com.cn。

      4 结 论

      本文介绍了一种基于TMS320C6713系统的软件自动更新方案。该方案具有实现简单、效率高的优点,且一旦实现后,每次软件更新时无须改动引导程序。目前该方案已应用在国家自然科学基金项目自动指纹识别系统中,收到了非常好的效果。实践表明,本方案具有很好的可移植性,可以在TI公司的多种DSP平台上得到应用。

 
【相关文章】
·PXI模块触发总线接口的CPLD实现
·TMS320C6713的软件自动更新方案设计
·NAND Flash芯片K9F1208在uPSD3234A上的应用
·基于视频解码芯片与CPLD的实时图像采集系统的设计
·指纹产品在汽车领域里的应用
·一种SF6气体的露点检测系统的设计
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9