APP下载

基于PCI总线的DSP6713在线烧写方法研究

2017-07-19安景新赵昶宇

科技与创新 2017年13期
关键词:上位总线应用程序

安景新,赵昶宇

(1.海军驻天津八三五七所军事代表室,天津 300308;2.天津津航计算技术研究所,天津 300308)

基于PCI总线的DSP6713在线烧写方法研究

安景新1,赵昶宇2

(1.海军驻天津八三五七所军事代表室,天津 300308;2.天津津航计算技术研究所,天津 300308)

基于DSP的应用程序的传统升级方法是将控制器拆卸下来,然后利用仿真器和JTAG完成程序的烧写工作,该方法既费时又费力。为了提高升级程序的效率,降低设备维护的成本,以DSP6713为例,提出了一种在线烧写应用程序的方法,阐述了在线烧写的原理,介绍了上位机端软件、DSP端软件和bootloader程序的设计思想,为DSP技术开发和维护人员提供了一种方便、快捷的升级程序方法。

PCI总线;DSP6713;在线烧写;bootloader

在线烧写技术,即在应用编程(IAP,In-Application Programming),是在系统运行的过程中的动态编程,从系统中获取新代码并对自身进行重新编程,用程序来改变程序的一种方法。该方法不需要借助外部手段,也不用进行任何机械操作,即可完成程序执行代码的动态修改。通常将芯片的内部存储区分为3个部分,即引导程序区、运行程序区和下载区。芯片接收到下载命令后,进入引导区运行引导程序,在引导程序下将用户应用程序代码内容下载到下载区,下载完毕并校验通过后再将下载区的内容复制到运程程序区,运行复位程序,完成Flash的在线烧写。

本文以TMS320C6713浮点DSP为例,提出一种基于PCI总线的DSP在线烧写的方法,避免了在升级程序时因拆卸控制器带来的各种问题,降低了设备的维护成本。

1 TMS320C6713在线烧写原理

TMS320C6713没有自带FLASH存储器,应用程序要烧写到外扩FLASH中,由外扩FLASH引导自启动。由于FLASH读取速度较RAM相对比较慢,因此,6713需要在上电复位后将FLASH中的应用程序代码引导到内部RAM中运行。

具体流程为: FLASH起始地址开始的1 Kbyte的内容存放6713的启动程序bootloader;上电复位后,6713会由DMA或EDMA自动将FLASH起始地址开始的1 Kbyte的内容搬移到内部RAM中,开始执行bootloader程序。bootloader程序的功能是完成FLASH中应用程序到6713内部RAM的复制工作。当复制工作完成后,6713会调用c_int00()复位中断去执行,开始执行应用程序,从而完成了6713的在线烧写和自启动工作。

2 在线烧写软件设计

TMS320C6713的在线烧写软件部分主要是由上位机端软件和DSP端软件构成。上位机端软件主要完成读取可执行代码文件,进行格式转换后将该文件通过PCI总线发送给DSP端,等待DSP端的响应;DSP端软件主要接收上位机端软件发送的可执行代码文件,并将该文件立即烧写到FLASH中,完成烧写过程。此外,DSP端还需实现bootloader程序的功能。

基于TMS320C6713开发的应用程序经过CCS编译生成的目标文件类型为.out文件,而TMS320C6713无法识别该文件类型,需要通过hex6x.exe工具将.out文件转换成TMS320C6713可以识别的十六进制文件类型.hex文件。

2.1 上位机端软件设计

上位机端软件首先读取.hex文件,通过解析hex文件内容,将其拆分为多条数据帧结构。上位机端软件与DSP端软件通过PCI总线进行通讯。

上位机端软件向DSP端软件发送的每帧数据都带有校验和,当DSP端程序接收到该帧数据后,通过校验和对接收数据进行确认。确认完毕后,DSP端软件将确认帧发送给上位机端软件,上位机端软件收到DSP端发送的确认帧后,再向DSP端软件发送下一帧数据;当上位机软件将全部数据都发送完毕后,上位机端软件向DSP端软件发送数据的总长度,DSP端软件将该总长度与接收到的数据长度进行比较,将结果发送给上位机端软件,完成整个数据的总校验。

2.2 DSP端软件设计

为了保证接收数据的准确性和完整性,DSP端软件在接收数据的过程中,不执行对RAM或FLASH操作的相关代码;同时,关闭其他的外部中断,仅响应PCI中断,保证了数据接收的实时性。此外,DSP端软件将接收到的数据存储在外扩的FLASH中,等到接收完全部数据后,再进行程序的烧写,防止在接收数据过程中出现意外,进而导致系统程序不能正常工作。

FLASH的烧写工作也是DSP端软件需要实现的重要功能。在擦除或读写FLASH之前,必须先执行相应的命令字序列,即在指定的FLASH地址处写入指定的指令代码。向FLASH的指定地址中写入数据,需要4个总线周期。前两个是解锁周期,第三个是建立编程命令,最后一个周期完成向编程地址中写入编程数据。

待写入的数据为.hex文件内容。

上位机端软件和DSP端软件的处理流程如图1所示。

图1 上位机端软件和DSP端软件的处理示意流程图

2.3 bootloader程序设计

bootloader程序的主要功能是将应用程序段从FLASH复制到DSP的内部RAM中,再跳转到程序的入口处开始执行主程序。DSP上电复位后,DMA/EDMA自动拷贝1 KB数据到地址0处,然后从0地址处开始执行引导代码指令。使用DMA/EDMA可以快速、灵活地实现DSP存储空间内数据的搬移。数据搬移的源/目的可以是片内存储器、片内外设或外部器件。

bootloader的示例程序如下:

main()

{

init();//初始化DSP

init_DMA();初始化DMA

*(int*)DMA_OPT=0x29300001;//开始拷贝

while(!((*(int*)DMACIPR)&0x00000001));

*(int*)DMACIPR|=0x00000001;

asm(“NOP 8”);

asm(“MVK.s2 0x00003820,B0”);//跳转到应用程序代码

asm(“B.s2 B0”);

asm(“NOP 6”);

}

上述代码中的0x00003820是DSP程序.map文件中的boot.obj地址。c_int00函数定义为程序代码入口,c_int00函数在系统复位后首先被执行,引导程序进入main主程序。c_int00函数包含在boot.obj中,boot.obj链接在rt s6700.lib运行支持库内。“MVK.s2 0x00003820,B0”可实现跳转到应用程序代码,开始执行应用程序。

3 6713在线烧写的步骤

6713在线烧写分为以下4个步骤:①利用CCS开发工具将要升级的应用程序编译生成.out文件,利用hex6x.exe工具将.out文件转换成.hex文件;②利用DSP仿真器将DSP端软件烧写完毕,此时DSP具有在PCI总线下烧写程序的功能;③利用上位机端软件将被烧写的应用程序发送到DSP中;④DSP重新上电,即可自动运行新更新的应用程序,完成DSP的在线程序烧写。

4 结束语

本文研究的基于PCI总线的DSP6713在线烧写方法和传统的烧写程序的方法相比,具有明显的优势,极大地降低了软件维护人员的工作量,提高了软件升级的质量和效率。该方法已成功应用到某型号DSP控制系统中,经过实际应用证明,软件烧写过程快速、稳定、可靠。

该技术的研究使DSP的程序的更新可以脱离仿真器,为程序的更新和程序的远程维护提供了方便,具有很强的实用性。

[1]刘德生,李杰.基于JTAG的DSP外部Flash在线编程与引导技术[J].电子技术应用,2005(03).

[2]李方慧.TMS320C6000系列DSPs芯片的原理与应用[M].北京:电子工业出版社,2000.

〔编辑:张思楠〕

TP368.1

A

10.15913/j.cnki.kjycx.2017.13.087

2095-6835(2017)13-0087-02

猜你喜欢

上位总线应用程序
关于CAN总线的地铁屏蔽门控制思路论述
一场史无前例的乐队真人秀
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
基础油“上位”
Q&A热线
三星电子将开设应用程序下载商店
PCI9030及其PCI总线接口电路设计
微软软件商店开始接受应用程序
基于VC的PLC数据采集管理系统