用于單片機(jī)的在線升級方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及單片機(jī)技術(shù)領(lǐng)域,特別涉及一種用于單片機(jī)的在線升級方法及系統(tǒng)。
【背景技術(shù)】
[0002]芯片出廠之后,需要對芯片進(jìn)行功能性優(yōu)化等后續(xù)升級的維護(hù)?,F(xiàn)有的芯片升級需要由專人通過仿真器和PC機(jī)進(jìn)行升級,即嵌入式芯片的燒寫程序需要借助于仿真器和PC機(jī)。
[0003]現(xiàn)有升級方式復(fù)雜,需要由專業(yè)人員進(jìn)行升級,并且需要借助外部設(shè)備進(jìn)行升級,增加了維護(hù)成本,同時(shí)加大了用戶的操作難度。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的旨在至少解決上述的技術(shù)缺陷之一。
[0005]為此,本發(fā)明的一個(gè)目的在于提出一種用于單片機(jī)的在線升級方法。
[0006]本發(fā)明的另一目的在于提出一種用于單片機(jī)的在線升級系統(tǒng)。
[0007]為達(dá)到上述目的,本發(fā)明一方面的實(shí)施例提出一種用于單片機(jī)的在線升級方法,包括以下步驟:向單片機(jī)中寫入升級程序,其中,單片機(jī)芯片中燒寫有控制程序;獲取所述控制程序的最新版本信息,并比較所述控制程序的當(dāng)前版本信息和最新版本信息;當(dāng)所述控制程序的當(dāng)前版本低于所述控制程序的版本時(shí),所述升級程序進(jìn)入燒寫模型,并獲取所述控制程序的升級控制程序;以及所述升級程序在燒寫模型下根據(jù)所述控制程序和所述控制程序的升級控制程序?qū)λ鰡纹瑱C(jī)進(jìn)行升級。
[0008]根據(jù)本發(fā)明實(shí)施例的方法,通過將升級程序?qū)懭氲絾纹瑱C(jī),并根據(jù)該升級程序和升級控制程序?qū)纹瑱C(jī)進(jìn)行升級,由此降低了維護(hù)成本,簡化了單片機(jī)的升級,方便了用戶使用。
[0009]在本發(fā)明的一個(gè)實(shí)施例中,還包括:當(dāng)所述控制程序的當(dāng)前版本不低于所述控制程序的最新版本時(shí),不對所述單片機(jī)進(jìn)行升級。
[0010]在本發(fā)明的一個(gè)實(shí)施例中,所述獲取控制程序的最新版本信息,并比較所述控制程序的當(dāng)前版本信息和最新版本信息具體包括:通過服務(wù)器獲取所述單片機(jī)的最新版本信息;以及比較所述控制程序的最新版本信息和所述控制程序的當(dāng)前版本信息。
[0011]在本發(fā)明的一個(gè)實(shí)施例中,還包括:設(shè)置中斷地址,并通過所述中斷地址接收所述升級控制程序。
[0012]為達(dá)到上述目的,本發(fā)明的實(shí)施例另一方面提出一種用于單片機(jī)的在線升級系統(tǒng),包括:寫入模塊,用于向單片機(jī)中寫入升級程序,其中,單片機(jī)芯片中燒寫有控制程序;比較模塊,用于獲取所述控制程序的最新版本信息,并比較所述控制程序的當(dāng)前版本信息和最新版本信息;獲取模塊,用于當(dāng)所述控制程序的當(dāng)前版本低于所述控制程序的版本時(shí),所述升級程序進(jìn)入燒寫模型,并獲取所述控制程序的升級控制程序;以及升級模塊,用于所述升級程序在燒寫模型下根據(jù)所述控制程序和所述控制程序的升級控制程序?qū)λ鰡纹瑱C(jī)進(jìn)行升級。
[0013]根據(jù)本發(fā)明實(shí)施例的系統(tǒng),通過將升級程序?qū)懭氲絾纹瑱C(jī),并根據(jù)該升級程序和升級控制程序?qū)纹瑱C(jī)進(jìn)行升級,由此降低了維護(hù)成本,簡化了單片機(jī)的升級,方便了用戶使用。
[0014]在本發(fā)明的一個(gè)實(shí)施例中,所述升級模塊還用于當(dāng)所述控制程序的當(dāng)前版本不低于所述控制程序的最新版本時(shí),不對所述單片機(jī)進(jìn)行升級。
[0015]在本發(fā)明的一個(gè)實(shí)施例中,所述比較模塊具體包括:獲取單元,用于通過服務(wù)器獲取所述單片機(jī)的最新版本信息;以及比較單元,用于比較所述控制程序的最新版本信息和所述控制程序的當(dāng)前版本信息。
[0016]在本發(fā)明的一個(gè)實(shí)施例中,還包括:中斷模塊,用于設(shè)置中斷地址,并根據(jù)所述中斷地址接收所述升級控制程序。
[0017]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【附圖說明】
[0018]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
[0019]圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于單片機(jī)的在線升級方法的流程圖;
[0020]圖2為根據(jù)本發(fā)明一個(gè)實(shí)施例的單片機(jī)升級的具體示意圖;
[0021]圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的單片機(jī)與UI的通信示意圖;以及
[0022]圖4為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于單片機(jī)的在線升級系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0023]下面詳細(xì)描述本發(fā)明的實(shí)施例,實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0024]在本發(fā)明的描述中,需要理解的是,術(shù)語“中心”、“縱向”、“橫向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性。
[0025]在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。
[0026]圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于單片機(jī)的在線升級方法的流程圖。如圖1所示,根據(jù)本發(fā)明實(shí)施例的用于單片機(jī)的在線升級方法包括以下步驟:
[0027]步驟101,向單片機(jī)中寫入升級程序,其中,單片機(jī)芯片中燒寫有控制程序。
[0028]步驟102,獲取控制程序的最新版本信息,并比較控制程序的當(dāng)前版本信息和最新版本信息。
[0029]具體地,通過服務(wù)器獲取單片機(jī)的最新版本信息。之后,比較控制程序的最新版本信息和控制程序的當(dāng)前版本信息。
[0030]步驟103,當(dāng)控制程序的當(dāng)前版本低于控制程序的版本時(shí),升級程序進(jìn)入燒寫模型,并獲取控制程序的升級控制程序。
[0031]在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)控制程序的當(dāng)前版本不低于控制程序的最新版本時(shí),不對單片機(jī)進(jìn)行升級。
[0032]步驟104,升級程序在燒寫模型下根據(jù)控制程序和控制程序的升級控制程序?qū)纹瑱C(jī)進(jìn)行升級。
[0033]在本發(fā)明的一個(gè)實(shí)施例中,還包括:設(shè)置中斷地址,并通過中斷地址接收升級控制程序。
[0034]下面通過具體實(shí)施例對本發(fā)明實(shí)施例的用于單片機(jī)的在線升級方法進(jìn)行具體說明。
[0035]首先,通過仿真器饒寫升級程序至單片機(jī)的特定位置。具體地,將bootloader程序(即升級程序)燒寫到flash的末端,起始跳轉(zhuǎn)指令燒寫到flash的首地址。同時(shí)在bootloader程序里實(shí)現(xiàn)兩種跳轉(zhuǎn):一種是跳轉(zhuǎn)到升級程序,另一種是跳轉(zhuǎn)到控制程序。在用到升級程序或控制程序時(shí),跳轉(zhuǎn)到對應(yīng)的程序。
[0036]在本發(fā)明的一個(gè)實(shí)施例中,例如通過服務(wù)器獲取該單片機(jī)的最新版本信息,并與當(dāng)前版本信息進(jìn)行比較,以判斷當(dāng)前版本是否低于對應(yīng)的最新版本。當(dāng)?shù)陀谧钚掳姹緯r(shí),獲取該單片機(jī)最新版本的升級控制程序,其中該升級控制程序是使當(dāng)前版本與最新版本產(chǎn)生差異的數(shù)據(jù)或信息。
[0037]在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)跳轉(zhuǎn)到升級程序時(shí),循環(huán)查詢Π的通信信息,并等待接收升級控制程序。由于PIC本身對flash的燒寫、擦除的限制,在本實(shí)施例中分別以64byte和1024byte進(jìn)行饒寫和擦寫,以防止擦除升級程序或控制程序,實(shí)現(xiàn)循環(huán)擦除,燒與的功能。
[0038]圖2為根據(jù)本發(fā)明一個(gè)實(shí)施例的單片機(jī)升級的具體示意圖。如圖2所示,在對單片機(jī)進(jìn)行初始化之后,通過升級程序的標(biāo)志位跳轉(zhuǎn)到升級模式。在升級模式下接收單片機(jī)最新版本的升級控制程序和相應(yīng)的數(shù)據(jù),并通過UI的操作以對單片機(jī)進(jìn)行升級。
[0039]在本發(fā)明的一個(gè)實(shí)施例中,還可以通過如下方式比較版本信息。通過用戶界面發(fā)送指令,使程序跳轉(zhuǎn)到bootloader升級程序的地址區(qū)域。由用戶界面接收版本查詢指令,并從服務(wù)器查詢是否存在符合要求的最新版本。當(dāng)搜索到最新版本時(shí),向單片機(jī)發(fā)送flash的全部擦除指令。升級控制程序根據(jù)升級控制程序開始執(zhí)行flash的燒寫程序,以對單片機(jī)進(jìn)行升級。升級成功后,向UI發(fā)送升級成功的信息結(jié)束升級,并對單片機(jī)進(jìn)行復(fù)位,并跳轉(zhuǎn)到控制程序執(zhí)行相應(yīng)的應(yīng)用程序。當(dāng)用戶因個(gè)人需求拒絕對單片機(jī)升級時(shí),可通過相應(yīng)的控制命令不進(jìn)行升級。
[0040]在本發(fā)明的一個(gè)實(shí)施例中,設(shè)置有中斷地址,例如將中斷地址設(shè)置為0x10000。當(dāng)確認(rèn)最新版本的升級控制程序時(shí),通過