CN105487909B - 一种减少电力设备固件升级量的方法 - Google Patents
一种减少电力设备固件升级量的方法 Download PDFInfo
- Publication number
- CN105487909B CN105487909B CN201610022885.4A CN201610022885A CN105487909B CN 105487909 B CN105487909 B CN 105487909B CN 201610022885 A CN201610022885 A CN 201610022885A CN 105487909 B CN105487909 B CN 105487909B
- Authority
- CN
- China
- Prior art keywords
- function
- region
- power equipment
- firmware
- upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
一种减少电力设备固件升级量的方法,它包括:S1、电力设备固件的数据组织步骤;S2、电力设备固件的区域内函数组织步骤;S3、电力设备固件的全局变量、数组、函数参数的组织步骤;S4、电力设备固件的远程升级步骤。本发明提出的一种减少电力设备固件升级量的方法,可以实现产品投运后,根据功能需求变化只对更改了功能的区域进行升级,从而避免替换全部程序,减少了固件升级量,减少了升级过程对网络资源的消耗,提高了固件升级的效率,另外降低了产品投运后的维护成本,增强了产品的市场竞争力。
Description
技术领域
本发明涉及电力设备固件升级领域,尤其涉及一种减少电力设备固件升级量的方法。
背景技术
目前,随着智能电网建设的不断推进,电力设备中MCU的应用越来越广泛,在很多情况下,如现场使用的设备需要增加新功能、现场运行后发现BUG等等,都要求更新MCU的固件程序;同时由于电力设备往往工作在无人值守的环境下,且数量众多,一旦需要对数以万计的终端进行现场更新,就会耗费大量现场服务的人力、物力和时间。
当前各厂家基于远程通信网络使用IAP在线编程技术实现设备远程固件升级。该方案虽然解决了现场升级的繁重工作量,但存在着弊端,新旧固件即使只有略微的差别,仍需要下载完整的新固件进行替换升级。这种每次升级都需要替换整个固件的方式增加了升级过程时间,消耗了大量网络通信资源,增加了升级失败率。
发明内容
本发明的目的在于提供一种减少电力设备固件升级量的方法,旨在解决现有技术对电力设备固件升级时出现的效率低、浪费网络资源等问题。
本发明的技术方案是:
一种减少电力设备固件升级量的方法,它包括:
S1、电力设备固件的数据组织步骤;
S2、电力设备固件的区域内函数组织步骤;
S3、电力设备固件的全局变量、数组、函数参数的组织步骤;
S4、电力设备固件的远程升级步骤。
本发明的步骤S1具体包括以下步骤:
S1-1、以功能模块或者对象为单位将电力设备的固件存储空间划分成若干个独立分散的区域,各区域中对应存放相应的功能模块或者对象,并设置区域的固定位置、大小以及BIN文件名称,所述的区域中至少有一个区域存放Bootloader功能,前述Bootloader功能用于实现初始化设备、固件升级功能;
S1-2、在电力设备的固件存储空间中通过分散加载机制为链接器指定各区域BIN文件名称和区域位置的放置信息;
S1-3、区域划分以后通过编译程序生成对应的BIN文件;在升级单独的某个区域时,提取该区域对应的BIN文件,并通过预先固化的Bootloader功能模块将前述文件的升级数据固化到电力设备的对应固件存储空间。
本发明的步骤S1-1中,划分区域时预留一定的空间以备增加功能,若已划分的区域不够用时,能够再划出一块还未使用的区域,不影响其他区域。
本发明的步骤S2具体包括以下步骤:
S2-1、在电力设备固件中使用函数壳和伪指令控制区域的连带关系,为区域之间存在相互调用关系的函数建立相应的函数壳,区域之间调用函数时都需要先通过函数壳,再执行真正的功能;
S2-2、使用伪指令固定函数壳在区域内的位置,编译生成后函数地址不改变,修改函数壳对应的函数只改变本区域,不影响到调用它的其他区域。
本发明的步骤S2-1中,函数壳作为函数之间调用的中间人,函数壳采用下述表达式:
function NAME() { __NAME() }
function __NAME() { # do stuff here }
NAME()即是__NAME()函数的函数壳,只实现调用__NAME()函数的功能,而具体功能在__NAME()函数中实现;其他区域通过调用NAME()函数壳来间接使用__NAME()功能。
本发明的步骤S3,具体包括以下步骤:
S3-1、在电力设备固件中使用1级、2级空类型指针变量控制区域的连带关系,减少区域之间连带升级;
S3-2、申请2级空类型指针变量代替直接使用全局变量或数组,保证编译后即使变量改变也不会扩大关联区域的升级范围;
S3-3、使用1级空类型指针传递函数的实际参数,即使实际参数改变也不会扩大关联区域的升级范围,前述1级空类型指针采用下述方式表述 ;
typedef struct tagParam
{ int nParamIndex;
// define here
int nResult;
} Param;
void function NAME(void *p) { __NAME(p) }
void function __NAME(void *p)
{ Param *param = (Param *)p;
switch (param-> nParamIndex)
{# do stuff here }
}
其他区域调用NAME(p)函数壳时将实际参数赋予void *p, __NAME(p)函数可以根据param-> nParamIndex参数选择执行具体的功能,最终返回执行的结果;
S3-4、区域之间相互调用的函数的参数不需要建立固定的参数列表库,利用空类型指针可以动态变化。
本发明的步骤S4,具体包括以下步骤:
S4-1、将需要升级的区域编译生成BIN文件,并在文件的开头增加升级信息;升级信息包括需要升级的区域数量,每个需要升级的区域的首地址、长度以及校验码,制成升级固件包;
S4-2、通过远程通信网络下载至指定的电力设备;
S4-3、电力设备接收到下发的升级固件及指令,并核对准确后重启设备,通过预先固化在设备里的Bootloader程序将升级数据固化到电力设备的对应固件存储空间。
本发明的有益效果:
本发明提出的一种减少电力设备固件升级量的方法,可以实现产品投运后,根据功能需求变化只对更改了功能的区域进行升级,从而避免替换全部程序,减少了固件升级量,减少了升级过程对网络资源的消耗,提高了固件升级的效率,另外降低了产品投运后的维护成本,增强了产品的市场竞争力。
本发明的区域之间需要相互调用函数,在电力设备固件中使用函数壳和伪指令控制区域的连带关系,减少区域之间连带升级。首先,为区域之间相互调用的函数建立相应的函数壳,函数壳起到“中间人”的作用,区域之间调用函数时都需要先通过函数壳,再执行真正的功能;然后,使用伪指令固定函数壳在区域内的位置,修改函数壳对应的函数只会改变本区域,不会影响到调用它的其他区域,从而切断区域之间的连带升级,达到减少固件升级范围的目的。
本发明的区域内需要使用全局变量、数组,区域之间需要相互调用全局变量、数组,这些全局变量、数组以及区域之间相互调用的函数的参数需要变化,在电力设备固件中使用1级、2级空类型指针变量控制区域的连带关系,减少区域之间连带升级。使用1级空类型指针传递函数的实际参数,即使实际参数改变也不会扩大关联区域的升级范围;申请2级空类型指针变量代替直接使用全局变量或数组,保证了即使变量改变也不会扩大关联区域的升级范围。
附图说明
图1是本发明实施例的减少电力设备固件升级量的方法的流程图
图2是本发明实施例的区域之间关联示意图
图3是本发明实施例的区域之间调用函数流程图
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提出的一种减少电力设备固件升级量的方法,包括以下步骤:
为了使电力设备固件的功能模块可以独立升级,需要对电力设备固件的数据组织方式重新规划,包括:
以功能模块或者对象为单位将电力设备的固件存储空间划分成若干个独立分散的区域,各区域中对应存放相应的功能模块或者对象,并设置区域的固定位置、大小以及BIN文件名称,区域固定了位置,即区域的首地址固定后,通过编译程序生成对应的BIN文件,最后将BIN文件固化到电力设备固件的对应存储空间。
区域划分的时候应预留出一定的空间以备增加功能使用,若该区域不够用时可再划出一块还未使用的区域,不影响其他区域。
区域划分以后内部的函数会相互调用,修改功能,这些操作只会影响本区域,不影响其他区域。
在升级单独的某个区域时,可以提取该区域对应的BIN文件,并通过预先固化在设备里的Bootloader程序将该BIN文件的升级数据固化到电力设备固件的对应存储空间。
设备中至少划分出一个区域存放Bootloader功能,Bootloader至少实现初始化设备、固定升级的功能。
如图2所示,区域之间需要相互调用函数,若仅划分区域,某个区域内的函数修改后,与之相互调用函数的区域会改变,随之又影响到其他有关联的区域。这种情况导致升级某个区域时,与之有关联的区域,甚至与关联区域有关联的区域都需要升级。
如图3所示,为了减少固件升级的范围,在不影响正常运行的前提下切断区域之间的连带升级,需要对电力设备固件的区域内函数组织方式重新规划,包括:
为区域之间相互调用的函数建立相应的函数壳,函数壳起到“中间人”的作用,区域之间调用函数时都需要先通过函数壳,再执行真正的功能,函数壳采用下述表达式:
function NAME() { __NAME() }
function __NAME() { # do stuff here }
NAME()即是__NAME()函数的函数壳,只实现调用__NAME()函数的功能,而具体功能在__NAME()函数中实现;其他区域通过调用NAME()函数壳来间接使用__NAME()功能。
使用伪指令固定函数壳在区域内的位置,修改函数壳对应的函数只会改变本区域,不会影响到调用它的其他区域,从而切断区域之间的连带升级,达到减少固件升级范围的目的。
区域内需要使用全局变量、数组,区域之间需要相互调用全局变量、数组,这些全局变量、数组、区域之间相互调用的函数的参数需要变化,也会导致升级某个区域后,与之有关联的其它区域都需要升级。
为了减少固件升级的范围,需要对电力设备固件的区域内全局变量、数组、函数参数的组织方式重新规划,包括:
使用1级空类型指针传递函数的实际参数,即使实际参数改变也不会扩大关联区域的升级范围;
申请2级空类型指针变量代替直接使用全局变量或数组,保证了即使变量改变也不会扩大关联区域的升级范围。
前述1级空类型指针采用下述方式表述 ;
typedef struct tagParam
{ int nParamIndex;
// define here
int nResult;
} Param;
void function NAME(void *p) { __NAME(p) }
void function __NAME(void *p)
{ Param *param = (Param *)p;
switch (param-> nParamIndex)
{# do stuff here }
}
其他区域调用NAME(p)函数壳时将实际参数赋予void *p, __NAME(p)函数可以根据param-> nParamIndex参数选择执行具体的功能,最终返回执行的结果;
下面详细介绍在固件升级过程中可能出现的几种情况以及处理方法:
产品投运后,根据功能需求的变化需要增加、删除、修改现有区域的功能或直接增加实现新功能的区域或直接删除某个区域。其中:
第一种固件升级情况:
本区域内增加、删除、修改功能,该功能与其他区域无关联,即无调用关系。
对于这种情况,本区域内增加、删除、修改功能不会导致其他区域发生变化,因此这种情况属于单个区域独立升级。
第二种固件升级情况:
本区域内增加、删除、修改功能,该功能调用其他区域中的函数壳空类型指针变量。
对于这种情况,本区域内增加、删除、修改功能不会导致其他区域发生变化,只需按规定的组织方法调用其他区域中的函数壳及传递参数,或调用其他区域中的空类型指针变量,因此这种情况仍属于单个区域独立升级。
第三种固件升级情况:
本区域内增加、删除、修改功能,其他区域中需要调用该功能。
对于这种情况,还需要逐个情况分析处理。
若增加新功能,并且其他区域中需要调用该功能。由于其他区域调用本区域内新增加的函数壳或空类型指针变量,必然导致其他区域也发生变化,因此这种情况需要同时升级多个相互关联的区域。
若删除旧功能,并且其他区域中一直调用该功能。为了减少固件升级量,可以在保留与旧功能相关的函数壳或空类型指针变量的情况下,删除旧功能,由于其他区域仍然调用本区域内旧功能的函数壳或空类型指针变量,未导致其他区域发生变化,因此这种情况仍属于单个区域独立升级。
若修改功能,可以参照“删除旧功能”处理。
第四种固件升级情况:
增加实现新功能的区域,且该区域具有若干个相关联的其他区域。
对于这种情况,需按规定的组织方法增加新的区域,同时其他关联区域调用新区域的功能,必然导致这些关联区域也发生变化,因此这种情况需要同时升级多个相互关联的区域。
第五种固件升级情况:
虽然本区域预留出一定的空间以备增加功能,若区域不够用时需再划出一块还未使用的区域。
对于这种情况,可以参照第四种固件升级情况处理。
第六种固件升级情况:
删除某个区域,且该区域具有若干个相关联的其他区域。
对于这种情况,为了减少固件升级量,可以在保留与旧功能相关的函数壳或空类型指针变量的情况下,删除该区域,由于其他区域仍然调用该区域内旧功能的函数壳或空类型指针变量,未导致其他区域发生变化,因此这种情况仍属于单个区域独立升级。
下面详细介绍本发明实施例进行固件远程升级的方法,步骤包括:
需要升级的一个或多个区域编译生成BIN文件,并在文件的开头增加升级信息,制成升级固件包;
通过远程通信网络下载至指定的电力设备;
电力设备接收到下发的升级指令后,将升级固件包下载至电力设备的Flash存储器,并核对下载的升级数据正确性,而后在Flash指定地址写入升级标志和信息,重启设备。
所述升级信息包括需要升级的区域数量,每个需要升级的区域的首地址、长度。
电力设备重启后,首先检查Flash指定地址的升级标志和信息,核对准确后从Flash的指定地址读取升级数据,并按照升级信息将升级数据写入MCU指定的地址。
经过上述步骤完成电力设备的一个或多个区域的固件升级。
虽然以上结合具体实施方式对本发明内容进行了详细地说明,但是应当理解到,本领域的技术人员在不违背本发明的原理和实质精神的前提下,对本发明的实施方式可以作出各种变形或者修改,这些变形和修改均应当落入本发明的保护范围。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
Claims (6)
1.一种减少电力设备固件升级量的方法,其特征在于它包括:
S1、电力设备固件的数据组织步骤;步骤S1具体包括以下步骤:
S1-1、以功能模块或者对象为单位将电力设备的固件存储空间划分成若干个独立分散的区域,各区域中对应存放相应的功能模块或者对象,并设置区域的固定位置、大小以及BIN文件名称,所述的区域中至少有一个区域存放Bootloader功能,前述Bootloader功能用于实现初始化设备、固件升级功能;
S1-2、在电力设备的固件存储空间中通过分散加载机制为链接器指定各区域BIN文件名称和区域位置的放置信息;
S1-3、区域划分以后通过编译程序生成对应的BIN文件;在升级单独的某个区域时,提取该区域对应的BIN文件,并通过预先固化的Bootloader功能模块将前述文件的升级数据固化到电力设备的对应固件存储空间;
S2、电力设备固件的区域内函数组织步骤;
S3、电力设备固件的全局变量、数组、函数参数的组织步骤;
S4、电力设备固件的远程升级步骤。
2.根据权利要求1所述的减少电力设备固件升级量的方法,其特征在于步骤S1-1中,划分区域时预留一定的空间以备增加功能,若已划分的区域不够用时,能够再划出一块还未使用的区域,不影响其他区域。
3.根据权利要求1所述的减少电力设备固件升级量的方法,其特征在于步骤S2具体包括以下步骤:
S2-1、在电力设备固件中使用函数壳和伪指令控制区域的连带关系,为区域之间存在相互调用关系的函数建立相应的函数壳,区域之间调用函数时都需要先通过函数壳,再执行函数的功能;
S2-2、使用伪指令固定函数壳在区域内的位置,编译生成后函数地址不改变,修改函数壳对应的函数只改变本区域,不影响到调用它的其他区域。
4.根据权利要求3所述的减少电力设备固件升级量的方法,其特征在于步骤S2-1中,函数壳作为函数之间调用的中间人,函数壳采用下述表达式:
function NAME(){__NAME()}
function__NAME(){#do stuff here}
NAME()即是__NAME()函数的函数壳,只实现调用__NAME()函数的功能,而具体功能在__NAME()函数中实现;其他区域通过调用NAME()函数壳来间接使用__NAME()功能。
5.根据权利要求1所述的减少电力设备固件升级量的方法,其特征在于步骤S3,具体包括以下步骤:
S3-1、在电力设备固件中使用1级、2级空类型指针变量控制区域的连带关系,减少区域之间连带升级;
S3-2、申请2级空类型指针变量代替直接使用全局变量或数组,保证编译后即使变量改变也不会扩大关联区域的升级范围;
S3-3、使用1级空类型指针传递函数的实际参数,即使实际参数改变也不会扩大关联区域的升级范围;
S3-4、区域之间相互调用函数的参数时,利用1级空类型指针实现动态变化。
6.根据权利要求1所述的减少电力设备固件升级量的方法,其特征在于步骤S4,具体包括以下步骤:
S4-1、将需要升级的区域编译生成BIN文件,并在文件的开头增加升级信息;升级信息包括需要升级的区域数量,每个需要升级的区域的首地址、长度以及校验码,制成升级固件包;
S4-2、通过远程通信网络下载升级固件包至指定的电力设备;
S4-3、电力设备接收到下发的升级固件及指令,并核对准确后重启设备,通过预先固化在设备里的Bootloader程序将升级数据固化到电力设备的对应固件存储空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610022885.4A CN105487909B (zh) | 2016-01-14 | 2016-01-14 | 一种减少电力设备固件升级量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610022885.4A CN105487909B (zh) | 2016-01-14 | 2016-01-14 | 一种减少电力设备固件升级量的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105487909A CN105487909A (zh) | 2016-04-13 |
CN105487909B true CN105487909B (zh) | 2018-12-28 |
Family
ID=55674905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610022885.4A Active CN105487909B (zh) | 2016-01-14 | 2016-01-14 | 一种减少电力设备固件升级量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105487909B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843954A (zh) * | 2017-01-16 | 2017-06-13 | 武汉慧联无限科技有限公司 | 传感器节点远程升级方法 |
CN110119281A (zh) * | 2018-02-07 | 2019-08-13 | 河南许继仪表有限公司 | 一种电能表软件模块化升级方法及电能表系统 |
CN108681459B (zh) * | 2018-03-26 | 2022-03-01 | 深圳有电物联科技有限公司 | 一种智能硬件设备的固件更新方法、装置及系统 |
CN109445823A (zh) * | 2018-11-02 | 2019-03-08 | 长虹美菱股份有限公司 | 一种mcu固件快速升级方法 |
CN109933358B (zh) * | 2019-01-28 | 2022-06-24 | 金卡智能集团股份有限公司 | 用于减少计量设备程序升级量的控制方法 |
CN112416392A (zh) * | 2020-11-17 | 2021-02-26 | 四川长虹电器股份有限公司 | 一种基于端云的终端固件动态加载方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508657A (zh) * | 2011-10-18 | 2012-06-20 | 北京空间飞行器总体设计部 | 一种航天器嵌入式软件模块维护方法 |
CN105607922A (zh) * | 2015-12-06 | 2016-05-25 | 江苏林洋能源股份有限公司 | 一种时钟免维护固件易升级的智能电能表及其升级方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060130036A1 (en) * | 2004-12-09 | 2006-06-15 | International Business Machines Corporation | Method, system and storage medium for dynamic service activation |
-
2016
- 2016-01-14 CN CN201610022885.4A patent/CN105487909B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508657A (zh) * | 2011-10-18 | 2012-06-20 | 北京空间飞行器总体设计部 | 一种航天器嵌入式软件模块维护方法 |
CN105607922A (zh) * | 2015-12-06 | 2016-05-25 | 江苏林洋能源股份有限公司 | 一种时钟免维护固件易升级的智能电能表及其升级方法 |
Non-Patent Citations (1)
Title |
---|
基于MCU的嵌入式在线升级系统的设计与实现;方冲等;《电视技术》;20120531(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105487909A (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105487909B (zh) | 一种减少电力设备固件升级量的方法 | |
CN102609328B (zh) | 系统差分升级方法和装置、移动终端 | |
CN106022130B (zh) | 加固应用程序的脱壳方法及装置 | |
CN106707848B (zh) | 一种控制系统的控制程序组织结构和下载方法 | |
CN102012831B (zh) | 基于Linux平台的OTA升级方法 | |
CN103309683B (zh) | 硬件设备的软件补丁嵌入方法及装置 | |
CN102508657B (zh) | 一种航天器嵌入式软件模块维护方法 | |
CN101504669B (zh) | 一种Web应用的模板发布方法、装置及系统 | |
US11016785B2 (en) | Method and system for mirror image package preparation and application operation | |
CN110032388B (zh) | 一种增量文件的构建、发布、下载方法及装置 | |
CN105302554A (zh) | 一种Android系统自动化程序构建方法及系统 | |
CN105159718B (zh) | 固件升级方法及装置 | |
CN103473287A (zh) | 一种自动分发、运行和更新可执行程序的方法及系统 | |
CN107391104A (zh) | 一种客户端与react native代码的更新依赖管理方法、装置及系统 | |
CN107291447B (zh) | 一种自动生成并发布sdk代码的方法 | |
CN105528418A (zh) | 一种设计文档生成方法及装置 | |
CN111158743B (zh) | 大数据运维管理平台 | |
CN108984198A (zh) | 一种Android系统的升级方法及装置 | |
CN103092660A (zh) | 一种嵌入式设备出厂配置与生产配置的安全快速切换方法 | |
CN108255735A (zh) | 关联环境测试方法、电子装置及计算机可读存储介质 | |
CN102243587B (zh) | 嵌入式系统中对rom程序的升级方法 | |
CN107844300A (zh) | 脚本处理方法及系统 | |
CN102567328A (zh) | 增量更新的方法和装置 | |
CN108958719B (zh) | 数字飞行器缓冲区信息处理源代码人工智能书写方法 | |
CN109597639B (zh) | 一种软件升级方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210415 Address after: No. 666, Linyang Road, Qidong City, Nantong City, Jiangsu Province, 226200 Patentee after: JIANGSU LINYANG ENERGY Co.,Ltd. Patentee after: Nanjing Linyang Electric Co.,Ltd. Address before: No. 666, Linyang Road, Qidong City, Nantong City, Jiangsu Province, 226200 Patentee before: JIANGSU LINYANG ENERGY Co.,Ltd. |