APP下载

一种基于TMS320C6205 DSP的在线升级方法

2012-08-14陆平林

通信技术 2012年2期
关键词:IC卡校验上位

陆平林

(数据通信科学技术研究所,北京 100191)

0 引言

DSP在线升级是指脱离集成开发环境,利用DSP系统已有的通道,在运行状态下对DSP软件进行升级,在线升级大大提高了DSP系统的可维护性和可扩展能力。DSP在线升级的一种方法是直接写Flash[1],DSP内原有应用程序加载到RAM上运行,升级文件直接写入Flash,覆盖原有应用程序,DSP复位后即可运行新的DSP程序。这种方法简单易行,但可靠性差,一旦升级文件有误,或升级过程中意外掉电,会造成系统瘫痪,需采用新的设计思路,实现可靠的在线升级功能。

实现 DSP的可靠在线升级的基本思路是:把DSP程序分为固化的用户引导程序 Userbootloader(区别于DSP厂商固化的bootloader)和可升级的应用程序App,Userbootloader程序在最初用仿真器或编程器写入,之后由 Userbootloader支持在线升级,有以下两种方案:

第一种方案是采用乒乓存储,原有DSP程序留有备份,升级程序和原有程序都存在Flash上,升级的同时在Flash置标志位,重启后Userbootloader通过读取标志,选择加载App[2-4]。这种方法需要有多余的Flash空间,可能会增加硬件成本。

第二种方案是 Userbootloader直接将新应用替换原有应用,升级完成后,加载 App到 RAM,跳转到应用入口执行[5-6]。对于这种方案,通常对App的引导是在加载App代码后跳到_c_int00[6],但因为Userbootloader和 App是两个不同工程,这样要求App工程在链接时,必须设置其_c_int00和Userbootloader工程的_c_int00运行地址一致,同时,App的中断向量表也需要进行重新定向。

基于C6205DSP的PCI-E卡,采用上面的第二种方案,提出了一种在线升级方法,对App的引导是在加载 App代码后,Userbootloader跳到地址 0开始执行,对App没有上述要求,提高了升级系统的通用性、灵活性和可维护性。

1 系统体系结构

升级系统体系结构如图1所示,分为上位机应用、API接口、PCI-E卡驱动和PCI-E卡4个层次。上位机应用和API接口运行在用户空间,上位机应用包括升级程序和业务程序,API接口用于实现应用程序调用的接口规范;驱动运行在操作系统内核空间,提供了访问硬件的接口。PCI-E卡插在上位机的 PCI-E插槽中,上位机应用通过 API接口和PCI-E卡驱动与卡通信。

2 硬件设计

PCI-E卡硬件逻辑框如图2所示,其核心采用TI公司的 TMS320C6205。C6205是一款高性价比DSP,有 64 kByte的片内程序区 IPRAM(地址0-0x10000)和64 kByte的片内数据区IDRAM,带两个多通道缓冲串行口MCBSP,支持4个通道的DMA,外部存储器接口(EMIF,External Memory Interfaces)分成4块空间CE0~CE3,通过EMIF总线,可以方便的扩展外设。

按照硬件设计,DSP通过CE0连接SDRAM,通过CE1连接FLASH。其中FLASH大小为16 MByte,分为128个块(BLOCK),每个块128 kByte,支持以块为单位设置写保护。由于CE1只有4 MByte空间,为支持访问Flash全部空间,用CPLD控制Flash地址的高4 bit,Flash地址低20 bit和DSP直接相连。这样把Flash空间分为16个窗口,每个窗口1 MByte。当DSP要寻址Flash时,先向CPLD写入窗口号,再在窗口内取偏移。

DSP通过串口连接了 IC卡读卡器,Userbootloader程序通过判断IC卡类型可以决定是否进入升级状态。

FPGA和PCI-E接口芯片一起完成接口转换工作,实现上位机和DSP的通路。

硬件上将DSP配置成为从Flash启动方式。系统复位后,C6205自动将Flash开始的64 kByte代码拷贝到IPRAM,然后从IPRAM地址0开始执行程序。

3 软件设计

3.1 Flash存储分配

Userbootloader和 App程序由两个完全独立的工程生成。最初在开发环境下用仿真器或 Flash编程器烧写Userbootloader和初始的FPGA配置数据,以后App就由Userbootloader和上位机程序控制进行升级。

Userbootloader从Flash起始地址0x1400000开始,DSP复位后首先运行Userbootloader。Userbootloader和初始FPGA配置数据所在的Flash前1 MByte空间设写保护,防止被意外写坏。Flash结构分配如图3所示。

3.2 Userbootloader设计

PCI-E卡上电启动后,DSP加载运行Userbootloader。Userbootloader本身大小不到64 kByte,可以不对自己做二次引导[7]。Userbootloader先进行必要的硬件寄存器配置,然后读取初始的FPGA配置数据配置 FPGA,以提供上位机到 DSP的通路。Userbootloader的流程如图4所示。

DSP有两种工作状态,升级状态和应用状态。Userbootloader检测插入的IC卡类型,根据IC卡类型和对APP数据的校验结果来决定进入的工作状态。

未插入IC卡或插入的IC卡不是升级IC卡时,Userbootloader对App数据进行校验。若校验通过,Userbootloader从Flash地址0x150000开始拷贝App的前64 kByte(实际是0xFF00 Byte)到IPRAM,然后跳到地址0执行App。App做二次引导,将自己的其余代码拷贝到SDRAM运行,这样DSP进入应用状态。应用状态下,DSP内运行的是App程序,由上位机服务系统发起应用。

当检测到升级IC卡或者App校验不通过时,则进入升级状态。升级状态下,DSP内运行的是Userbootloader程序,由上位机升级系统发起应用。Userbootloader等待上位机的升级指令,接收到上位机的升级指令后开始升级,升级步骤如下:

1)擦除App。2)逐帧接收上位机发来的App数据,写入Flash。3)接收上位机发来的 App校验值,用来校验写入Flash的App。若校验通过,将校验值写入Flash固定位置,升级完成,否则上位机需重新发起升级。

完成升级后,拔走升级IC卡,复位DSP,即可令DSP进入升级后的应用状态。实现Userbootloader加载功能时需要注意的是:1)先将App代码数据从Flash读到SDRAM,再将代码从SDRAM拷贝到IPRAM。

2)数据从SDRAM拷贝到IPRAM必须用DMA,且此时DMA代码必须放入IPRAM内执行[8]。

3)Userbootloader 没有拷贝App前64 kByte的最后256 Byte,是因为Userbootloader 的DMA代码和最后的跳转语句,放在IPRAM的最后256 Byte空间。代码拷贝将Userbootloader的前面部分覆盖,但不能将正在执行的部分覆盖,否则DSP运行结果不可预料。

3.3 App开发要点

对App来说,Userbootloader对其做了DSP复位时硬件Bootloader做的动作。App的启动过程和没有Userbootloader时类似,前64 kByte也被加载到IPRAM,也从IPRAM地址0开始执行,App的中断向量表放在App的起始位置,运行时中断向量表从地址0开始,不需要重置。这样App的开发和没有Userbootloader时几乎一致,原来没有考虑在线升级的App可以很容易的改为支持在线升级,只需要注意以下几个地方:

1)App作二次引导时,注意其起始Flash地址不是0x1400000而是0x1500000。

2)App前64 kByte的最后256 Byte没有加载到IPRAM。不过未加载部分仅占 IPRAM 总容量不到0.4%,最后这部分的IPRAM App一般用不到。若App需要再利用这256 Byte,App可以自己将代码数据拷贝到这块区域。

3)根据需要,App的升级数据可以包括 FPGA配置数据,App可以在启动或其他适当的时候对FPGA进行重新配置,App需定义好FPGA配置数据在Flash上的偏移位置。

4 结语

提出了一种对DSP程序进行在线升级的方法,用Userbootloade模仿硬件bootloader对App进行引导,对App的开发影响小,App不需要固定应用程序入口_c_int00的地址,也不需要做中断向量的动态重定位。基于TMS320C6205的PCI-E卡,设计并实现了在线升级系统。工程实践表明,该升级方法简便可靠,可以为其他嵌入式处理器升级系统开发提供参考。

在实际的类似应用中,根据具体情况,可以不使用IC卡,例如可以设计Userbootloader启动后等待一段时间,若这期间接收到上位机发出的升级指令则进入升级状态进行升级。

[1] 任利民.基于PCI卡的DSP程序在线升级技术研究[J].通信技术,2003(12):114-116.

[2] 石乃轩,冯伟,王健,等.基于TMS320VC55x DSP 在线升级的设计与实现[J].通信技术,2010,43(07):236-238.

[3] 杨达亮,陈军灵,张力成.DSP系统软件在线升级机制的研究和实现[J].电测与仪表,2006,43(01):60-62.

[4] 孙亚萍,张慧熙.一种新型 DSP 软件在线升级方法的研究与实现[J].微型机与应用,2010,29(05):72-74.

[5] 文军,王加懂.DSP程序在线编程的研究与实现[J].信息安全与通信保密,2007(08):193-195.

[6] 李鹏.DSP在线升级与资源优化再配置[J].计算机工程,2008,34(17):225-226.

[7] Texas Instruments. Creating a Second-Level Bootloader for FLASH Bootloading on TMS320C6000 Platform With Code Composer Studio [DB/OL].(2006-05-01)[2011-3-20]. http://focus.ti.com.cn/cn/lit/an/spra999a/spra999a.pdf.

[8] Texas Instruments.TMS320C620x/C670x DSP Program and Data Memory Controller/Direct Memory Access(DMA) Controller Reference Guide [DB/OL].(2004-09-09)[2011-3-20]. http://focus.ti.com.cn/cn/lit/an/spru577a/spra999a.pdf.

猜你喜欢

IC卡校验上位
使用Excel朗读功能校验工作表中的数据
工商业IC卡控制器改造为物联网控制器实践
在用电梯加装外接式IC卡运行控制系统设计改进
特斯拉 风云之老阿姨上位
炉温均匀性校验在铸锻企业的应用
电子式互感器校验方式研究
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
长春开通公交IC卡充值平
浅谈微电子故障校验