一种基于DSP的FLASH程序自更新方法与流程

文档序号:14571726发布日期:2018-06-01 22:34阅读:334来源:国知局
一种基于DSP的FLASH程序自更新方法与流程

本发明涉及一种程序自更新方法,特别是一种基于DSP的FLASH程序自更新方法。



背景技术:

在DSP系统中,程序先烧写于FLASH中,上电后加载到DSP的RAM区,才能运行。通常,DSP系统的FLASH程序更新需要在连接仿真器情况下进行,或者将FLASH芯片取下放在通用编程器上更新程序。然而,在DSP系统的很多工作环境下,如高空或者恶劣环境等,难以直接连接仿真器或者通用编程器。传统的烧写方式无法实现对其程序进行更新。

基于DSP的FLASH程序自更新问题,很多资料都有讨论,文献中主要采用两种方法,一种方法是双程序方法,即DSP系统上电起始加载FLASH更新程序,等待一段时间后无更新指令再加载应用程序,该方式实现方法只能在DSP系统加电起始进行FLASH程序的更新,实时性差,占用FLASH空间大;另一种方法是多重存储方式,即FLASH存储空间中划分多个区域,在更新程序时用当前区域的程序去更新另一个区域的程序,该方法实现复杂,占用FLASH空间大。



技术实现要素:

本发明目的在于提供一种基于DSP的FLASH程序自更新方法,解决传统方法更新程序受DSP系统工作环境限制的问题以及其他方法更新程序实时性差,实现复杂,占用FLASH存储空间大的问题。

一种基于DSP的FLASH程序自更新方法的具体步骤为:

第一步 搭建基于DSP的FLASH程序自更新系统

基于DSP的FLASH程序自更新系统,包括:程序转换模块、程序发送模块、程序接收模块、程序校验模块和程序更新模块。

程序转换模块的功能是:将源文件编译生成的COFF格式的.out文件转换为16进制机器语言的.bin的文件。

程序发送模块的功能是:将.bin文件分割打包后通过串口或网口按照相应协议发送数据包以及接收程序校验模块的校验结果,并根据校验结果来决定是否重发当前数据包或者继续发送后续数据包。

程序接收模块的功能是:按照相应协议接收数据包。

程序校验模块的功能是:对接收到的数据包进行校验,将校验结果返回程序发送模块,并将校验通过的数据包拆包后放到相应的存储地址空间。

程序更新模块的功能是:等到数据包接收完成后,进行FLASH存储空间的擦除和烧写操作,完成FLASH存储空间的程序更新。

第二步 程序转换模块将源文件编译生成的.out文件转换为16进制机器语言的.bin文件

源文件经过编译器编译后生成.out文件,文件格式为COFF格式。DSP系统的FLASH不能识别COFF格式,只能识别l6进制机器语言格式。程序转换模块将.out文件解析并提取出程序部分,保存为后缀为.bin的16进制格式文件。

第三步 程序发送模块将.bin文件分割打包后发送

16进制的.bin文件的大小随源文件的大小而变化,并且受到物理接口传输速率限制,无法一次完成发送,而是分割为多个数据块发送。程序发送模块首先根据物理接口传输速率大小将.bin文件分割成多个数据块,然后依次将各个数据块打包成数据包以确保数据传输的可靠性,最后开始发送数据包。

程序发送模块每发送一个数据包后会等待程序校验模块反馈的校验结果,当校验失败则重新发送当前数据包,当校验成功则继续后续数据包的发送。发送的第一个数据包不包含任何数据块,数据块长度为0,而包含.bin文件分割的数据块数、程序更新开始标志、数据块校验、数据包计数、数据包校验、数据包头和数据包尾。发送的最后一个数据包也不包含任何数据块,数据块长度为0,而包含.bin文件分割的数据块数、程序更新结束标志、数据块校验、数据包计数、数据包校验、数据包头和数据包尾。发送的其余数据包包含数据块、程序更新标志、数据块校验、数据包计数、数据包校验、数据包头和数据包尾,程序更新标志为程序更新取消时取消程序更新,程序更新标志为程序更新继续时继续数据包发送。

第四步 程序接收模块按照相应协议接收数据包

程序接收模块根据物理接口协议接收数据包。

第五步 程序校验模块对接收到的数据包进行校验

程序校验模块对接收到的数据包进行校验,校验包含:数据包头尾的正确性判断、数据包校验和数据块校验,任何一个条件不满足则认为校验失败。程序校验模块将校验结果返回给程序发送模块。当校验通过时,程序校验模块判断程序更新标志,程序更新标志有开始、结束、取消和继续四种情况。程序更新标志为继续时,根据当前数据块号确定数据块数据的临时存储程序空间,取出数据块数据放入其中。程序更新标志为结束时,程序校验模块启动程序更新模块。

第六步 程序更新模块完成FLASH存储空间的程序更新

程序更新模块首先对FLASH存储空间进行擦除,然后将临时存储程序空间中的数据烧写到FLASH中,烧写完成后,自动进行逐字节校验,确保烧写内容完全正确。DSP系统重新加电,运行更新后的程序。

至此,完成基于DSP的FLASH程序自更新。

本方法适用于基于DSP的FLASH程序自更新,其特点是将程序的接收、校验和更新部分集成到程序中,节省存储空间,实时更新,操作方便,简单实用。

附图说明

图1 一种基于DSP的FLASH程序自更新方法所述的基于DSP的FLASH程序自更新系统示意图;

图2 一种基于DSP的FLASH程序自更新方法所述的数据包格式。

1.程序转换模块 2.程序发送模块 3.程序接收模块 4.程序校验模块 5.程序更新模块。

具体实施方式

一种基于DSP的FLASH程序自更新的具体步骤为:

第一步 搭建基于DSP的FLASH程序自更新系统

基于DSP的FLASH程序自更新系统,包括:程序转换模块1、程序发送模块2、程序接收模块3、程序校验模块4和程序更新模块5。

程序转换模块1的功能是:将源文件编译生成的COFF格式的.out文件转换为16进制机器语言的.bin的文件。

程序发送模块2的功能是:将.bin文件分割打包后通过串口或网口按照相应协议发送数据包以及接收程序校验模块4的校验结果,并根据校验结果来决定是否重发当前数据包或者继续发送后续数据包。

程序接收模块3的功能是:按照相应协议接收数据包。

程序校验模块4的功能是:对接收到的数据包进行校验,将校验结果返回程序发送模块2,并将校验通过的数据包拆包后放到相应的存储地址空间。

程序更新模块5的功能是:等到数据包接收完成后,进行FLASH存储空间的擦除和烧写操作,完成FLASH存储空间的程序更新。

第二步 程序转换模块1将源文件编译生成的.out文件转换为16进制机器语言的.bin文件

源文件经过编译器编译后生成.out文件,文件格式为COFF格式。DSP系统的FLASH不能识别COFF格式,只能识别l6进制机器语言格式。程序转换模块1将.out文件解析并提取出程序部分,保存为后缀为.bin的16进制格式文件。

第三步 程序发送模块2将.bin文件分割打包后发送

16进制的.bin文件的大小随源文件的大小而变化,并且受到物理接口传输速率限制,无法一次完成发送,而是分割为多个数据块发送。程序发送模块2首先根据物理接口传输速率大小将.bin文件分割成多个数据块,然后依次将各个数据块打包成数据包以确保数据传输的可靠性,最后开始发送数据包。

程序发送模块2每发送一个数据包后会等待程序校验模块4反馈的校验结果,当校验失败则重新发送当前数据包,当校验成功则继续后续数据包的发送。发送的第一个数据包不包含任何数据块,数据块长度为0,而包含.bin文件分割的数据块数、程序更新开始标志、数据块校验、数据包计数、数据包校验、数据包头和数据包尾。发送的最后一个数据包也不包含任何数据块,数据块长度为0,而包含.bin文件分割的数据块数、程序更新结束标志、数据块校验、数据包计数、数据包校验、数据包头和数据包尾。发送的其余数据包包含数据块、程序更新标志、数据块校验、数据包计数、数据包校验、数据包头和数据包尾,程序更新标志为程序更新取消时取消程序更新,程序更新标志为程序更新继续时继续数据包发送。

第四步 程序接收模块3按照相应协议接收数据包

程序接收模块3根据物理接口协议接收数据包。

第五步 程序校验模块4对接收到的数据包进行校验

程序校验模块4对接收到的数据包进行校验,校验包含:数据包头尾的正确性判断、数据包校验和数据块校验,任何一个条件不满足则认为校验失败。程序校验模块4将校验结果返回给程序发送模块2。当校验通过时,程序校验模块4判断程序更新标志,程序更新标志有开始、结束、取消和继续四种情况。程序更新标志为继续时,根据当前数据块号确定数据块数据的临时存储程序空间,取出数据块数据放入其中。程序更新标志为结束时,程序校验模块4启动程序更新模块5。

第六步 程序更新模块5完成FLASH存储空间的程序更新

程序更新模块5首先对FLASH存储空间进行擦除,然后将临时存储程序空间中的数据烧写到FLASH中,烧写完成后,自动进行逐字节校验,确保烧写内容完全正确。DSP系统重新加电,运行更新后的程序。

至此,完成基于DSP的FLASH程序自更新。

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