一种DSP程序的远程升级方法与流程

文档序号:22428028发布日期:2020-10-02 10:04阅读:496来源:国知局
一种DSP程序的远程升级方法与流程

本发明属于属于嵌入式设备领域,具体涉及一种dsp程序的远程升级方法。



背景技术:

dsp(digitalsignalprocessor,数字信号处理器)是一种数字信号处理设备,在工业控制控制、图像处理、通信、导航等领域有广泛的应用。

通常在含有dsp芯片的设备,程序在出厂时已经通过jtag烧写在flash中,随单板封装在机壳中。然而在产品成熟前常常需要对程序进行更改升级,如果使用jtag烧写,一般机箱外部没有jtag接口,需要机箱开盖处理,机箱有引入多余物的风险,并且当产品数量比较大时,维护人员工作量大,可维护性差。

通过串口等通信接口远程升级可以解决以上问题。ti提供了第三方工具c2prog软件可以对部分dsp芯片进行串口升级,其不足之处是需要将芯片设置为sci启动模式,晶振可选频率有限,应用受限,在实际使用中大多数场合使用flash启动。此外有一种方法是在用户代码中添加升级模块,将升级烧写代码和用户应用代码混合编译,在进入升级流程后将烧写和通信部分代码搬移到ram执行,通过通信接口接收可执行文件的bin文件数据保存到flash中,可实现串口远程升级,该方法的不足之处是当代码烧写错误、代码本身有问题或者编程flash时突然断电,烧写在flash的代码重新上电启动失败,无法再次远程升级,该方法的优点是无需额外的上电等待时间,但是可靠性差,发生一次错误导致程序无法启动则必须重新用jtag烧写。

另外有一种普遍采用的将引导烧写程序和用户程序相互独立运行的远程升级方法,该方法采用上电延迟等待升级指令的方法,等待超时则跳转到用户程序,收到升级指令则运行烧写升级分支对引导烧写程序或者用户程序升级。如在申请号为[cn201510634073]和[cn201010274274]中提到的方法。但是如果引导烧写程序烧写失败(如烧写flash时断电,flash异常导致烧写失败、烧写的可执行文件错误等),就不得不重新打开机盖烧写;长时间使用后,如果flash某些存储位异常,会导致烧写程序或者用户程序加载失败;此外为了减小烧写过程中断电导致烧写失败的几率,通常使用外部ram缓存可执行文件,对ram容量要求高,在很多单板体积受限的场合无法使用。



技术实现要素:

针对现有技术中存在的技术问题,本发明提供了一种dsp程序的远程升级方法,有效地提高了dsp远程升级的可靠性,不仅提高了用户程序烧写引导执行的可靠性,同时提高了引导烧写程序升级和执行的可靠性。

为了解决上述技术问题,本发明通过以下技术方案予以实现:

一种dsp程序的远程升级方法,包括:

远程pc端发送升级协议指令,所述升级协议指令包括对码指令、文件数据传输指令、备份指令和恢复指令;

dsp上电执行引导程序,等待接收所述对码指令;

若dsp在预设时间内接收到所述对码指令,则跳转至烧写程序对所述烧写程序自身进行升级和备份,或跳转至烧写程序对用户程序进行升级和备份。

进一步地,若dsp在预设时间内未接收到所述对码指令,则跳转至用户程序,在跳转至所述用户程序之前,所述引导程序检测所述用户程序的文件校验和是否正确,若正确,则执行所述用户程序;若不正确,则执行所述用户程序的备份程序。

进一步地,在远程pc端发送升级协议指令前,利用hex.exe工具将所述烧写程序或所述用户程序的out文件转换为bin文件。

进一步地,在跳转至所述烧写程序之前,所述引导程序检测所述烧写程序的文件校验和是否正确,若正确,则执行所述烧写程序;若不正确,则执行所述烧写程序的备份程序。

进一步地,若所述文件数据传输指令中的软件号为所述烧写程序的软件号,则对所述烧写程序自身进行升级和备份;若所述文件数据传输指令中的软件号为所述用户程序的软件号,则对所述用户程序自身进行升级和备份。

进一步地,所述烧写程序的bin文件根据所述文件数据传输指令进行分解打包,通过通讯接口传输到dsp,先将所述烧写程序的bin文件保存在flash中对应的默认区域,dsp重新上电,执行烧写流程,若执行的是默认区域的烧写程序,则发送备份指令,将所述烧写程序的bin文件从flash中对应的默认区域复制到备份区域,实现升级和备份;若执行的不是默认区域的烧写程序,则通过所述恢复指令将备份区域的程序复制到默认区域。

进一步地,所述用户程序的bin文件根据所述文件数据传输指令分解打包,通过通讯接口传输到dsp,直接将所述用户程序的bin文件保存在flash中对应的默认区域和备份区域,实现升级和备份。

进一步地,在首次使用远程升级前,利用仿真器将所述引导程序和所述烧写程序烧写到dsp的flash中。

进一步地,dsp上电执行引导程序具体包括:对dsp的时钟、中断、定时器和通讯接口进行初始化、在预设时间内等待所述升级协议指令以及程序跳转功能。

与现有技术相比,本发明至少具有以下有益效果:本发明提供的一种dsp程序的远程升级方法,提出一种引导程序、烧写协议程序和用户程序独立的方法,将传统的引导烧写程序拆分为两个单独的引导程序、烧写协议程序。引导程序放在flash开始处,裁剪到最优最小的引导程序执行简单的初始化、等接收升级协议指令、文件校验引导功能;带协议的烧写部分作为独立的程序存储和执行,同时对烧写程序和用户程序在flash中进行冗余备份。引导程序功能固定,烧写一次后无需变更,带协议的烧写程序(通常附带参数装订等辅助功能)和用户程序往往需要维护升级,冗余备份的设计保证当一个区域的烧写程序因断电或通讯问题升级失败时可以使用备份程序替代执行,同时也可以使用备份程序检测恢复烧写失败的程序区;冗余备份可以降低因flash长时间使用个别存储点损坏导致程序加载失败的几率,此外由于采用备份设计无需担心掉电等原因导致烧写失败,提高烧写程序和引导程序的可靠性。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式中的技术方案,下面将对具体实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种dsp程序的远程升级方法的设备结构框图;

图2为本发明一种dsp程序的远程升级方法的程序分布图;

图3为本发明一种dsp程序的远程升级方法的远程升级运行主要流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

作为本发明的某一具体实施方式,一种dsp程序的远程升级方法,包括:

远程pc端发送升级协议指令,升级协议指令包括对码指令、文件数据传输指令、备份指令和恢复指令;具体的,在远程pc端发送升级协议指令前,利用hex.exe工具将烧写程序或用户程序的out文件转换为bin文件;

dsp上电执行引导程序,等待接收对码指令;具体的,dsp上电执行引导程序具体包括:对dsp的时钟、中断、定时器和通讯接口进行初始化、在预设时间内等待升级协议指令以及程序跳转功能;

若dsp在预设时间内接收到对码指令,则跳转至烧写程序对烧写程序自身进行升级和备份,或跳转至烧写程序对用户程序进行升级和备份;

具体的,在跳转至烧写程序之前,引导程序检测烧写程序的文件校验和是否正确,若正确,则执行烧写程序;若不正确,则执行烧写程序的备份程序;

若文件数据传输指令中的软件号为烧写程序的软件号,则对烧写程序自身进行升级和备份;若文件数据传输指令中的软件号为用户程序的软件号,则对用户程序自身进行升级和备份;

烧写程序的bin文件根据文件数据传输指令进行分解打包,通过通讯接口传输到dsp,先将烧写程序的bin文件保存在flash中对应的默认区域,dsp重新上电,执行烧写流程,若执行的是默认区域的烧写程序,则发送备份指令,将烧写程序的bin文件从flash中对应的默认区域复制到备份区域,实现升级和备份;若执行的不是默认区域的烧写程序,则通过恢复指令将备份区域的程序复制到默认区域;

用户程序的bin文件根据文件数据传输指令分解打包,通过通讯接口传输到dsp,直接将用户程序的bin文件保存在flash中对应的默认区域和备份区域,实现升级和备份。

若dsp在预设时间内未接收到对码指令,则跳转至用户程序,在跳转至用户程序之前,引导程序检测用户程序的文件校验和是否正确,若正确,则执行用户程序;若不正确,则执行用户程序的备份程序。

本发明中,在首次使用远程升级前,利用仿真器将引导程序和烧写程序烧写到dsp的flash中。

本发明针对dsp远程升级高可靠性需求,提出一种引导程序、烧写协议程序和用户程序独立的方法,有效的解决了烧写错误或者断电等导致引导烧写程序升级失败,程序无法启动的问题;同时冗余备份使程序具备恢复功能。

下面结合对本发明做更加详细的解释说明。

本发明的技术方案有效地提高了dsp远程升级可靠性,不仅提高了用户程序烧写引导执行的可靠性,同时提高了引导烧写程序升级和执行的可靠性。具体如下:

在本发明方案中,包含三个软件,引导程序bootsoft,记为r1;烧写程序burnsoft,记为r2;用户程序usersoft,记为r3。三个软件对应三个文件配置信息cfgr1,cfgr2,cfgr3,文件配置信息包含可执行文件的校验和、软件版本号、烧写日期等信息。除引导程序r1必须烧写在flash开始处(dsp的工作机制决定),其他软件和文件配置信息存储在flash的不同区域。r2和r3的备份软件记为r2b和r3b,文件配置信息cfgr2b和cfgr3b,其空间分布如附图1所示。在烧写前需要使用ti官方提供的hex.exe工具将out文件转换为bin文件,在远程升级首次使用前使用jtag将r1和r2烧写到flash对应区域中。远程升级的通信结构如附图1所示,系统程序分布结构如附图2所示。

dsp上电后,程序从flash偏移地址为0处开始执行,首先执行r1。r1完成dsp时钟、中断、定时器、通讯口的初始化。根据项目需要设置使用定时器计时等待若干时间,判断是否在等待时间内收到升级指令,如果超时则校验用户程序r3(同cfgr3存储的校验和对比),校验正确则执行r3,否则校验r3b,正确则执行,否则跳出程序分支循环等待。若未超时收到升级指令则dsp根据指令中的软件号选择执行r2或r2b,默认执行r2,先校验烧写程序r2(同cfgr2存储的校验和对比),正确则执行r2,否则重新上电选择执行r2b,校验,正确则执行,否则跳出程序分支循环等待,在此过程中将r2或r2b的执行状态反馈给上位机。远程升级主要流程如附图3所示。

如果接收到上位机的升级指令,进入烧写程序执行。上位机将待烧写的软件的bin文件配置信息和bin文件信息按照协议打包发送给dsp,dsp根据协议中的软件号判断是对r2或r3烧写升级,接收相关文件数据信息并擦除、保存到flash对应的区域。

对于用户程序r3,dsp接收来自上位机的文件配置信息和可执行文件数据后存储到flash对应区域,校验成功后,自动将r3和cfgr3拷贝到r3b和cfgr3b的区域,重新上电后,如果r3或r3b都执行失败或者存在bug需要更新,则重新下载r3和r3b。

对于监控程序r2,dsp接收来自上位机的文件配置信息和可执行文件数据后存储到flash对应的区域。此时并不马上更新备份区域,重新上电发送指令执行烧写监控,dsp根据指令信息选择执行r2或者r2b。如果发现r2执行且功能正常可发送拷贝指令将r2更新到备份区域r2b。否则若果r2执行失败上位机可以发送执行r2b的指令执行r2b,接着发送恢复指令将r2b拷贝到r2的区域,或者直接重新对r2升级,由于r2b的存在,即使新升级的r2因断电或程序自身原因导致错误也不会影响烧写功能的正常执行。

可执行文件配置信息上传。上位机可以读取r1、r2、r3、r2b、r3b的文件配置信息,进而获取校验和、版本号、烧写日期等信息。

可执行文件下载。上位机可以通过dsp读取保存在flash中的可执行文件并保存。

本发明所能达到的具体效果如下:

(1)引导程序、烧写协议程序和用户程序独立的方法,可实现对烧写程序和用户程序的升级,具有比较高的容错性和可靠性。

(2)冗余备份烧写程序可通过指令选择执行默认程序或备份程序,即使升级错误也不会影响重新上电升级,即使默认程序区烧写失败也可通过备份程序恢复。

(3)用户程序双备份,提高了用户程序执行的可靠性。

(4)可同时实现烧写或用户程序可执行文件和配置信息的上下传。

以dsp6713平台为例,通过emif外接flash,通过串口rs422与上位机pc连接组成远程升级的硬件平台。

将引导软件r1烧写在0x90000000开始的flashsector0区域,r2烧写在flashsector1~2区域,r3烧写在sector3~5区域,r2b烧写在sector6~7区域,r3b烧写在sector8~10区域。文件配置信息烧写在sector11区域。

r1编程实现接口初始化和等待设计指令以及文件校验跳转功能,r2实现可执行文件及配置信息下载上传功能,软件拷贝功能和软件恢复功能,r3为用户程序。通过配套上位机软件测试,功能全部实现。测试结果表明本发明具有良好的可实施性,且性能满足预期。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1