• / 11
  • 下載費用:30 金幣  

一種減少電力設備固件升級量的方法.pdf

摘要
申請專利號:

CN201610022885.4

申請日:

2016.01.14

公開號:

CN105487909A

公開日:

2016.04.13

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/445申請日:20160114|||公開
IPC分類號: G06F9/445; H04L29/08 主分類號: G06F9/445
申請人: 江蘇林洋能源股份有限公司
發明人: 陳昊琦; 尹建豐; 季海濤
地址: 226200江蘇省南通市啟東市林洋路666號
優先權:
專利代理機構: 南京天華專利代理有限責任公司32218 代理人: 王堯; 夏平
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201610022885.4

授權公告號:

||||||

法律狀態公告日:

2018.12.28|||2016.05.11|||2016.04.13

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

一種減少電力設備固件升級量的方法,它包括:S1、電力設備固件的數據組織步驟;S2、電力設備固件的區域內函數組織步驟;S3、電力設備固件的全局變量、數組、函數參數的組織步驟;S4、電力設備固件的遠程升級步驟。本發明提出的一種減少電力設備固件升級量的方法,可以實現產品投運后,根據功能需求變化只對更改了功能的區域進行升級,從而避免替換全部程序,減少了固件升級量,減少了升級過程對網絡資源的消耗,提高了固件升級的效率,另外降低了產品投運后的維護成本,增強了產品的市場競爭力。

權利要求書

1.一種減少電力設備固件升級量的方法,其特征在于它包括:S1、電力設備固件的數據組織步驟;S2、電力設備固件的區域內函數組織步驟;S3、電力設備固件的全局變量、數組、函數參數的組織步驟;S4、電力設備固件的遠程升級步驟。2.根據權利要求1所述的減少電力設備固件升級量的方法,其特征在于步驟S1具體包括以下步驟:S1-1、以功能模塊或者對象為單位將電力設備的固件存儲空間劃分成若干個獨立分散的區域,各區域中對應存放相應的功能模塊或者對象,并設置區域的固定位置、大小以及BIN文件名稱,所述的區域中至少有一個區域存放Bootloader功能,前述Bootloader功能用于實現初始化設備、固件升級功能;S1-2、在電力設備的固件存儲空間中通過分散加載機制為鏈接器指定各區域BIN文件名稱和區域位置的放置信息;S1-3、區域劃分以后通過編譯程序生成對應的BIN文件;在升級單獨的某個區域時,提取該區域對應的BIN文件,并通過預先固化的Bootloader功能模塊將前述文件的升級數據固化到電力設備的對應固件存儲空間。3.根據權利要求2所述的減少電力設備固件升級量的方法,其特征在于步驟S1-1中,劃分區域時預留一定的空間以備增加功能,若已劃分的區域不夠用時,能夠再劃出一塊還未使用的區域,不影響其他區域。4.根據權利要求1所述的減少電力設備固件升級量的方法,其特征在于步驟S2具體包括以下步驟:S2-1、在電力設備固件中使用函數殼和偽指令控制區域的連帶關系,為區域之間存在相互調用關系的函數建立相應的函數殼,區域之間調用函數時都需要先通過函數殼,再執行真正的功能;S2-2、使用偽指令固定函數殼在區域內的位置,編譯生成后函數地址不改變,修改函數殼對應的函數只改變本區域,不影響到調用它的其他區域。5.根據權利要求4所述的減少電力設備固件升級量的方法,其特征在于步驟S2-1中,函數殼作為函數之間調用的中間人,函數殼采用下述表達式:functionNAME(){__NAME()}function__NAME(){#dostuffhere}NAME()即是__NAME()函數的函數殼,只實現調用__NAME()函數的功能,而具體功能在__NAME()函數中實現;其他區域通過調用NAME()函數殼來間接使用__NAME()功能。6.根據權利要求1所述的減少電力設備固件升級量的方法,其特征在于步驟S3,具體包括以下步驟:S3-1、在電力設備固件中使用1級、2級空類型指針變量控制區域的連帶關系,減少區域之間連帶升級;S3-2、申請2級空類型指針變量代替直接使用全局變量或數組,保證編譯后即使變量改變也不會擴大關聯區域的升級范圍;S3-3、使用1級空類型指針傳遞函數的實際參數,即使實際參數改變也不會擴大關聯區域的升級范圍;S3-4、區域之間相互調用函數的參數時,利用前述空類型指針實現動態變化。7.根據權利要求1所述的減少電力設備固件升級量的方法,其特征在于步驟S4,具體包括以下步驟:S4-1、將需要升級的區域編譯生成BIN文件,并在文件的開頭增加升級信息;升級信息包括需要升級的區域數量,每個需要升級的區域的首地址、長度以及校驗碼,制成升級固件包;S4-2、通過遠程通信網絡下載至指定的電力設備;S4-3、電力設備接收到下發的升級固件及指令,并核對準確后重啟設備,通過預先固化在設備里的Bootloader程序將升級數據固化到電力設備的對應固件存儲空間。

說明書

一種減少電力設備固件升級量的方法

技術領域

本發明涉及電力設備固件升級領域,尤其涉及一種減少電力設備固件升級量的方法。

背景技術

目前,隨著智能電網建設的不斷推進,電力設備中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中,函數殼作為函數之間調用的中間人,函數殼采用下述表達式:

functionNAME(){__NAME()}

function__NAME(){#dostuffhere}

NAME()即是__NAME()函數的函數殼,只實現調用__NAME()函數的功能,而具體功能在__NAME()函數中實現;其他區域通過調用NAME()函數殼來間接使用__NAME()功能。

本發明的步驟S3,具體包括以下步驟:

S3-1、在電力設備固件中使用1級、2級空類型指針變量控制區域的連帶關系,減少區域之間連帶升級;

S3-2、申請2級空類型指針變量代替直接使用全局變量或數組,保證編譯后即使變量改變也不會擴大關聯區域的升級范圍;

S3-3、使用1級空類型指針傳遞函數的實際參數,即使實際參數改變也不會擴大關聯區域的升級范圍,前述1級空類型指針采用下述方式表述;

typedefstructtagParam

{intnParamIndex;

//definehere

intnResult;

}Param;

voidfunctionNAME(void*p){__NAME(p)}

voidfunction__NAME(void*p)

{Param*param=(Param*)p;

switch(param->nParamIndex)

{#dostuffhere}

}

其他區域調用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所示,為了減少固件升級的范圍,在不影響正常運行的前提下切斷區域之間的連帶升級,需要對電力設備固件的區域內函數組織方式重新規劃,包括:

為區域之間相互調用的函數建立相應的函數殼,函數殼起到“中間人”的作用,區域之間調用函數時都需要先通過函數殼,再執行真正的功能,函數殼采用下述表達式:

functionNAME(){__NAME()}

function__NAME(){#dostuffhere}

NAME()即是__NAME()函數的函數殼,只實現調用__NAME()函數的功能,而具體功能在__NAME()函數中實現;其他區域通過調用NAME()函數殼來間接使用__NAME()功能。

使用偽指令固定函數殼在區域內的位置,修改函數殼對應的函數只會改變本區域,不會影響到調用它的其他區域,從而切斷區域之間的連帶升級,達到減少固件升級范圍的目的。

區域內需要使用全局變量、數組,區域之間需要相互調用全局變量、數組,這些全局變量、數組、區域之間相互調用的函數的參數需要變化,也會導致升級某個區域后,與之有關聯的其它區域都需要升級。

為了減少固件升級的范圍,需要對電力設備固件的區域內全局變量、數組、函數參數的組織方式重新規劃,包括:

使用1級空類型指針傳遞函數的實際參數,即使實際參數改變也不會擴大關聯區域的升級范圍;

申請2級空類型指針變量代替直接使用全局變量或數組,保證了即使變量改變也不會擴大關聯區域的升級范圍。

前述1級空類型指針采用下述方式表述;

typedefstructtagParam

{intnParamIndex;

//definehere

intnResult;

}Param;

voidfunctionNAME(void*p){__NAME(p)}

voidfunction__NAME(void*p)

{Param*param=(Param*)p;

switch(param->nParamIndex)

{#dostuffhere}

}

其他區域調用NAME(p)函數殼時將實際參數賦予void*p,__NAME(p)函數可以根據param->nParamIndex參數選擇執行具體的功能,最終返回執行的結果;

下面詳細介紹在固件升級過程中可能出現的幾種情況以及處理方法:

產品投運后,根據功能需求的變化需要增加、刪除、修改現有區域的功能或直接增加實現新功能的區域或直接刪除某個區域。其中:

第一種固件升級情況:

本區域內增加、刪除、修改功能,該功能與其他區域無關聯,即無調用關系。

對于這種情況,本區域內增加、刪除、修改功能不會導致其他區域發生變化,因此這種情況屬于單個區域獨立升級。

第二種固件升級情況:

本區域內增加、刪除、修改功能,該功能調用其他區域中的函數殼空類型指針變量。

對于這種情況,本區域內增加、刪除、修改功能不會導致其他區域發生變化,只需按規定的組織方法調用其他區域中的函數殼及傳遞參數,或調用其他區域中的空類型指針變量,因此這種情況仍屬于單個區域獨立升級。

第三種固件升級情況:

本區域內增加、刪除、修改功能,其他區域中需要調用該功能。

對于這種情況,還需要逐個情況分析處理。

若增加新功能,并且其他區域中需要調用該功能。由于其他區域調用本區域內新增加的函數殼或空類型指針變量,必然導致其他區域也發生變化,因此這種情況需要同時升級多個相互關聯的區域。

若刪除舊功能,并且其他區域中一直調用該功能。為了減少固件升級量,可以在保留與舊功能相關的函數殼或空類型指針變量的情況下,刪除舊功能,由于其他區域仍然調用本區域內舊功能的函數殼或空類型指針變量,未導致其他區域發生變化,因此這種情況仍屬于單個區域獨立升級。

若修改功能,可以參照“刪除舊功能”處理。

第四種固件升級情況:

增加實現新功能的區域,且該區域具有若干個相關聯的其他區域。

對于這種情況,需按規定的組織方法增加新的區域,同時其他關聯區域調用新區域的功能,必然導致這些關聯區域也發生變化,因此這種情況需要同時升級多個相互關聯的區域。

第五種固件升級情況:

雖然本區域預留出一定的空間以備增加功能,若區域不夠用時需再劃出一塊還未使用的區域。

對于這種情況,可以參照第四種固件升級情況處理。

第六種固件升級情況:

刪除某個區域,且該區域具有若干個相關聯的其他區域。

對于這種情況,為了減少固件升級量,可以在保留與舊功能相關的函數殼或空類型指針變量的情況下,刪除該區域,由于其他區域仍然調用該區域內舊功能的函數殼或空類型指針變量,未導致其他區域發生變化,因此這種情況仍屬于單個區域獨立升級。

下面詳細介紹本發明實施例進行固件遠程升級的方法,步驟包括:

需要升級的一個或多個區域編譯生成BIN文件,并在文件的開頭增加升級信息,制成升級固件包;

通過遠程通信網絡下載至指定的電力設備;

電力設備接收到下發的升級指令后,將升級固件包下載至電力設備的Flash存儲器,并核對下載的升級數據正確性,而后在Flash指定地址寫入升級標志和信息,重啟設備。

所述升級信息包括需要升級的區域數量,每個需要升級的區域的首地址、長度。

電力設備重啟后,首先檢查Flash指定地址的升級標志和信息,核對準確后從Flash的指定地址讀取升級數據,并按照升級信息將升級數據寫入MCU指定的地址。

經過上述步驟完成電力設備的一個或多個區域的固件升級。

雖然以上結合具體實施方式對本發明內容進行了詳細地說明,但是應當理解到,本領域的技術人員在不違背本發明的原理和實質精神的前提下,對本發明的實施方式可以作出各種變形或者修改,這些變形和修改均應當落入本發明的保護范圍。

本發明未涉及部分均與現有技術相同或可采用現有技術加以實現。

關 鍵 詞:
一種 減少 電力設備 升級 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種減少電力設備固件升級量的方法.pdf
鏈接地址:http://www.rgyfuv.icu/p-6341677.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图