摘 要:摘要:产品的软件不断升级,带来了许多软件在外场升级工作,DSP平台软件升级一直采用仿真器烧录。对于此操作过程,必须先将产品拆开,接上仿真器,加载程序,设置断点,然后再继续运行。这个过程对于没有一定软件基础的人来说,操作相当复杂,容易出错。上述问题可以通过对软件升级人员进行反复培训来解决问题。但是更危险的是整个烧片过程需要拆开机箱,这个过程给产品带来了很多难以预计的风险,比如静电的作用,二次安装是否到位。
关键词:关键词:DSP;在线编程;串口烧录
中图分类号:TP311 文献标识码:A 文章编号:
1.引言
在产品研制过程中,由于软件不断更改完善,带来了许多外场软件升级的工作,DSP平台软件升级一直采用仿真器烧录,对于此操作过程,首先必须将产品拆开,接上仿真器,加载程序,设置断点、然后再继续运行仿真器程序进行烧录,这个过程对于没有一定软件基础的人来说,操作相当复杂,容易出错。上述问题可以通过对软件升级人员进行反复培训来解决。但是整个烧片过程需要拆开机箱,这个过程给产品带来了很多难以预计的风险,比如静电的作用,二次安装是否到位。
如何简化烧片流程,提高软件升级的可靠性,并且减少软件升级操作的风险,这是一个需要研究的重要课题。本文详细介绍了ADI21160 DSP的启动过程,以及如何通过修改其启动过程,使得直接通过串口,进行软件升级,并且提供一个友好、易操作的界面。
2.DPS的启动原理及流程
DSP21160的引导方式有三种:prom引导,host引导,link port引导。DSP不能直接运行用户程序,需要一段引导码在复位后先对系统所初始化,再从外部设备调入实际的用户程序。引导码执行后会进行自我覆盖以保证存储器的充分利用,然后跳转到实际用户程序,此时用户程序和数据与EXE文件的内容完全一致。目前我们的产品研制都是采用prom方式,对于prom方式,其具体流程如下:
a)DSP21160上电,或者复位之后,II6,IM6,C6,CP6,GP6,EI6,EM6,EC6都为固定值;
b)ADSP21160进入IDLE状态,PC指针为40004H;
c)DMAC6参数寄存器初始化;
d)BMS有效;
e)DMA开始运行。
在上述过程之后,编译生成的ldr文件的前256个字的指令被加载的Ox40000的地址中,也就是编译所生成的引导码段。其主要功能是将程序代码中除了引导码自身之外的所有部分装入DSP内部RAM,同时对RAM进行初始化。
编译生成的运行文件一般有大量的初始化数据,在其加电复位后的初始值为0,Vdsp++的链接器将这些数据块用地址和长度记录,从而提高在加载过程中的效率。编译后有如下数据块:
标识号初始化类型
0FINAL INITIAL
1ZERO DM16
2ZERO DM32
3ZERO DM40
4INIT DM16
5INIT DM32
6INIT DM40
7ZERO PM16
8ZERO PM32
9ZERO PM40
10ZERO PM48
11INIT PM16
12INIT PM32
13INIT PM40
14INIT PM48
当读入标号为1,2,3,7,8,9,10的时候,即执行相应的填0过程。当读入4,5,6,11,12,13,14则将后续的代码引导进入内部存储器。当读入0标识块时,此标识后的48 BIT字将被写入地址0x40050地址。同时启动DMA来覆盖引导码。在DMA结束的时候,执行存放在0x40050的RTI指令。程序跳转会0x40004,此处仅有一条对系统配置寄存器初始化的指令,接下来执行0x40005从而指向真正的用户代码。
引导码文件位于211xxldr160_prom文件夹下。这个文件夹下的工程编译后将生成 ,在我们工程通过仿真器加载时,不影响正常工程的运行,当生成ldr文件时,将变为ldr文件的头部引导段。
3.软件实现
DSP专用仿真器进行烧录程序的烧录软件是将ldr文件作为一个数组进行引用,烧录软件首先进行擦片,等待擦片完成,而后写数据。
在上述原有程序烧录过程的基础上,要实现DSP的应用程序在线烧录有如下问题要解决:
a)让产品的DSP处理器在监控程序、应用程序之间选择跳转运行;
b)编写在线烧录上位机程序,在上位机上通过串口将ldr文件发送至产品内部监控软件;
c)监控软件将接收到的ldr文件烧录到FLASH特定的区域中。
由上可知,在一片FLASH中,最终会存储两个程序目标代码,分别是监控程序目标代码和用户实际应用程序目标代码。其中,监控程序目标代码用专用仿真器烧录在FLASH芯片特定区域。
监控程序主要有两个主要模块构成:主程序模块,RS422数据接收中断模块。
主程序流程图如图一所示:
图一主程序流程图
在该模块中,程序将接收到的目标文件进行烧录。程序在主循环中等待数据块接收结束,烧完一包数据之后,监控程序将会将本次烧录的块号回送,上位机软件根据此号,进行下一块数据的发送。在最后一块数据烧录完成之后,监控软件将把烧录出错的总字节数发送给上位机软件。
DSP需要根据输入的监控/应用状态判断或是加载监控软件,进行软件升级;或是直接加载正常的产品应用软件。具体实现思路如下,文件中修改中间获取引导地址部分,将所获取的地址添加一个分支,根据当前状态确定判断是正常的地址,或是在其地址基础之上偏移2个块的长度。其具体过程如下:
a)调整好等待寄存器,系统配置寄存器,用于可靠读取监控应用状态;
b)读取当前监控应用状态;
c)如果处于监控状态则将加载地址赋值为监控软件的地址,否则为正常代码段的地址;
d)恢复等待寄存器和系统配置寄存器,以免影响后续操作;
4.DSP21160芯片应用程序在线烧录的硬件支持
为了实现DSP21160芯片应用程序在线烧录,必须在产品的电路板设计上加以更改,需要的硬件支持主要有两方面:一是增加串口,用于支持通讯以接收目标文件;二是监控/应用开关,用于判断当前的监控应用状态。监控/应用开关通常是产品通过测试电缆采集的一个离散信号(产品连接正式电缆时始终为应用状态,即一直执行应用程序)。
5.使用说明
产品应用程序第一次在线烧录前,通过专用仿真器将监控程序烧入FLASH。在应用程序在线烧录实际操作过程中,先要运行在线烧录上位机程序即DSP软件升级工具。通过该工具经由上位机(PC机)的串口向产品发送ldr文件,在产品中的监控程序收到之后,自动完成烧片过程。
其具体过程如下:
a)将产品的串口接至PC机串口,将产品调试电缆打至监控端;
b)点击运行DSP21160软件升级工具,界面如下:
c)点击握手按钮,此时,左侧应显示握手成功;
d)点击打开文件烧片按钮,选择需烧写的LDR文件:
e)点击烧片按钮;
f)进度条将显示当前的烧片进度,当烧片结束时将提示烧片结束;
g)将产品调试电缆监控/应用开关拨至应用状态,按复位开关,应用软件开始运行。此时软件升级工作结束。
6.结语
本方案已经在多个型号中得到运用,现在使用的ADSP21160,TS201都得到了验证。该方案对于硬件需要添加一个串口,以及一个监控应用线。由于传输使用的是RS422总线,所以传输需要一定的时间,对于烧写一个50000行左右的ldr文件大概需要3分钟。但从整体而言,由于免去了拆机箱的时间,总体可以节约时间,采用此种方案之后,将简化烧片流程,减少烧片的时间,降低了风险,可以在以后的型号中广泛使用。
参考文献
1C++程序设计教程 中国科学技术出版社 1995
2C语言程序设计教程高等教育出版社 1992
3高性能DSP与高速实时信号处理 西安电子科技大学出版社 2002
4ADSP SHARC 系列DSP应用系统设计 电子工业出版社 2003
5TigerSHARC DSP应用系统设计 电子工业出版社 2004
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。