一種微控制器固件開發(fā)與更新的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種微控制器固件開發(fā)與更新的方法及系統(tǒng),包括:預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,并將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);其中,N為大于1的整數(shù);接收到更新指令后,根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段;利用所述更新指令更新所述目標(biāo)固件片段;可見,在本實(shí)施例中,通過將原有的單一固件分為多個(gè)固件片段,在接收到更新指令時(shí),僅需要更新相對應(yīng)的固件片段,由于待更新的固件片段數(shù)據(jù)量小、占用空間少,大大縮短了更新時(shí)間;在產(chǎn)品研發(fā)和生產(chǎn)時(shí),由于固件更新時(shí)間大大縮短,效率得以提升,大大節(jié)約了產(chǎn)品的研發(fā)和生產(chǎn)成本。
【專利說明】
一種微控制器固件開發(fā)與更新的方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及嵌入式系統(tǒng)設(shè)備固件開發(fā)技術(shù)領(lǐng)域,更具體地說,涉及一種微控制器固件開發(fā)與更新的方法及系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)有單片機(jī)系統(tǒng)中,開發(fā)人員通常會將設(shè)備固件燒寫入目標(biāo)板微控制器的程序存儲器中。由于微控制器與普通計(jì)算機(jī)系統(tǒng)不同的是,微控制器內(nèi)部不包含虛擬內(nèi)存管理單元,所以嵌入式設(shè)備所有的軟件功能均包含在同一個(gè)固件中,共用同一塊物理內(nèi)存空間。在研發(fā)階段,開發(fā)人員需對設(shè)備軟件功能進(jìn)行反復(fù)修改、調(diào)試,那么每次修改后,都需要更新固件,依照現(xiàn)有的整個(gè)固件更新方式,更新速度緩慢,會耗費(fèi)開發(fā)人員大量的時(shí)間等待,長此以往,會大大降低產(chǎn)品的研發(fā)效率,加大產(chǎn)品研發(fā)成本。在生產(chǎn)階段,必須在生產(chǎn)前對固件進(jìn)行更新燒錄,依照現(xiàn)有的整個(gè)固件更新方法,單個(gè)產(chǎn)品固件更新時(shí)間較長,那么單位時(shí)間內(nèi)生產(chǎn)完成的產(chǎn)品數(shù)量必然較低,這直接降低了產(chǎn)品生產(chǎn)率,增加產(chǎn)品生產(chǎn)成本。
[0003]因此,如何在開發(fā)階段采取新手段,新方法實(shí)現(xiàn)快速更新微控制器固件,是本領(lǐng)域技術(shù)人員需要解決的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種微控制器固件開發(fā)與更新的方法及系統(tǒng),以實(shí)現(xiàn)更快速的對固件進(jìn)行更新。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了如下技術(shù)方案:
[0006]—種微控制器固件開發(fā)與更新的方法,包括:
[0007]預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,并將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);其中,N為大于I的整數(shù);
[0008]接收到更新指令后,根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段;
[0009]利用所述更新指令更新所述目標(biāo)固件片段。
[0010]其中,所述預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,包括:
[0011]根據(jù)所述原始固件中程序的更新頻率,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段。
[0012]其中,所述預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,包括:
[0013]根據(jù)所述原始固件中程序的類型,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;其中,所述程序的類型至少包括應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)程序。
[0014]其中,若所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù),則從發(fā)起調(diào)用的固件片段預(yù)先存儲的結(jié)構(gòu)體函數(shù)指針變量中,確定被調(diào)用的固件片段的第一函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第一函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0015]其中,若所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù),則從發(fā)起調(diào)用的固件片段預(yù)先存儲的函數(shù)地址列表文件中,確定被調(diào)用的固件片段的第二函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第二函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0016]—種微控制器固件開發(fā)與更新的系統(tǒng),包括:
[0017]分段模塊,用于將原始固件分為N個(gè)相互獨(dú)立的固件片段;其中,N為大于I的整數(shù);
[0018]燒寫模塊,用于將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);
[0019]更新模塊,用于在接收到更新指令時(shí),根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段,并利用所述更新指令更新所述目標(biāo)固件片段。
[0020]其中,所述分段模塊根據(jù)所述原始固件中程序的更新頻率,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段。
[0021]其中,所述分段模塊根據(jù)所述原始固件中程序的類型,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;其中,所述程序的類型至少包括應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)程序。
[0022]其中,還包括:
[0023]第一函數(shù)地址信息確定模塊,用于在所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù)時(shí),從發(fā)起調(diào)用的固件片段預(yù)先存儲的結(jié)構(gòu)體函數(shù)指針變量中,確定被調(diào)用的固件片段的第一函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第一函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0024]其中,還包括:
[0025]第二函數(shù)地址信息確定模塊,用于在所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù)時(shí),從發(fā)起調(diào)用的固件片段預(yù)先存儲的函數(shù)地址列表文件中,確定被調(diào)用的固件片段的第二函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第二函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0026]通過以上方案可知,本發(fā)明實(shí)施例提供的一種微控制器固件開發(fā)與更新的方法及系統(tǒng),包括:預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,并將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);其中,N為大于I的整數(shù);接收到更新指令后,根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段;利用所述更新指令更新所述目標(biāo)固件片段;可見,在本實(shí)施例中,通過將原有的單一固件分為多個(gè)固件片段,在接收到更新指令時(shí),僅需要更新相對應(yīng)的固件片段,由于待更新的固件片段數(shù)據(jù)量小、占用空間少,大大縮短了更新時(shí)間;在產(chǎn)品研發(fā)和生產(chǎn)時(shí),由于固件更新時(shí)間大大縮短,效率得以提升,大大節(jié)約了產(chǎn)品的研發(fā)和生產(chǎn)成本。
【附圖說明】
[0027]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0028]圖1為本發(fā)明實(shí)施例公開的一種微控制器固件開發(fā)與更新的方法流程示意圖;
[0029]圖2為本發(fā)明實(shí)施例公開的一種軟件函數(shù)調(diào)用流程示意圖;
[0030]圖3為本發(fā)明實(shí)施例公開的另一種軟件函數(shù)調(diào)用流程示意圖;
[0031 ]圖4為本發(fā)明實(shí)施例公開的一種微控制器固件開發(fā)與更新的系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0032]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0033]本發(fā)明實(shí)施例公開了一種微控制器固件開發(fā)與更新的方法及系統(tǒng),以實(shí)現(xiàn)更快速的對固件進(jìn)行更新。
[0034]參見圖1,本發(fā)明實(shí)施例提供的一種微控制器固件開發(fā)與更新的方法,包括:
[0035]S101、預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,并將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);其中,N為大于I的整數(shù);
[0036]具體的,固件是指設(shè)備內(nèi)部保存的應(yīng)用軟件,通過固件,實(shí)現(xiàn)了微控制器系統(tǒng)的運(yùn)行動作。在微控制器設(shè)備中,固件就是設(shè)備的靈魂,因?yàn)樵O(shè)備除了固件以外沒有其它軟件組成,因此固件也就決定著硬件設(shè)備的功能及性能。應(yīng)用程序?yàn)槲⒖刂破飨到y(tǒng)中固件的一部分軟件功能,實(shí)現(xiàn)了微控制器系統(tǒng)在不同的特定功能;驅(qū)動程序?yàn)槲⒖刂葡到y(tǒng)中固件的一部分軟件功能,實(shí)現(xiàn)了微控制器上的硬件設(shè)備的控制功能,提供接口給應(yīng)用程序調(diào)用;操作系統(tǒng)為微控制器系統(tǒng)中固件的一部分軟件功能,管理微控制器上的固件中其他部分的運(yùn)作,是固件中的最核心功能。
[0037]具體的,在研發(fā)階段,開發(fā)人員需對設(shè)備軟件功能進(jìn)行反復(fù)修改,調(diào)試,那么每次修改后,都需要更新固件,依照現(xiàn)有的整個(gè)固件更新方式,更新速度緩慢,會耗費(fèi)開發(fā)人員大量的時(shí)間等待,長此以往,會大大降低產(chǎn)品的研發(fā)效率,加大產(chǎn)品研發(fā)成本。生產(chǎn)階段,必須在產(chǎn)線對固件進(jìn)行更新燒錄,依照現(xiàn)有的整個(gè)固件更新方法,單個(gè)產(chǎn)品固件更新時(shí)間較長,那么單位時(shí)間內(nèi)生產(chǎn)完成的產(chǎn)品數(shù)量必然較低,這直接降低了產(chǎn)品生產(chǎn)率,增加產(chǎn)品生產(chǎn)成本。
[0038]因此,在本實(shí)施例中,通過在開發(fā)過程中將原始固件進(jìn)行分段,在對固件進(jìn)行更新時(shí),只需要更新選定的目標(biāo)固件。在本實(shí)施例中可以根據(jù)實(shí)際情況,將固件分為N個(gè)固件片段,N大于等于2。在本實(shí)施例中,以N為2進(jìn)行描述,相應(yīng)的N為其他數(shù)值時(shí),其更新原理與N為2的更新原理相同,可以相互參照,在此就不再贅述。
[0039]S102、接收到更新指令后,根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段。
[0040]S103、利用所述更新指令更新所述目標(biāo)固件片段。
[0041]其中,所述預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,包括:
[0042]根據(jù)所述原始固件中程序的更新頻率,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;或者,
[0043]根據(jù)所述原始固件中程序的類型,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;其中,所述程序的類型至少包括應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)程序。
[0044]具體的,由于N為2,則將原始固件分為兩個(gè)固件片段,在此可以理解為將原始固件分為固件A和固件B。其中,在本實(shí)施例中,可以根據(jù)固件中程序的更新頻率和程序類型將原始固件分為兩個(gè)固件。
[0045]當(dāng)根據(jù)程序的更新頻率進(jìn)行程序分段時(shí),首先需要收集不同程序的更新頻率,在對原始程序進(jìn)行分段時(shí),根據(jù)程序間更新頻率的不同將原始固件分為N個(gè)固件片段;例如:若N為2,原始固件分為固件A和固件B,則可以將更新頻率大于預(yù)定閾值的程序作為固件A,更新頻率不大于預(yù)定閾值的程序作為固件B,這樣,在接收到更新指令時(shí),按照開發(fā)時(shí)約定好的固件更新協(xié)議,更新服務(wù)器端僅提供固件A下載,因而設(shè)備便可從更新服務(wù)器端下載到固件A,并完成更新固件A。
[0046]當(dāng)根據(jù)程序類型進(jìn)行程序分段時(shí),首先需要從原始固件中提取不同類型的固件程序。由于不同類型的程序的更新頻率不同,所以可以根據(jù)程序的類型將原始固件分為N個(gè)固件片段;例如:需要頻繁更新的固件類型為應(yīng)用程序,而相對來說更新頻率低的為驅(qū)動程序和操作系統(tǒng)程序,所以從原始固件中提取應(yīng)用程序作為固件A,提取驅(qū)動程序和操作系統(tǒng)程序作為固件B。這樣,在接收到更新指令時(shí),首先確定待更新的程序的程序類型,確定待更新的程序是位于固件A中還是固件B中,并根據(jù)更新指令進(jìn)行更新。
[0047]綜上可見,在本實(shí)施例中,將嵌入式設(shè)備的程序進(jìn)行分段,一個(gè)是相對穩(wěn)定的B固件,一個(gè)是需調(diào)整應(yīng)用功能的A固件,這樣,產(chǎn)品功能調(diào)整或維護(hù)時(shí),僅需更新A固件。和單一固件方法相比,改進(jìn)后,A固件數(shù)據(jù)量小,占用空間少,更新時(shí)間大大縮短。產(chǎn)品研發(fā)和生產(chǎn)時(shí),固件更新時(shí)間會大大縮短,效率得以提升,大大節(jié)約了產(chǎn)品的研發(fā)和生產(chǎn)成本。
[0048]具體的,由于原始固件被分段為相互獨(dú)立的固件片段,那么有關(guān)聯(lián)的固件之間調(diào)用時(shí),會出現(xiàn)由于不知道被調(diào)用的函數(shù)地址而無法調(diào)用的問題,因此,在本實(shí)施例中提出兩種解決方案:
[0049]方案一:若所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù),則從發(fā)起調(diào)用的固件片段預(yù)先存儲的結(jié)構(gòu)體函數(shù)指針變量中,確定被調(diào)用的固件片段的第一函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第一函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0050]具體的,第一種實(shí)現(xiàn)是通過在B固件中定義調(diào)用函數(shù)的結(jié)構(gòu)體函數(shù)指針,將B固件中被調(diào)用的函數(shù)地址傳遞到A固件中,從而在A固件中實(shí)現(xiàn)函數(shù)調(diào)用功能。
[0051]參見圖2,其調(diào)用流程如下:
[0052]S201、設(shè)備上電后,開始啟動執(zhí)行B固件,完成系統(tǒng)初始化,并且獲取A固件起始地址,同時(shí)定義指向B固件軟件函數(shù)地址的函數(shù)指針結(jié)構(gòu)體變量;
[0053]S202、B固件中通過指向A固件起始地址,開始運(yùn)行A固件程序;
[0054]S203、A固件從參數(shù)區(qū)獲取結(jié)構(gòu)體函數(shù)指針變量,從中獲取到B固件函數(shù)地址;
[0055]S204、A固件通過調(diào)用結(jié)構(gòu)體函數(shù)指針指向的B固件函數(shù),實(shí)現(xiàn)相應(yīng)的函數(shù)功能。
[0056]具體的,在實(shí)現(xiàn)相應(yīng)的函數(shù)功能后,需要檢測運(yùn)行過程中是否出錯(cuò),如果沒有出錯(cuò),則系統(tǒng)繼續(xù)運(yùn)行;如果出錯(cuò),則進(jìn)行錯(cuò)誤處理。
[0057]具體的,在本實(shí)施例中是通過編譯器編譯,獲取A固件起始地址,并將其賦值給B固件中的函數(shù)指針變量,且通過編譯器編譯,獲取B固件中要調(diào)用的函數(shù)地址,并寫入結(jié)構(gòu)體函數(shù)指針變量,通過該指針變量調(diào)用B固件中的函數(shù)功能。
[0058]方案二:若所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù),則從發(fā)起調(diào)用的固件片段預(yù)先存儲的函數(shù)地址列表文件中,確定被調(diào)用的固件片段的第二函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第二函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0059]具體的,第二種實(shí)現(xiàn)是通過函數(shù)符號表的方式,生成B固件中的函數(shù)地址表文件,傳遞給A固件,這樣A固件就可以根據(jù)該文件完成函數(shù)功能的調(diào)用。
[0060]參見圖3,其調(diào)用流程如下:
[0061]S301、設(shè)備上電后,B固件開始啟動執(zhí)行,完成系統(tǒng)初始化,并且獲取A固件起始地址;
[0062]S302、B固件中通過指向A固件起始地址,開始運(yùn)行A固件程序;
[0063]S303、A固件從函數(shù)符號表文件中獲取到B固件函數(shù)地址;
[0064]S304、A固件根據(jù)函數(shù)地址調(diào)用B固件函數(shù),實(shí)現(xiàn)函數(shù)功能。
[0065]具體的,在實(shí)現(xiàn)相應(yīng)的函數(shù)功能后,需要檢測運(yùn)行過程中是否出錯(cuò),如果沒有出錯(cuò),則系統(tǒng)繼續(xù)運(yùn)行;如果出錯(cuò),則進(jìn)行錯(cuò)誤處理。
[0066]具體的,在本實(shí)施例中是通過編譯器編譯,獲取A固件起始地址,并將其賦值給B固件中的函數(shù)指針變量。B固件編譯時(shí),生成的函數(shù)地址列表文件,具體的在IAR中為函數(shù)符號表文件形式;在A固件編譯時(shí),將該函數(shù)地址列表文件,導(dǎo)入到A固件中,從而使A固件運(yùn)行時(shí),可以按照該函數(shù)地址列表去調(diào)用B固件的函數(shù)。
[0067]上述方案一和方案二相比,方案二無需定義函數(shù)結(jié)構(gòu)體指針變量,節(jié)省設(shè)備微控制器的物理內(nèi)存空間,摒棄函數(shù)結(jié)構(gòu)體指針操作方式,加快設(shè)備軟件運(yùn)行速度,且開發(fā)人員不用再針對B固件中每個(gè)調(diào)用函數(shù)定義地址,減少開發(fā)工作量。
[0068]本發(fā)明實(shí)施例提供的一種微控制器固件開發(fā)與更新的方法及系統(tǒng),包括:預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,并將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);其中,N為大于I的整數(shù);接收到更新指令后,根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段;利用所述更新指令更新所述目標(biāo)固件片段;可見,在本實(shí)施例中,通過將原有的單一固件分為多個(gè)固件片段,在接收到更新指令時(shí),僅需要更新相對應(yīng)的固件片段,由于待更新的固件片段數(shù)據(jù)量小、占用空間少,大大縮短了更新時(shí)間;在產(chǎn)品研發(fā)和生產(chǎn)時(shí),由于固件更新時(shí)間大大縮短,效率得以提升,大大節(jié)約了產(chǎn)品的研發(fā)和生產(chǎn)成本。
[0069]下面對本發(fā)明實(shí)施例提供的開發(fā)與更新系統(tǒng)進(jìn)行介紹,下文描述的開發(fā)與更新系統(tǒng)與上文描述的開發(fā)與更新方法可以相互參照。
[0070]參見圖4,本發(fā)明實(shí)施例提供的一種微控制器固件開發(fā)與更新的系統(tǒng),包括:
[0071]分段模塊100,用于將原始固件分為N個(gè)相互獨(dú)立的固件片段;其中,N為大于I的整數(shù);
[0072]燒寫模塊200,用于將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);
[0073]更新模塊300,用于在接收到更新指令時(shí),根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段,并利用所述更新指令更新所述目標(biāo)固件片段。
[0074]基于上述技術(shù)方案,所述分段模塊根據(jù)所述原始固件中程序的更新頻率,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段。
[0075]基于上述技術(shù)方案,所述分段模塊根據(jù)所述原始固件中程序的類型,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;其中,所述程序的類型至少包括應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)程序。
[0076]基于上述技術(shù)方案,本方案還包括:
[0077]第一函數(shù)地址信息確定模塊,用于在所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù)時(shí),從發(fā)起調(diào)用的固件片段預(yù)先存儲的結(jié)構(gòu)體函數(shù)指針變量中,確定被調(diào)用的固件片段的第一函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第一函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0078]基于上述技術(shù)方案,本方案還包括:
[0079]第二函數(shù)地址信息確定模塊,用于在所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù)時(shí),從發(fā)起調(diào)用的固件片段預(yù)先存儲的函數(shù)地址列表文件中,確定被調(diào)用的固件片段的第二函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第二函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
[0080]本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。
[0081]對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
【主權(quán)項(xiàng)】
1.一種微控制器固件開發(fā)與更新的方法,其特征在于,包括: 預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,并將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū);其中,N為大于I的整數(shù); 接收到更新指令后,根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段; 利用所述更新指令更新所述目標(biāo)固件片段。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,包括: 根據(jù)所述原始固件中程序的更新頻率,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)先將原始固件分為N個(gè)相互獨(dú)立的固件片段,包括: 根據(jù)所述原始固件中程序的類型,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;其中,所述程序的類型至少包括應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)程序。4.根據(jù)權(quán)利要求1-3中任意一項(xiàng)所述的方法,其特征在于, 若所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù),則從發(fā)起調(diào)用的固件片段預(yù)先存儲的結(jié)構(gòu)體函數(shù)指針變量中,確定被調(diào)用的固件片段的第一函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第一函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。5.根據(jù)權(quán)利要求1-3中任意一項(xiàng)所述的方法,其特征在于, 若所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù),則從發(fā)起調(diào)用的固件片段預(yù)先存儲的函數(shù)地址列表文件中,確定被調(diào)用的固件片段的第二函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第二函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。6.一種微控制器固件開發(fā)與更新的系統(tǒng),其特征在于,包括: 分段模塊,用于將原始固件分為N個(gè)相互獨(dú)立的固件片段;其中,N為大于I的整數(shù); 燒寫模塊,用于將所述N個(gè)相互獨(dú)立的固件片段燒寫入程序存儲器的N個(gè)分區(qū); 更新模塊,用于在接收到更新指令時(shí),根據(jù)所述更新指令從所述N個(gè)相互獨(dú)立的固件片段中確定待更新的目標(biāo)固件片段,并利用所述更新指令更新所述目標(biāo)固件片段。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述分段模塊根據(jù)所述原始固件中程序的更新頻率,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段。8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述分段模塊根據(jù)所述原始固件中程序的類型,將所述原始固件分成N個(gè)相互獨(dú)立的固件片段;其中,所述程序的類型至少包括應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)程序。9.根據(jù)權(quán)利要求6-8中任意一項(xiàng)所述的系統(tǒng),其特征在于,還包括: 第一函數(shù)地址信息確定模塊,用于在所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù)時(shí),從發(fā)起調(diào)用的固件片段預(yù)先存儲的結(jié)構(gòu)體函數(shù)指針變量中,確定被調(diào)用的固件片段的第一函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第一函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。10.根據(jù)權(quán)利要求6-8中任意一項(xiàng)所述的系統(tǒng),其特征在于,還包括: 第二函數(shù)地址信息確定模塊,用于在所述N個(gè)相互獨(dú)立的固件片段中的任一固件片段需要調(diào)用另一固件片段的軟件函數(shù)時(shí),從發(fā)起調(diào)用的固件片段預(yù)先存儲的函數(shù)地址列表文件中,確定被調(diào)用的固件片段的第二函數(shù)地址信息,以使發(fā)起調(diào)用的固件片段根據(jù)所述第二函數(shù)地址信息調(diào)用相應(yīng)的軟件函數(shù)。
【文檔編號】G06F9/445GK106020905SQ201610375568
【公開日】2016年10月12日
【申請日】2016年5月31日
【發(fā)明人】劉麗, 楊海波, 楊詩偉
【申請人】上海慶科信息技術(shù)有限公司