一种嵌入式电表固件热更新的方法技术

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

【技术实现步骤摘要】
一种嵌入式电表固件热更新的方法


[0001]本专利技术涉及嵌入式电表固件升级更新
,尤其是涉及一种嵌入式电表固件热更新的方法。

技术介绍

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

技术实现思路

[0003]本专利技术是为了克服现有技术的电表程序升级需要进入boot模式,影响电表的计量计费,并且需要对电表程序整体进行烧录,对于其他没有变动更新的程序则需要进行重复烧录的问题,提供一种嵌入式电表固件热更新的方法。
[0004]为了实现上述目的,本专利技术采用以下技术方案:一种嵌入式电表固件热更新的方法,包括针对电表的程序,按照功能划分为若干功能模块,方法包括以下步骤:S1:上位机或主站下发更新的升级文件;S2:电表对下发的文件进行校验和激活;S3:主程序针对单独模块或全部模块设置升级标志;S4:原虚拟机中设置升级标志的指定功能线程模块退出,重新加载脚本,重新启动新线程,实现电表固件的更新升级。本专利技术的一种嵌入式电表固件热更新的方法,模块化电表内部功能模块,针对不同用户需求,动态加载不同功能模块,对于其他没有变动更新的程序无需反复重复烧录;同时,使用动态脚本lua与静态语言c结合的方式,实现固件程序动态热更新,不影响电表的计量计费。
[0005]作为本专利技术的优选方案,所述若干功能模块包括计量采样模块、能量累积模块、费率计算模块、需量计算模块、负荷曲线模块、日冻结模块、月结算模块、人机交互模块、事件纪录模块和报警功能模块,所述人机交互模块包括显示模块与通信模块。
[0006]作为本专利技术的优选方案,所述计量采样模块采用原生C语言的形式打包进lua核心。针对核心的计量采样,采用原生C语言的形式打包进lua核心,核心计量功能只包含计量采样,读取功率电压电流等,即计量芯片的驱动,无客制化功能需求,作为内核的一部分。
[0007]作为本专利技术的优选方案,所述电表固件的其他中断程序,通过注入钩子函数的方式实现特殊功能的制定。其他中断程序,包括核心的计量采样,允许注入钩子函数实现特殊的定制功能,一般无需使用,但也可以满足特殊的对时延有特殊需要的应用场景。
[0008]作为本专利技术的优选方案,所述电表的功能代码通过C语言或C++语言进行编写,最终编译为lua模块。为兼容现有的历史程序,同时也是为了提升代码执行效率,功能代码还是通过C语言或者C++语言编写,但是最终编译为lua模块,或者是其他脚本语言模块。
[0009]作为本专利技术的优选方案,所述S4具体过程如下:S41:原虚拟机按照原程序模块执行指定任务;S42:时刻进行停电标记检测,若检测出停电标记,则退出原程序,否则进入S43;S43:进行本模块的热更新标志检测,若没有检测出热更新标志,则返回S42,否则将功能线程模块退出,加载新脚本配置,重新启动新线程,完成电表固件的更新升级,并返回S41继续执行指定任务。针对非中断程序,采用模块化封装的形式,基本格式需要能够检测模块是否需要更新,是否停电的标志即可。
[0010]因此,本专利技术具有以下有益效果:本专利技术的一种嵌入式电表固件热更新的方法,模块化电表内部功能模块,针对不同用户需求,动态加载不同功能模块,适应多变市场需求,对于其他没有变动更新的程序则无需反复重复烧录;同时,使用动态脚本lua与静态语言c结合的方式,实现固件程序动态热更新,不影响电表的计量计费。
附图说明
[0011]图1是本专利技术方法的整体流程图;图2是本专利技术实施例的中断程序的整体流程图;图3是本专利技术实施例的整体的调用链条示意图。
具体实施方式
[0012]下面结合附图与具体实施方式对本专利技术做进一步的描述。
[0013]一种嵌入式电表固件热更新的方法,包括针对电表的程序,按照功能划分为若干功能模块,方法包括以下步骤:S1:上位机或主站下发更新的升级文件;S2:电表对下发的文件进行校验和激活;S3:主程序针对单独模块或全部模块设置升级标志;S4:原虚拟机中设置升级标志的指定功能线程模块退出,重新加载脚本,重新启动新线程,实现电表固件的更新升级。本专利技术的一种嵌入式电表固件热更新的方法,模块化电表内部功能模块,针对不同用户需求,动态加载不同功能模块,对于其他没有变动更新的程序模块无需反复重复烧录;同时,使用动态脚本lua与静态语言c结合的方式,实现固件程序动态热更新,不影响电表的计量计费。
[0014]若干功能模块包括计量采样模块、能量累积模块、费率计算模块、需量计算模块、负荷曲线模块、日冻结模块、月结算模块、人机交互模块、事件纪录模块和报警功能模块,所述人机交互模块包括显示模块与通信模块。
[0015]计量采样模块采用原生C语言的形式打包进lua核心。针对核心的计量采样,采用原生C语言的形式打包进lua核心,核心计量功能只包含计量采样,读取功率电压电流等,即计量芯片的驱动,无客制化功能需求,作为内核的一部分。
[0016]电表固件的其他中断程序,通过注入钩子函数的方式实现特殊功能的制定。其他中断程序,包括核心的计量采样,允许注入钩子函数实现特殊的定制功能,一般无需使用,但也可以满足特殊的对时延有特殊需要的应用场景。
[0017]电表的功能代码通过C语言或C++语言进行编写,最终编译为lua模块。为兼容现有
的历史程序,同时也是为了提升代码执行效率,功能代码还是通过C语言或者C++语言编写,但是最终编译为lua模块,或者是其他脚本语言模块。
[0018]S4具体过程如下:S41:原虚拟机按照原程序模块执行指定任务;S42:时刻进行停电标记检测,若检测出停电标记,则退出原程序,否则进入S43;S43:进行本模块的热更新标志检测,若没有检测出热更新标志,则返回S42,否则将功能线程模块退出,加载新脚本配置,重新启动新线程,完成电表固件的更新升级,并返回S41继续执行指定任务。针对非中断程序,采用模块化封装的形式,基本格式需要能够检测模块是否需要更新,是否停电的标志即可。
[0019]实施例:在该实施例中,对本专利技术的一种嵌入式电表固件热更新的方法做进一步描述。
[0020]针对电表程序更改困难的情况,引入动态语言来实现功能可变的特本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式电表固件热更新的方法,其特征是,包括:针对电表的程序,按照功能划分为若干功能模块,方法包括以下步骤:S1:上位机或主站下发更新的升级文件;S2:电表对下发的文件进行校验和激活;S3:主程序针对单独模块或全部模块设置升级标志;S4:原虚拟机中设置升级标志的指定功能线程模块退出,重新加载脚本,重新启动新线程,实现电表固件的更新升级。2.根据权利要求1所述的一种嵌入式电表固件热更新的方法,其特征是,所述若干功能模块包括计量采样模块、能量累积模块、费率计算模块、需量计算模块、负荷曲线模块、日冻结模块、月结算模块、人机交互模块、事件纪录模块和报警功能模块,所述人机交互模块包括显示模块与通信模块。3.根据权利要求2所述的一种嵌入式电表固件热更新的方法,其特征是,所述计量采样模块采用原生C语言的形式...

【专利技术属性】
技术研发人员:梁勇挺刘青华郭明伟施家健陈景和王肖龙朱辉胡英军程永福卢凌霄安宁
申请(专利权)人:浙江瑞银电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1