欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號:9727186閱讀:483來源:國知局
一種減少電力設(shè)備固件升級量的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電力設(shè)備固件升級領(lǐng)域,尤其涉及一種減少電力設(shè)備固件升級量的方法。
【背景技術(shù)】
[0002]目前,隨著智能電網(wǎng)建設(shè)的不斷推進,電力設(shè)備中MCU的應(yīng)用越來越廣泛,在很多情況下,如現(xiàn)場使用的設(shè)備需要增加新功能、現(xiàn)場運行后發(fā)現(xiàn)BUG等等,都要求更新MCU的固件程序;同時由于電力設(shè)備往往工作在無人值守的環(huán)境下,且數(shù)量眾多,一旦需要對數(shù)以萬計的終端進行現(xiàn)場更新,就會耗費大量現(xiàn)場服務(wù)的人力、物力和時間。
[0003]當(dāng)前各廠家基于遠程通信網(wǎng)絡(luò)使用IAP在線編程技術(shù)實現(xiàn)設(shè)備遠程固件升級。該方案雖然解決了現(xiàn)場升級的繁重工作量,但存在著弊端,新舊固件即使只有略微的差別,仍需要下載完整的新固件進行替換升級。這種每次升級都需要替換整個固件的方式增加了升級過程時間,消耗了大量網(wǎng)絡(luò)通信資源,增加了升級失敗率。

【發(fā)明內(nèi)容】

[0004]本發(fā)明的目的在于提供一種減少電力設(shè)備固件升級量的方法,旨在解決現(xiàn)有技術(shù)對電力設(shè)備固件升級時出現(xiàn)的效率低、浪費網(wǎng)絡(luò)資源等問題。
[0005]本發(fā)明的技術(shù)方案是:
一種減少電力設(shè)備固件升級量的方法,它包括:
51、電力設(shè)備固件的數(shù)據(jù)組織步驟;
52、電力設(shè)備固件的區(qū)域內(nèi)函數(shù)組織步驟;
53、電力設(shè)備固件的全局變量、數(shù)組、函數(shù)參數(shù)的組織步驟;
54、電力設(shè)備固件的遠程升級步驟。
[0006]本發(fā)明的步驟S1具體包括以下步驟:
S1-1、以功能模塊或者對象為單位將電力設(shè)備的固件存儲空間劃分成若干個獨立分散的區(qū)域,各區(qū)域中對應(yīng)存放相應(yīng)的功能模塊或者對象,并設(shè)置區(qū)域的固定位置、大小以及BIN文件名稱,所述的區(qū)域中至少有一個區(qū)域存放Boot loader功能,前述Boot loader功能用于實現(xiàn)初始化設(shè)備、固件升級功能;
S1-2、在電力設(shè)備的固件存儲空間中通過分散加載機制為鏈接器指定各區(qū)域BIN文件名稱和區(qū)域位置的放置信息;
S1-3、區(qū)域劃分以后通過編譯程序生成對應(yīng)的BIN文件;在升級單獨的某個區(qū)域時,提取該區(qū)域?qū)?yīng)的BIN文件,并通過預(yù)先固化的Bootloader功能模塊將前述文件的升級數(shù)據(jù)固化到電力設(shè)備的對應(yīng)固件存儲空間。
[0007]本發(fā)明的步驟S1-1中,劃分區(qū)域時預(yù)留一定的空間以備增加功能,若已劃分的區(qū)域不夠用時,能夠再劃出一塊還未使用的區(qū)域,不影響其他區(qū)域。
[0008]本發(fā)明的步驟S2具體包括以下步驟: S2-1、在電力設(shè)備固件中使用函數(shù)殼和偽指令控制區(qū)域的連帶關(guān)系,為區(qū)域之間存在相互調(diào)用關(guān)系的函數(shù)建立相應(yīng)的函數(shù)殼,區(qū)域之間調(diào)用函數(shù)時都需要先通過函數(shù)殼,再執(zhí)行真正的功能;
52-2、使用偽指令固定函數(shù)殼在區(qū)域內(nèi)的位置,編譯生成后函數(shù)地址不改變,修改函數(shù)殼對應(yīng)的函數(shù)只改變本區(qū)域,不影響到調(diào)用它的其他區(qū)域。
[0009]本發(fā)明的步驟S2-1中,函數(shù)殼作為函數(shù)之間調(diào)用的中間人,函數(shù)殼采用下述表達式:
funct1n NAME() { —NAME() }funct1n —NAME() { # do stuff here }
NAME ()即是—NAME ()函數(shù)的函數(shù)殼,只實現(xiàn)調(diào)用—NAME ()函數(shù)的功能,而具體功能在—NAME()函數(shù)中實現(xiàn);其他區(qū)域通過調(diào)用NAME()函數(shù)殼來間接使用—NAME()功能。
[0010]本發(fā)明的步驟S3,具體包括以下步驟:
53-1、在電力設(shè)備固件中使用1級、2級空類型指針變量控制區(qū)域的連帶關(guān)系,減少區(qū)域之間連帶升級;
S3-2、申請2級空類型指針變量代替直接使用全局變量或數(shù)組,保證編譯后即使變量改變也不會擴大關(guān)聯(lián)區(qū)域的升級范圍;
S3-3、使用1級空類型指針傳遞函數(shù)的實際參數(shù),即使實際參數(shù)改變也不會擴大關(guān)聯(lián)區(qū)域的升級范圍,前述1級空類型指針采用下述方式表述;typedef struct tagParam{ int nParamlndex;
// define hereint nResult;
} Param;
void funct1n NAME(void *p) { —NAME(p) }void funct1n —NAME(void 氺p)
{ Param 氺param = (Param 氺)p;switch (param-> nParamlndex)
{# do stuff here }
}
其他區(qū)域調(diào)用NAME(p)函數(shù)殼時將實際參數(shù)賦予void *p,__NAME(p)函數(shù)可以根據(jù)param-〉nParamlndex參數(shù)選擇執(zhí)行具體的功能,最終返回執(zhí)行的結(jié)果;
53-4、區(qū)域之間相互調(diào)用的函數(shù)的參數(shù)不需要建立固定的參數(shù)列表庫,利用空類型指針可以動態(tài)變化。
[0011]本發(fā)明的步驟S4,具體包括以下步驟:
54-1、將需要升級的區(qū)域編譯生成BIN文件,并在文件的開頭增加升級信息;升級信息包括需要升級的區(qū)域數(shù)量,每個需要升級的區(qū)域的首地址、長度以及校驗碼,制成升級固件包;
S4-2、通過遠程通信網(wǎng)絡(luò)下載至指定的電力設(shè)備;
S4-3、電力設(shè)備接收到下發(fā)的升級固件及指令,并核對準(zhǔn)確后重啟設(shè)備,通過預(yù)先固化在設(shè)備里的Bootloader程序?qū)⑸墧?shù)據(jù)固化到電力設(shè)備的對應(yīng)固件存儲空間。
[0012]本發(fā)明的有益效果:
本發(fā)明提出的一種減少電力設(shè)備固件升級量的方法,可以實現(xiàn)產(chǎn)品投運后,根據(jù)功能需求變化只對更改了功能的區(qū)域進行升級,從而避免替換全部程序,減少了固件升級量,減少了升級過程對網(wǎng)絡(luò)資源的消耗,提高了固件升級的效率,另外降低了產(chǎn)品投運后的維護成本,增強了產(chǎn)品的市場競爭力。
[0013]本發(fā)明的區(qū)域之間需要相互調(diào)用函數(shù),在電力設(shè)備固件中使用函數(shù)殼和偽指令控制區(qū)域的連帶關(guān)系,減少區(qū)域之間連帶升級。首先,為區(qū)域之間相互調(diào)用的函數(shù)建立相應(yīng)的函數(shù)殼,函數(shù)殼起到“中間人”的作用,區(qū)域之間調(diào)用函數(shù)時都需要先通過函數(shù)殼,再執(zhí)行真正的功能;然后,使用偽指令固定函數(shù)殼在區(qū)域內(nèi)的位置,修改函數(shù)殼對應(yīng)的函數(shù)只會改變本區(qū)域,不會影響到調(diào)用它的其他區(qū)域,從而切斷區(qū)域之間的連帶升級,達到減少固件升級范圍的目的。
[0014]本發(fā)明的區(qū)域內(nèi)需要使用全局變量、數(shù)組,區(qū)域之間需要相互調(diào)用全局變量、數(shù)組,這些全局變量、數(shù)組以及區(qū)域之間相互調(diào)用的函數(shù)的參數(shù)需要變化,在電力設(shè)備固件中使用1級、2級空類型指針變量控制區(qū)域的連帶關(guān)系,減少區(qū)域之間連帶升級。使用1級空類型指針傳遞函數(shù)的實際參數(shù),即使實際參數(shù)改變也不會擴大關(guān)聯(lián)區(qū)域的升級范圍;申請2級空類型指針變量代替直接使用全局變量或數(shù)組,保證了即使變量改變也不會擴大關(guān)聯(lián)區(qū)域的升級范圍。
[0015]
【附圖說明】
[0016]圖1是本發(fā)明實施例的減少電力設(shè)備固件升級量的方法的流程圖圖2是本發(fā)明實施例的區(qū)域之間關(guān)聯(lián)示意圖
圖3是本發(fā)明實施例的區(qū)域之間調(diào)用函數(shù)流程圖
【具體實施方式】
[0017]下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0018]如圖1所示,本發(fā)明提出的一種減少電力設(shè)備固件升級量的方法,包括以下步驟:為了使電力設(shè)備固件的功能模塊可以獨立升級,需要對電力設(shè)備固件的數(shù)據(jù)組織方式重新規(guī)劃,包括:
以功能模塊或者對象為單位將電力設(shè)備的固件存儲空間劃分成若干個獨立分散的區(qū)域,各區(qū)域中對應(yīng)存放相應(yīng)的功能模塊或者對象,并設(shè)置區(qū)域的固定位置、大小以及BIN文件名稱,區(qū)域固定了位置,即區(qū)域的首地址固定后,通過編譯程序生成對應(yīng)的BIN文件,最后將BIN文件固化到電力設(shè)備固件的對應(yīng)存儲空間。
[0019]區(qū)域劃分的時候應(yīng)預(yù)留出一定的空間以備增加功能使用,若該區(qū)域不夠用時可再劃出一塊還未使用的區(qū)域,不影響其他區(qū)域。
[0020]區(qū)域劃分以后內(nèi)部的函數(shù)會相互調(diào)用,修改功能,這些操作只會影響本區(qū)域,不影響其他區(qū)域。
[0021]在升級單獨的某個區(qū)域時,可以提取該區(qū)域?qū)?yīng)的BIN文件,并通過預(yù)先固化在設(shè)備里的Bootloader程序?qū)⒃揃IN文件的升級數(shù)據(jù)固化到電力設(shè)備固件的對應(yīng)存儲空間。
[0022]設(shè)備中至少劃分出一個區(qū)域存放Bootloader功能,Bootloader至少實現(xiàn)初始化設(shè)備、固定升級的功能。
[0023]如圖2所示,區(qū)域之間需要相互調(diào)用函數(shù),若僅劃分區(qū)域,某個區(qū)域內(nèi)的函數(shù)修改后,與之相互調(diào)用函數(shù)的區(qū)域會改變,隨之又影響到其他有關(guān)聯(lián)的區(qū)域。這種情況導(dǎo)致升級某個區(qū)域時,與之有關(guān)聯(lián)的區(qū)域,甚至與關(guān)聯(lián)區(qū)域有關(guān)聯(lián)的區(qū)域都需要升級。
[0024]如圖3所示,為了減少固件升級的范圍,在不影響正常運行的前提下切斷區(qū)域之間的連帶升級,需要對電力設(shè)備固件的區(qū)域內(nèi)函數(shù)組織方式重新規(guī)劃,包括:
為區(qū)域之間相互調(diào)用的函數(shù)建立相應(yīng)的函數(shù)殼,函數(shù)殼起到“中間人”的作用,區(qū)域之間調(diào)用函數(shù)時都需要先通過函數(shù)殼,再執(zhí)行真正的功能,函數(shù)殼采用下述表達式:funct1n NAME() { —NAME() }funct1n —NAME() { # do stuff here }
NAME ()即是—NAME ()函數(shù)的函數(shù)殼,只實現(xiàn)調(diào)用—NAME ()函數(shù)的功能,而具體功能在—NAME()函數(shù)中實現(xiàn);其他區(qū)域通過調(diào)用NAME()函數(shù)殼來間接使用—NAME()功能。
[0025]使用偽指令固定函數(shù)殼在區(qū)域內(nèi)的位置,修改函數(shù)殼對應(yīng)的函數(shù)只會改變本區(qū)域,不會影響到調(diào)用它的其他區(qū)域,從而切斷區(qū)域之間的連帶升級,達到減少固件升級范圍的目的。
[0026]區(qū)域內(nèi)需要使用全局變量、數(shù)組,區(qū)域之間需要
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
六盘水市| 来安县| 大安市| 霍城县| 木里| 云龙县| 长治县| 潮州市| 镇赉县| 洪江市| 英吉沙县| 丰原市| 宁安市| 龙山县| 临颍县| 札达县| 三原县| 贡嘎县| 文登市| 竹北市| 无为县| 铜川市| 瑞金市| 黔西县| 延边| 黔东| 永年县| 蕉岭县| 兴国县| 江山市| 济源市| 正镶白旗| 京山县| 邯郸市| 重庆市| 邛崃市| 临潭县| 湖南省| 华容县| 黑山县| 华容县|