嵌入式程序开发中程序更新识别方法及系统与流程

文档序号:12463209阅读:322来源:国知局
嵌入式程序开发中程序更新识别方法及系统与流程

本发明涉及一种嵌入式程序开发中程序更新识别方法及系统。



背景技术:

嵌入式开发中程序的版本控制及识别通常是通过读取控制器芯片的软件版本号形式实现的。一般情况下,程序编写或修改后需对程序添加一个软件版本号,源程序编译完成后下载到控制器芯片,通过上位机与控制器芯片的通信程序读取程序的版本号,由此可得到程序修改及版本管理信息。

采用上述方案通过上位机即可读取控制器芯片中程序版本号,并根据版本号对照查表得到程序修改信息。但此方法仍存在一定的局限性:

①软件版本号需人为手动修改,如果程序员改动程序后忘记更改版本号或更改后的版本号与其他人修改的版本号重复;

②程序员对软件程序的误操作,增加或丢失部分程序;

③程序小的改动,但不足以更改程序版本号。

此类问题均可造成以软件版本号识别程序的方式失效。若是存在上述问题的装置在工程使用现场出现异常,因不能对装置是否使用标准程序或程序何时修改做出有效判断,会给错误排查工作造成很大的困难。



技术实现要素:

本发明的目的就是为了解决上述问题,提供一种嵌入式程序开发中程序更新识别方法及系统,它在控制器程序运行初期自动对存放于程序存储器的全部程序进行一次循环校验计算,并将校验得到的一组序列号以通信的方式发送给上位机,由于程序的变动会造成序列号的改变,因此通过序列号的变化情况,即可实现一种程序识别的新方法。

嵌入式程序开发中程序更新识别方法,包括如下步骤:

步骤(1):控制器的程序存储器接收并存储已经编译通过的计算机程序;计算机程序存储的起始地址就是程序存储器对应地址空间的首地址;

步骤(2):计算机程序开始运行,首先对计算机程序进行初始化配置;

步骤(3):对程序存储器存放的计算机程序从起始地址开始进行循环冗余校验,得到一组校验序列号;

步骤(4):控制器将当前计算机程序的程序版本号和循环冗余校验得到的校验序列号一起发送到上位机;

步骤(5):上位机将控制器发送来的程序版本号和校验序列号与上位机预先存储的程序版本号和校验序列号进行比较;判断程序是否发生改变。

所述步骤(5)的具体步骤包括:

步骤(51):首先判断控制器发送来的程序版本号与上位机预先存储的程序版本号是否一致,若一致则进入步骤(52);不一致则表示程序发生改变;

步骤(52):判断控制器发送来的校验序列号与上位机预先存储的校验序列号一致,若一致则表示程序未发生改变;若不一致则表示程序发生改变。

所述上位机预先存储的程序版本号是程序首次编译成功,控制器上传给上位机的版本号;

所述上位机预先存储的校验序列号是程序首次编译成功,控制器对编译成功的程序进行首次循环冗余校验得到并上传给上位机的校验序列号。

所述步骤(2)对程序I/O口、中断向量进行初始化配置;

所述步骤(3)采用查表法方式,对程序存储器存放的程序从起始地址开始进行循环冗余校验。

所述步骤(4)控制器将校验序列号通过can或modbus通信协议发送到上位机。

嵌入式程序开发中程序更新识别系统,包括:彼此通信的控制器和上位机;

所述控制器包括:

计算机程序接收单元:控制器的程序存储器接收并存储已经编译通过的计算机程序;计算机程序存储的起始地址就是程序存储器对应地址空间的首地址;

计算机程序运行单元:计算机程序开始运行,首先对计算机程序进行初始化配置;

循环冗余校验单元:对程序存储器存放的计算机程序从起始地址开始进行循环冗余校验,得到一组校验序列号;

发送单元:控制器将当前计算机程序的程序版本号和循环冗余校验得到的校验序列号一起发送到上位机;

所述上位机包括:

接收单元:接收控制器发送来的程序版本号和校验序列号;

比较单元:将控制器发送来的程序版本号和校验序列号与上位机预先存储的程序版本号和校验序列号进行比较;判断程序是否发生改变。

所述比较单元包括:

程序版本号比较模块:首先判断控制器发送来的程序版本号与上位机预先存储的程序版本号是否一致,若一致则进入校验序列号比较模块;不一致则表示程序发生改变;

校验序列号比较模块:判断控制器发送来的校验序列号与上位机预先存储的校验序列号一致,若一致则表示程序未发生改变;若不一致则表示程序发生改变。

所述上位机预先存储的程序版本号是程序首次编译成功,控制器上传给上位机的版本号;

所述上位机预先存储的校验序列号是程序首次编译成功,控制器对编译成功的程序进行首次循环冗余校验得到并上传给上位机的校验序列号。

所述计算机程序运行单元对程序I/O口、中断向量进行初始化配置;

所述循环冗余校验单元采用查表法方式,对程序存储器存放的程序从起始地址开始进行循环冗余校验。

所述发送单元将校验序列号通过can或modbus通信协议发送到上位机。

本发明的有益效果:

现有技术只能通过手动修改软件版本号实现,同时只能以V1.00或V2.10等数字方式表示,对于小的程序改动亦不能有效标识。

本发明在程序运行初期对整个程序存储空间进行循环校验,程序的任何改变都可通过校验生成的序列号变化表达出来。

此发明辅以软件版本号为基础的版本控制方法,可更精确及细致的对嵌入式系统的程序版本进行有效控制。

附图说明

图1为本发明的主流程图;

图2为控制器的内部功能模块图;

图3为上位机的内部功能模块图;

图4为上位机的比较模块的内部功能模块图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

如图1所示,嵌入式程序开发中程序更新识别方法,包括如下步骤:

步骤(1):控制器的程序存储器接收并存储已经编译通过的计算机程序;计算机程序存储的起始地址就是程序存储器对应地址空间的首地址;

步骤(2):计算机程序开始运行,首先对计算机程序进行初始化配置;

步骤(3):对程序存储器存放的计算机程序从起始地址开始进行循环冗余校验,得到一组校验序列号;

步骤(4):控制器将当前计算机程序的程序版本号和循环冗余校验得到的校验序列号一起发送到上位机;

步骤(5):上位机将控制器发送来的程序版本号和校验序列号与上位机预先存储的程序版本号和校验序列号进行比较;判断程序是否发生改变。

所述步骤(5)的具体步骤包括:

步骤(51):首先判断控制器发送来的程序版本号与上位机预先存储的程序版本号是否一致,若一致则进入步骤(52);不一致则表示程序发生改变;

步骤(52):判断控制器发送来的校验序列号与上位机预先存储的校验序列号一致,若一致则表示程序未发生改变;若不一致则表示程序发生改变。

如图2所示,嵌入式程序开发中程序更新识别系统,包括:彼此通信的控制器和上位机;

所述控制器包括:

计算机程序接收单元:控制器的程序存储器接收并存储已经编译通过的计算机程序;计算机程序存储的起始地址就是程序存储器对应地址空间的首地址;

计算机程序运行单元:计算机程序开始运行,首先对计算机程序进行初始化配置;

循环冗余校验单元:对程序存储器存放的计算机程序从起始地址开始进行循环冗余校验,得到一组校验序列号;

发送单元:控制器将当前计算机程序的程序版本号和循环冗余校验得到的校验序列号一起发送到上位机;

如图3所示,所述上位机包括:

接收单元:接收控制器发送来的程序版本号和校验序列号;

比较单元:将控制器发送来的程序版本号和校验序列号与上位机预先存储的程序版本号和校验序列号进行比较;判断程序是否发生改变。

如图4所示,所述比较单元包括:

程序版本号比较模块:首先判断控制器发送来的程序版本号与上位机预先存储的程序版本号是否一致,若一致则进入校验序列号比较模块;不一致则表示程序发生改变;

校验序列号比较模块:判断控制器发送来的校验序列号与上位机预先存储的校验序列号一致,若一致则表示程序未发生改变;若不一致则表示程序发生改变。

为了详细阐述此项发明,首先介绍一下用到的几项数据处理概念。

(1)控制器芯片的程序存储器:

控制器芯片的存储器主要分数据存储器和程序存储器,前者用于存放程序运行的中间处理数据,可随程序运行而随时写入或读出数据存储器的内容,当系统掉电时,数据全部会丢失;后者用于存放嵌入式系统的应用程序及一些不需改变的数据常数,只能读取程序指令使系统运行,而不能再进行改写,且系统掉电后,程序不会丢失。

(2)循环冗余校验:

循环冗余校验是一种数据传输检错功能,主要用于检测或校验数据在传输过程中可能出现的错误。首先发送方对需要发送的数据进行循环冗余校验,并将计算出的校验码附在数据帧的后面,接收方接收数据后执行类似算法,并通过判断校验码是否一致确定接收到的数据帧是否发生变化。

(3)查表法:

查表法是循环冗余校验的一种具体实现算法,它将移位异或的计算结果做出一个表,通过对计算数据循环查表的形式得到最后的校验码。

本方案主要依据以上几种概念,借鉴通信传输中对数据帧的检错功能,创新性的将循环冗余校验方式用于对程序存储区中程序的处理。

在程序上电开始运行后,采用上面提到的查表法,从程序存储器存放程序的起始地址开始对整个程序存储空间进行循环冗余校验,具体做法就是从起始地址开始逐个字节对程序段进行移位异或计算,直到全部程序计算完成,由此可到一组4字节的校验序列号。

在通信函数中,如上位机召唤此项命令,即可将此序列号上传至上位机。由于全部程序存储空间都参与校验,程序中任一字节数据的改动都会改变校验产生的序列号,因此可以通过序列号的改变判断程序是否改变;而且不同于数据传输校验时数据帧加校验值同步传输,此时仅需要4字节序列号的有效数据,可使数据收发程序设计简单,利于操作。

上位机安装的版本管理软件负责对将上传信息进行分析、判断。主要将采集于控制器的校验序列号及软件版本号与其数据库中保存的各版本程序的版本信息进行逐个比对,如上传信息与某一版本程序的版本号及序列号一致,则证明控制器中运行的程序为此版本程序;如版本号一致但序列号改变,证明程序员修改程序后未更新版本号;如版本号与序列号均为新的内容,证明为未知版本程序,可沟通程序员是否创造新的程序版本。新的版本程序可手动添加到管理软件的数据库中,在数据库更新界面输入序列号及软件版本号,点击保存按键即可。该软件目前仅支持手动输入,数据库原始数据的创建及更新均依赖此种方法。

通过校验序列号管理方法及版本管理软件,可更高效的对嵌入式程序版本进行有效管理、控制。

嵌入式程序开发中程序更新识别方法,包括如下步骤:

步骤(1):程序编译完成后,将程序代码通过下载器下载到控制器芯片的程序存储器,程序下载的起始地址就是程序存储器对应地址空间的首地址。

步骤(2):程序开始运行,对程序进行必要的初始化配置;

步骤(3):采用查表法方式,对程序存储区存放的程序从起始地址开始进行循环冗余校验,得到校验序列号;由于所用控制器芯片的程序存储器地址空间为$4000-$FFFF,而程序占用空间<16K,因此考虑只对$4000-$8000地址空间的数据进行循环冗余校验。

步骤(4):在通信程序中,序列号及软件版本号通过can或modbus通信协议发送到上位机。

步骤(5):上位机的版本管理软件分析上传信息与数据库信息是否一致,并根据分析结果做出判断。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

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