一种嵌入式电表固件热更新的方法与流程

文档序号:35867993发布日期:2023-10-27 21:51阅读:91来源:国知局
一种嵌入式电表固件热更新的方法与流程

本发明涉及嵌入式电表固件升级更新,尤其是涉及一种嵌入式电表固件热更新的方法。


背景技术:

1、当前电表程序升级一般通过专用的通信协议,比如dlms或者xmodem协议传输升级文件,然后直接激活或者定时激活程序以达到修复bug或者增加功能特性。以往的电表程序升级流程如下:上位机/主站下发文件 --->校验文件 --->激活文件 --->单片机重启进入boot模式 --->擦写flash --->启动app。在程序升级或更新过程中,需要进入boot模式,会有短暂的功能中断的过程,影响电表的计量计费;同时对于多样性多变性的海外客户需求,往往需要在产品前期不断调整程序升级程序,这就需要对电表程序整体进行烧录,虽然可以实现对调整部分的程序进行更新升级,但对于其他没有变动更新的程序则需要进行重复烧录。


技术实现思路

1、本发明是为了克服现有技术的电表程序升级需要进入boot模式,影响电表的计量计费,并且需要对电表程序整体进行烧录,对于其他没有变动更新的程序则需要进行重复烧录的问题,提供一种嵌入式电表固件热更新的方法。

2、为了实现上述目的,本发明采用以下技术方案:

3、一种嵌入式电表固件热更新的方法,包括针对电表的程序,按照功能划分为若干功能模块,方法包括以下步骤:s1:上位机或主站下发更新的升级文件;s2:电表对下发的文件进行校验和激活;s3:主程序针对单独模块或全部模块设置升级标志;s4:原虚拟机中设置升级标志的指定功能线程模块退出,重新加载脚本,重新启动新线程,实现电表固件的更新升级。本发明的一种嵌入式电表固件热更新的方法,模块化电表内部功能模块,针对不同用户需求,动态加载不同功能模块,对于其他没有变动更新的程序无需反复重复烧录;同时,使用动态脚本lua与静态语言c结合的方式,实现固件程序动态热更新,不影响电表的计量计费。

4、作为本发明的优选方案,所述若干功能模块包括计量采样模块、能量累积模块、费率计算模块、需量计算模块、负荷曲线模块、日冻结模块、月结算模块、人机交互模块、事件纪录模块和报警功能模块,所述人机交互模块包括显示模块与通信模块。

5、作为本发明的优选方案,所述计量采样模块采用原生c语言的形式打包进lua核心。针对核心的计量采样,采用原生c语言的形式打包进lua核心,核心计量功能只包含计量采样,读取功率电压电流等,即计量芯片的驱动,无客制化功能需求,作为内核的一部分。

6、作为本发明的优选方案,所述电表固件的其他中断程序,通过注入钩子函数的方式实现特殊功能的制定。其他中断程序,包括核心的计量采样,允许注入钩子函数实现特殊的定制功能,一般无需使用,但也可以满足特殊的对时延有特殊需要的应用场景。

7、作为本发明的优选方案,所述电表的功能代码通过c语言或c++语言进行编写,最终编译为lua模块。为兼容现有的历史程序,同时也是为了提升代码执行效率,功能代码还是通过c语言或者c++语言编写,但是最终编译为lua模块,或者是其他脚本语言模块。

8、作为本发明的优选方案,所述s4具体过程如下:s41:原虚拟机按照原程序模块执行指定任务;s42:时刻进行停电标记检测,若检测出停电标记,则退出原程序,否则进入s43;s43:进行本模块的热更新标志检测,若没有检测出热更新标志,则返回s42,否则将功能线程模块退出,加载新脚本配置,重新启动新线程,完成电表固件的更新升级,并返回s41继续执行指定任务。针对非中断程序,采用模块化封装的形式,基本格式需要能够检测模块是否需要更新,是否停电的标志即可。

9、因此,本发明具有以下有益效果:本发明的一种嵌入式电表固件热更新的方法,模块化电表内部功能模块,针对不同用户需求,动态加载不同功能模块,适应多变市场需求,对于其他没有变动更新的程序则无需反复重复烧录;同时,使用动态脚本lua与静态语言c结合的方式,实现固件程序动态热更新,不影响电表的计量计费。



技术特征:

1.一种嵌入式电表固件热更新的方法,其特征是,包括:针对电表的程序,按照功能划分为若干功能模块,方法包括以下步骤:

2.根据权利要求1所述的一种嵌入式电表固件热更新的方法,其特征是,所述若干功能模块包括计量采样模块、能量累积模块、费率计算模块、需量计算模块、负荷曲线模块、日冻结模块、月结算模块、人机交互模块、事件纪录模块和报警功能模块,所述人机交互模块包括显示模块与通信模块。

3.根据权利要求2所述的一种嵌入式电表固件热更新的方法,其特征是,所述计量采样模块采用原生c语言的形式打包进lua核心。

4.根据权利要求1所述的一种嵌入式电表固件热更新的方法,其特征是,电表固件的其他中断程序,通过注入钩子函数的方式实现特殊功能的制定。

5.根据权利要求1或2或3或4所述的一种嵌入式电表固件热更新的方法,其特征是,所述电表的功能代码通过c语言或c++语言进行编写,最终编译为lua模块。

6.根据权利要求1所述的一种嵌入式电表固件热更新的方法,其特征是,所述s4具体过程如下:


技术总结
本发明公开了一种嵌入式电表固件热更新的方法,包括针对电表的程序,按照功能划分为若干功能模块,方法包括以下步骤:S1:上位机或主站下发更新的升级文件;S2:电表对下发的文件进行校验和激活;S3:主程序针对单独模块或全部模块设置升级标志;S4:原虚拟机中设置升级标志的指定功能线程模块退出,重新加载脚本,重新启动新线程,实现电表固件的更新升级。本发明的一种嵌入式电表固件热更新的方法,模块化电表内部功能模块,针对不同用户需求,动态加载不同功能模块,对于其他没有变动更新的程序无需反复重复烧录;同时,使用动态脚本lua与静态语言c结合的方式,实现固件程序动态热更新,不影响电表的计量计费。

技术研发人员:梁勇挺,刘青华,郭明伟,施家健,陈景和,王肖龙,朱辉,胡英军,程永福,卢凌霄,安宁
受保护的技术使用者:浙江瑞银电子有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1