專利名稱:遠(yuǎn)程加載或升級程序的系統(tǒng)及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種電子設(shè)備中加載或升級程序的系統(tǒng)及其方法,特別涉及一種含中央處理器的電子設(shè)備中遠(yuǎn)程加載或升級程序的系統(tǒng)及其方法。
背景技術(shù):
含中央處理器(Central Processing Unit,簡稱“CPU”)的電子設(shè)備已經(jīng)廣泛應(yīng)用于各行各業(yè),這里說的CPU可以是單片機、數(shù)字信號處理(DigitalSignal Processing,簡稱“DSP”)芯片等。其中又以含單片機的電子設(shè)備最為典型,以下將以單片機為例講述含有CPU的電子設(shè)備共同的特點和存在的問題。
單片機在廣義上講是將CPU與主存儲器以及簡單的接口融于一體的獨立的控制單元。狹義上講它本身就是一個計算機系統(tǒng),一個能夠獨立完成作業(yè)的應(yīng)用計算機。單片機中集成了存儲程序的器件,例如閃速存儲器(FlashMemory,簡稱“FLASH”),通過對單片機編程,可以在比較短的時間內(nèi)設(shè)計出較為智能化的電子設(shè)備。
隨著單片機處理內(nèi)容的日益復(fù)雜,其程序的升級在所難免。目前有兩種方式實現(xiàn)對單片機程序的加載和升級。
方法一,目前最常見的單片機程序加載或升級的方法是用燒片器進行燒片。燒片器是一個單獨的設(shè)備,它與計算機通過串行口、并行口或者通用串行總線(Universal Serial Bus,簡稱“USB”)口進行通信。操作員可以通過這些通信端口將計算機上的單片機程序下載到燒片器。燒片器提供各式夾具,用于固定不同的單片機,另外燒片器還給單片機提供電源、編程需要的電壓、外部控制信號等,從而完成對單片機的編程。
方法二,現(xiàn)在有的單片機還提供了在系統(tǒng)編程技術(shù)(In System Program,簡稱“ISP”),該技術(shù)可以通過單片機提供的串口和一段固化小程序?qū)崿F(xiàn)芯片的在線升級。其基本原理是芯片供應(yīng)商在芯片內(nèi)固化了一段程序,該程序完成對單片機串口的初始化,以及實現(xiàn)一定的加載協(xié)議。這樣單片機在啟動后根據(jù)外部引腳條件或者芯片內(nèi)的一些標(biāo)志寄存器判斷是否進入該段程序,如果進入到該段程序中,便可通過串口和外部計算機上的軟件進行通信,然后按照加載協(xié)議將加載數(shù)據(jù)寫入到單片機的FLASH中,寫入時采用單片機寫FLASH指令(現(xiàn)在很多單片機都支持)。
在實際應(yīng)用中,上述方案存在以下問題程序升級困難,特別當(dāng)設(shè)備廣泛銷售以后,程序升級的成本很高,另外無法遠(yuǎn)程升級,無法對多個設(shè)備同時升級。
造成這種情況的一個主要原因在于,需要專業(yè)人員到現(xiàn)場操作。對于方法一,需要專業(yè)人員到現(xiàn)場從待升級設(shè)備上拆下待升級的芯片,重新燒片后再安裝到待升級設(shè)備上。對于方法二,雖然不需要拆卸待升級的芯片,但也需要專業(yè)人員到現(xiàn)場,將外部計算機通過串口線連接到待升級設(shè)備的電路板上,使用專用的軟件進行升級。當(dāng)設(shè)備被廣泛銷售以后,用戶的地理位置往往很分散,無論采用召回設(shè)備還是派專業(yè)人員上門維護,成本都很高。
另外,專業(yè)人員到現(xiàn)場后,由于芯片必須一片一片地?zé)?,電路板必須一塊一塊地連接和處理,因此無法同時對多個設(shè)備同時升級。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種遠(yuǎn)程加載或升級程序的系統(tǒng)及其方法,使得電子設(shè)備中的程序可以遠(yuǎn)程升級,無需工程師到場,另外還可以實現(xiàn)多個設(shè)備中程序的同時升級。
為了解決上述技術(shù)問題,本發(fā)明提供了一種遠(yuǎn)程加載或升級程序的系統(tǒng),包含
待升級子系統(tǒng),包含互相連接的中央處理器和程序存儲器,其中所述程序存儲器中存儲有每次所述待升級子系統(tǒng)啟動以前必須運行的基本輸入輸出系統(tǒng)區(qū)程序;主控子系統(tǒng),包含能夠從網(wǎng)絡(luò)獲取升級程序的網(wǎng)絡(luò)程序下載裝置、存儲所述升級程序的程序存儲器、以及與所述待升級子系統(tǒng)交互將所述升級程序加載到所述待升級子系統(tǒng)的交互加載器;所述主控子系統(tǒng)和至少一個所述待升級子系統(tǒng)相連接。
其中,所述待升級子系統(tǒng)是單片機系統(tǒng)。
所述程序存儲器是外掛的隨機存取存儲器、閃速存儲器或電可擦除可編程只讀存儲器。
所述待升級子系統(tǒng)是基于數(shù)字信號處理芯片的系統(tǒng)。
本發(fā)明還提供了一種遠(yuǎn)程加載或升級程序的方法,包含以下步驟A待升級子系統(tǒng)判斷加載標(biāo)志是否有效,如果是則向主控子系統(tǒng)發(fā)送加載請求信元,進入步驟B,否則開始執(zhí)行應(yīng)用程序,流程結(jié)束;B所述主控子系統(tǒng)響應(yīng)所述加載請求信元,判斷是否允許所述待升級子系統(tǒng)加載或升級程序,如果允許,則向所述待升級子系統(tǒng)發(fā)送允許加載信元,否則向所述待升級子系統(tǒng)發(fā)送不允許加載信元;C所述待升級子系統(tǒng)響應(yīng)所述主控子系統(tǒng)對所述加載請求信元的反饋,判斷所收到的信元的類型,如果是允許加載信元則將所述加載標(biāo)志改寫有效,向所述主控子系統(tǒng)發(fā)送準(zhǔn)備就緒信元,進入步驟D,如果是不允許加載信元則重新啟動所述待升級子系統(tǒng),流程結(jié)束;D所述主控子系統(tǒng)判斷是否還有剩余的升級程序的數(shù)據(jù)信元沒有發(fā)送并且無發(fā)送錯誤,如果是則向所述待升級子系統(tǒng)發(fā)送升級程序的數(shù)據(jù)信元,否則流程結(jié)束;
E所述待升級子系統(tǒng)收到所述數(shù)據(jù)信元后,判斷所述數(shù)據(jù)信元是否合法并且順序正確,如果是則將收到的所述數(shù)據(jù)信元寫入所述待升級子系統(tǒng)的程序存儲器,進入步驟F,否則向所述主控子系統(tǒng)反饋最后加載失敗信元及失敗原因,重新啟動所述待升級子系統(tǒng),進入步驟D;F所述待升級子系統(tǒng)向所述主控子系統(tǒng)反饋數(shù)據(jù)成功加載信元,并判斷所述待加載程序的全部數(shù)據(jù)信元是否已經(jīng)收取完畢,如果是則將所述加載標(biāo)志設(shè)置為無效,并重新啟動所述待升級子系統(tǒng),流程結(jié)束,否則進入步驟D。
其中,所述主控子系統(tǒng)中的所述升級程序是預(yù)先從網(wǎng)絡(luò)中下載并存儲在所述主控子系統(tǒng)的程序存儲器中的。
所述步驟A還包含以下步驟A1當(dāng)所述待升級子系統(tǒng)判斷所述加載標(biāo)志無效時,所述待升級子系統(tǒng)等待用戶輸入;A2所述待升級子系統(tǒng)判斷是否在規(guī)定時間內(nèi)沒有用戶輸入,如果是則進入步驟A4,否則繼續(xù)等待,直至有用戶輸入時進入步驟A3;A3所述待升級子系統(tǒng)根據(jù)用戶的輸入判斷是否需要強制加載程序,如果需要強制加載,則進入步驟B,如果不需要強制加載,則進入步驟A4;A4開始執(zhí)行應(yīng)用程序,流程結(jié)束。
所述步驟B中,所述主控子系統(tǒng)向所述待升級子系統(tǒng)發(fā)送的所述允許加載信元中包含待加載程序的版本號和程序大小信息;所述步驟C中還包含以下步驟當(dāng)收到的信元類型是允許加載信元時,所述待升級子系統(tǒng)根據(jù)待加載程序的所述版本號和程序大小信息,判斷加載是否合法,如果合法則將所述加載標(biāo)志改寫有效,向所述主控子系統(tǒng)發(fā)送準(zhǔn)備就緒信元,進入步驟D,否則重新啟動所述待升級子系統(tǒng),流程結(jié)束。
所述方法還包含以下步驟當(dāng)所述待升級子系統(tǒng)收到不允許加載信元或改寫加載標(biāo)志失敗時,打印錯誤信息。
所述步驟D還包含以下步驟所述主控子系統(tǒng)收到所述準(zhǔn)備就緒信元后,通知上層軟件所述待升級子系統(tǒng)準(zhǔn)備加載或升級程序。
所述步驟F還包含以下步驟當(dāng)所述待升級子系統(tǒng)收取完全部數(shù)據(jù)信元后,所述待升級子系統(tǒng)修改本地的軟件版本信息。
所述步驟F還包含以下步驟所述待升級子系統(tǒng)成功收取并保存數(shù)據(jù)信元后,根據(jù)數(shù)據(jù)信元中是否需要回應(yīng)的標(biāo)志,僅對需要回應(yīng)的信元反饋數(shù)據(jù)成功加載信元。
所述待升級子系統(tǒng)和所述主控子系統(tǒng)相互發(fā)送的信元中包含以下信息區(qū)分程序和數(shù)據(jù)的標(biāo)志;軟件版本;信元類型;信元編號。
所述步驟A中所述應(yīng)用程序的入口地址是固定的,執(zhí)行應(yīng)用程序時,直接跳轉(zhuǎn)到所述應(yīng)用程序的固定入口地址,開始執(zhí)行。
通過比較可以發(fā)現(xiàn),本發(fā)明的技術(shù)方案與現(xiàn)有技術(shù)的區(qū)別在于,將程序通過網(wǎng)絡(luò)下載并存儲到主控子系統(tǒng),待升級子系統(tǒng)每次啟動時運行基本輸入輸出系統(tǒng)區(qū)程序,該程序中根據(jù)加載標(biāo)志判斷是否需要加載或升級,然后通過特定的流程將待加載程序從所述主控子系統(tǒng)下載到所述待升級子系統(tǒng)。
這種技術(shù)方案上的區(qū)別,帶來了較為明顯的有益效果,即可以不派專業(yè)工程師到現(xiàn)場,程序可以通過網(wǎng)絡(luò)(例如因特網(wǎng))遠(yuǎn)程下載到待升級設(shè)備,而且整個升級過程可以不需要人的參與,完全由系統(tǒng)自動完成。如果系統(tǒng)中存在多個待升級設(shè)備,則這些待升級設(shè)備可以同時升級。特別對于待升級設(shè)備已經(jīng)被廣泛銷售、分散在各地的情況,因為不需要專業(yè)人員到現(xiàn)場,大大降低了設(shè)備中程序升級的成本。
圖1是根據(jù)本發(fā)明的一個實施例的遠(yuǎn)程加載或升級程序的系統(tǒng)結(jié)構(gòu)示意圖;圖2是根據(jù)本發(fā)明的一個實施例的遠(yuǎn)程加載或升級程序的方法流程圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進一步地詳細(xì)描述。
如圖1所示,在本發(fā)明的一個較佳實施例中,遠(yuǎn)程加載或升級程序的系統(tǒng)(以下簡稱“系統(tǒng)”)包括待升級子系統(tǒng)10、主控子系統(tǒng)20以及將兩個子系統(tǒng)連接起來的背板30。待升級子系統(tǒng)10中含有至少一塊CPU以及程序存儲器,程序存儲器用于存放CPU的執(zhí)行程序。程序存儲器可以是CPU自帶的,例如單片機,也可以是外掛的,例如隨機存取存儲器(Random AccessMemory,簡稱“RAM”)、FLASH、電可擦除可編程只讀存儲器(ElectricallyErasable Programmable ROM,簡稱“EEPROM”)等。待升級子系統(tǒng)10的典型例子是一塊帶有單片機的用戶板(即單片機系統(tǒng)),或者是一塊帶有DSP芯片的用戶板,其程序存儲在外掛FLASH中。
在程序存儲器中有一塊固定基本輸入輸出系統(tǒng)(Basic Input OutputSystem,簡稱“BIOS”)區(qū),其中存放BIOS程序,該程序一般是固定的,不需要升級的。相對于BIOS程序,程序存儲器中其他供CPU運行的程序在本發(fā)明中稱為應(yīng)用程序,應(yīng)用程序一般是升級的對象。在本發(fā)明中,B1OS程序是每次待升級子系統(tǒng)10啟動時必須首先運行的,遠(yuǎn)程加載或升級程序的流程主要在BIOS程序中實現(xiàn)。
主控子系統(tǒng)20主要包含能夠從網(wǎng)絡(luò)獲取升級程序的網(wǎng)絡(luò)程序下載裝置、存儲待升級程序的程序存儲器、以及與待升級子系統(tǒng)10交互將升級程序加載到待升級子系統(tǒng)10的交互加載器。網(wǎng)絡(luò)程序下載裝置可以從網(wǎng)上(例如因特網(wǎng))遠(yuǎn)程下載升級程序,保存到本地的程序存儲器中。在本發(fā)明的一個較佳實施例中,工程師在異地利用因特網(wǎng),通過單純文件傳輸協(xié)議(TrivialFile Transfer protocol,簡稱“TFTP”),將升級程序下載到主控子系統(tǒng)20的程序存儲器中。
需要說明的是,系統(tǒng)中的待升級子系統(tǒng)10可能有多個,而主控子系統(tǒng)20一般只有一個,多個待升級子系統(tǒng)10分別和主控子系統(tǒng)20相連接,例如多個待升級子系統(tǒng)10和一個主控子系統(tǒng)20可以同時連接在背板30上。熟悉本發(fā)明領(lǐng)域的技術(shù)人員會理解,背板30的作用提供物理連接通道,可以使用其他連接方式而不超出本發(fā)明的范圍和實質(zhì)。
上面說明了系統(tǒng)的組成,以下結(jié)合圖2,詳細(xì)說明遠(yuǎn)程加載或升級程序的方法流程。
當(dāng)工程師通過網(wǎng)絡(luò)將新版本的升級程序遠(yuǎn)程下載到主控子系統(tǒng)20中的程序存儲器以后,主控子系統(tǒng)20并不是馬上把升級程序加載到各個待升級子系統(tǒng)10中去,而是一直等待,直到待升級子系統(tǒng)10重新啟動時自己來下載升級程序。常見的做法是工程師確定升級程序已經(jīng)成功下載到主控子系統(tǒng)20后,通知相關(guān)人員重新啟動系統(tǒng),以便自動完成升級。
當(dāng)待升級子系統(tǒng)10重新啟動時,首先運行BIOS程序,在步驟110中,待升級子系統(tǒng)10判斷加載標(biāo)志是否有效,如果有效則進入步驟130,如果無效則進入步驟120。所述加載標(biāo)志是存儲在程序存儲器中的一個標(biāo)志,加載標(biāo)志不會因為斷電、系統(tǒng)重新啟動而丟失,它的取值可以通過CPU設(shè)定。加載標(biāo)志的作用是指示待升級子系統(tǒng)10是否需要自動進入加載狀態(tài),如果加載標(biāo)志是有效的,則系統(tǒng)自動進入加載流程,如果加載標(biāo)志是無效的,系統(tǒng)等待用戶決定是否要強制加載。
在步驟120中,待升級子系統(tǒng)10等待用戶的輸入。例如,用戶可以通過串行口,也可以通過USB、并行口等通信端口向待升級子系統(tǒng)10輸入代表是否要強制加載的信號。如果用戶在規(guī)定時間內(nèi),例如10秒種,不輸入任何信號,則待升級子系統(tǒng)10默認(rèn)為不進行強制加載。一旦用戶有了輸入或發(fā)生超時,則進入步驟140。
在步驟1 30中,待升級子系統(tǒng)10向主控子系統(tǒng)20發(fā)送加載請求信元。在本發(fā)明中,所有的消息和數(shù)據(jù)都是通過信元傳遞的。這里的信元是指一組有預(yù)定義格式的信號。為了區(qū)分不同類型和功能的信元,信元中一般包含以下信息,區(qū)分程序和數(shù)據(jù)的標(biāo)志、軟件版本、信元類型、信元編號等。此后進入步驟160。
在步驟140中,待升級子系統(tǒng)10判斷用戶是否要求強制加載,如果是則進入步驟130,否則進入步驟150。
在步驟150中,待升級子系統(tǒng)10開始執(zhí)行應(yīng)用程序,流程結(jié)束。如果待升級子系統(tǒng)10發(fā)現(xiàn)不需要加載或升級現(xiàn)有的程序,則按照常規(guī)開始執(zhí)行應(yīng)用程序。在本發(fā)明的一個較佳實施例中,應(yīng)用程序的入口是固定的,CPU通過一個跳轉(zhuǎn)指令跳轉(zhuǎn)到應(yīng)用程序的入口地址,然后開始按順序執(zhí)行應(yīng)用程序的每一條指令。這種固定入口的方式實現(xiàn)起來比較簡單,而且能夠滿足絕大多數(shù)應(yīng)用系統(tǒng)的需要,當(dāng)然熟悉本發(fā)明領(lǐng)域的技術(shù)人員也可以通過在升級程序中指定應(yīng)用程序的入口地址,在待升級子系統(tǒng)10中的程序升級以后使用新指定的入口地址執(zhí)行應(yīng)用程序,這依然不超出本發(fā)明的實質(zhì)和范圍。
在步驟160中,主控子系統(tǒng)20判斷是否允許待升級子系統(tǒng)10加載或升級程序,如果允許則進入步驟170,否則進入步驟180。在這個步驟中,主控子系統(tǒng)20可以進行一些控制,例如權(quán)限的控制、升級時機的控制等等,可以選擇合適的待升級子系統(tǒng)10在合適的時機進行升級。
在步驟170中,主控子系統(tǒng)20向待升級子系統(tǒng)10發(fā)送允許加載信元。通知待升級子系統(tǒng)10可以馬上進行下面的加載或升級流程了。需要說明的是,在所述允許加載信元中,包含了將用于步驟190中的加載合法性分析的信息,例如軟件版本和升級程序大小等。然后進入步驟190。
在步驟180中,主控子系統(tǒng)20向待升級子系統(tǒng)10發(fā)送不允許加載信元。此后進入步驟280。
在步驟190中,待升級子系統(tǒng)10接收到來自主控子系統(tǒng)20的允許加載信元后,判斷本次加載是否合法,如果合法則進入步驟200,否則進入步驟270。判斷本次加載是否合法的一個例子如下待升級子系統(tǒng)10分析允許加載信元中攜帶的軟件版本和升級程序大小等信息,判斷升級程序的軟件版本是否比目前已有程序的軟件版本新,并判斷本地的程序存儲器是否能夠容納下升級程序,如果這些判斷均為肯定的結(jié)果,則本次加載合法,否則本次加載不合法。
在步驟200中,待升級子系統(tǒng)10將加載標(biāo)志改寫為有效,并向主控子系統(tǒng)20發(fā)送準(zhǔn)備就緒信元。將加載標(biāo)志改寫為有效是為了防止在下面的加載流程中一旦發(fā)生異常問題(例如斷電、通信線路發(fā)生故障等),待升級子系統(tǒng)10在重新啟動后可以自動重新進入加載流程。例如,在用戶通過外界輸入強制進行加載情況中,加載標(biāo)志原先是無效的,如果在本步驟中不將加載標(biāo)志改寫成有效,一旦在加載時發(fā)生故障而重新啟動后,待升級子系統(tǒng)10將無法自動重新進入加載流程,而發(fā)生故障時已經(jīng)加載的程序可能是不完整的,運行不完整的程序可能會導(dǎo)致待升級子系統(tǒng)10的故障。此后進入步驟210。
在步驟210中,主控子系統(tǒng)20判斷是否還有剩余的數(shù)據(jù)信元沒有發(fā)送,并且沒有發(fā)現(xiàn)發(fā)送錯誤,如果是則進入步驟220,否則流程結(jié)束。本文中提到的數(shù)據(jù)信元均是指升級軟件的數(shù)據(jù)信元。有兩個觸發(fā)條件都可以觸發(fā)這一步驟,一個是收到來自待升級子系統(tǒng)10的準(zhǔn)備就緒信元,另一個是收到待升級子系統(tǒng)10對已發(fā)送數(shù)據(jù)信元的回應(yīng)。在本發(fā)明的一個較佳實施例中,當(dāng)主控子系統(tǒng)20收到準(zhǔn)備就緒信元時,會通知上層軟件某個待升級子系統(tǒng)10準(zhǔn)備加載或升級程序。這個上層軟件可以是控制中心中的監(jiān)視軟件。這樣控制中心中的工作人員可以及時知道待升級子系統(tǒng)10加載或升級程序的情況。
在步驟220中,主控子系統(tǒng)20向待升級子系統(tǒng)10發(fā)送數(shù)據(jù)信元,此后進入步驟230。
在步驟230中,待升級子系統(tǒng)10收取來自主控子系統(tǒng)20的數(shù)據(jù)信元,判斷該數(shù)據(jù)信元是否合法并且順序正確,如果是則進入步驟240,否則進入步驟270。判斷數(shù)據(jù)信元是否合法的方法有多種,例如可以在數(shù)據(jù)信元發(fā)送時加入循環(huán)冗余校驗(Cyclic Redundancy Check,簡稱“CRC”)碼,在接收時通過CRC校驗來判斷該數(shù)據(jù)信元是否合法。因為在本發(fā)明中升級程序一般是比較大的,往往被分成若干個數(shù)據(jù)信元依次發(fā)送的,如果收到的數(shù)據(jù)信元的順序不對,則說明有若干個數(shù)據(jù)信元被遺失了。例如,上一個收到的數(shù)據(jù)信元編號是50,而本次收到的數(shù)據(jù)信元編號是53,則說明有兩個數(shù)據(jù)信元丟失。
在步驟240中,待升級子系統(tǒng)10將合法并且順序正確的數(shù)據(jù)信元寫入本地的程序存儲器,接著進入步驟250。
在步驟250中,待升級子系統(tǒng)10判斷收到的數(shù)據(jù)信元是否需要回應(yīng),如果需要回應(yīng)則進入步驟260,否則進入步驟220。需要指出的是,不一定每一個數(shù)據(jù)信元都需要回應(yīng)。在本發(fā)明的一個較佳實施例中,從主控子系統(tǒng)20發(fā)送的數(shù)據(jù)信元帶有一個是否需要回應(yīng)標(biāo)志位,每隔若干個數(shù)據(jù)信元設(shè)置一個需要回應(yīng)的數(shù)據(jù)信元,例如,每發(fā)5個不需要回應(yīng)的數(shù)據(jù)信元后發(fā)送一個需要回應(yīng)的數(shù)據(jù)信元。這樣做的目的是為了減少待升級子系統(tǒng)10和主控子系統(tǒng)20之間的通信量,提高通信效率。需要指出的是最后一個數(shù)據(jù)信元是一定需要回應(yīng)的。在不需要回應(yīng)的情況下,待升級子系統(tǒng)10直接等著收取下一個數(shù)據(jù)信元。
在步驟260中,待升級子系統(tǒng)10向主控子系統(tǒng)20發(fā)送回應(yīng)信元。主控子系統(tǒng)20發(fā)完一組數(shù)據(jù)信元后會等待,直至收取回應(yīng)信元才會發(fā)送下一組數(shù)據(jù)信元。此后進入步驟290。
在步驟270中,當(dāng)加載發(fā)生錯誤時,待升級子系統(tǒng)10向主控子系統(tǒng)20發(fā)送錯誤原因和最后錯誤數(shù)據(jù)信元。發(fā)送錯誤原因和最后錯誤數(shù)據(jù)信元的原因是便于主控子系統(tǒng)20了解該錯誤,以便及時采取錯誤排除故障。此后進入步驟310。
在步驟280中,待升級子系統(tǒng)10打印錯誤原因。這一步驟的作用是告知待升級子系統(tǒng)10本地的工作人員出錯信息,便于及時排除故障。此后進入步驟310。
在步驟290中,待升級子系統(tǒng)10判斷數(shù)據(jù)信元是否已經(jīng)收取完畢,如果是則進入步驟300,否則進入步驟210。
在步驟300中,待升級子系統(tǒng)10將加載標(biāo)志設(shè)置成無效,并修改本地軟件版本。因為升級程序已經(jīng)下載完畢,為了防止下一次重新啟動后再次自動加載,需要把加載標(biāo)志設(shè)置成無效。修改本地軟件版本是為了下一次加載時可以比較升級軟件和本地軟件的版本,以免錯誤加載舊版本的軟件。此后進入步驟310。
在步驟310中,待升級子系統(tǒng)10重新啟動,流程結(jié)束。當(dāng)程序加載完畢或發(fā)生錯誤無法繼續(xù)加載時,待升級子系統(tǒng)10要重新啟動,重新啟動后可以根據(jù)加載標(biāo)志和用戶的輸入,開始執(zhí)行新的應(yīng)用程序或重新進行加載。
需要說明的是,在本發(fā)明的一個較佳實施例中,待升級子系統(tǒng)10在上述整個流程中不使用任何中斷,在需要等待消息的時候采用例如輪詢的方式來等待,如果等待超時(可以用例如計算輪詢次數(shù)的方法發(fā)現(xiàn)等待超時)則進行錯誤處理。不使用中斷的好處是可以減少加載過程中不必要錯誤的發(fā)生,例如中斷發(fā)生時如果正在接受數(shù)據(jù),可能會導(dǎo)致一部分?jǐn)?shù)據(jù)的丟失,從而加載錯誤,最終不得不重新進行加載。
雖然通過參照本發(fā)明的某些優(yōu)選實施例,已經(jīng)對本發(fā)明進行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種各樣的改變,而不偏離所附權(quán)利要求書所限定的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種遠(yuǎn)程加載或升級程序的系統(tǒng),其特征在于,包含至少一個的待升級子系統(tǒng),包含互相連接的中央處理器和程序存儲器,其中所述程序存儲器中存儲有每次所述待升級子系統(tǒng)啟動以前必須運行的基本輸入輸出系統(tǒng)區(qū)程序;主控子系統(tǒng),和至少一個所述待升級子系統(tǒng)相連接,包含用于從網(wǎng)絡(luò)獲取升級程序的網(wǎng)絡(luò)程序下載裝置、存儲所述升級程序的程序存儲器、以及與所述待升級子系統(tǒng)交互將所述升級程序加載到所述待升級子系統(tǒng)的交互加載器。
2.根據(jù)權(quán)利要求1所述的遠(yuǎn)程加載或升級程序的系統(tǒng),其特征在于,所述待升級子系統(tǒng)是單片機系統(tǒng),或是基于數(shù)字信號處理芯片的系統(tǒng)。
3.根據(jù)權(quán)利要求2所述的遠(yuǎn)程加載或升級程序的系統(tǒng),其特征在于,若所述待升級子系統(tǒng)是單片機系統(tǒng),則所述程序存儲器是外掛的隨機存取存儲器,或閃速存儲器,或電可擦除可編程只讀存儲器。
4.一種遠(yuǎn)程加載或升級程序的方法,其特征在于,包含以下步驟A 待升級子系統(tǒng)判斷加載標(biāo)志是否有效,如果是則向主控子系統(tǒng)發(fā)送加載請求信元,進入步驟B,否則開始執(zhí)行應(yīng)用程序,流程結(jié)束;B 所述主控子系統(tǒng)響應(yīng)所述加載請求信元,判斷是否允許所述待升級子系統(tǒng)加載或升級程序,如果允許,則向所述待升級子系統(tǒng)發(fā)送允許加載信元,否則向所述待升級子系統(tǒng)發(fā)送不允許加載信元;C 所述待升級子系統(tǒng)響應(yīng)所述主控子系統(tǒng)對所述加載請求信元的反饋,判斷所收到的信元的類型,如果是允許加載信元則將所述加載標(biāo)志改寫為有效,向所述主控子系統(tǒng)發(fā)送準(zhǔn)備就緒信元,進入步驟D,如果是不允許加載信元則重新啟動所述待升級子系統(tǒng),流程結(jié)束;D 所述主控子系統(tǒng)判斷是否還有剩余的升級程序的數(shù)據(jù)信元沒有發(fā)送并且無發(fā)送錯誤,如果是則向所述待升級子系統(tǒng)發(fā)送升級程序的數(shù)據(jù)信元,否則流程結(jié)束;E 所述待升級子系統(tǒng)收到所述數(shù)據(jù)信元后,判斷所述數(shù)據(jù)信元是否合法并且順序正確,如果是則將收到的所述數(shù)據(jù)信元寫入所述待升級子系統(tǒng)的程序存儲器,進入步驟F,否則向所述主控子系統(tǒng)反饋最后加載失敗信元及失敗原因,重新啟動所述待升級子系統(tǒng),進入步驟D;F 所述待升級子系統(tǒng)向所述主控子系統(tǒng)反饋數(shù)據(jù)成功加載信元,并判斷所述待加載程序的全部數(shù)據(jù)信元是否已經(jīng)收取完畢,如果是則將所述加載標(biāo)志設(shè)置為無效,并重新啟動所述待升級子系統(tǒng),流程結(jié)束,否則進入步驟D。
5.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述主控子系統(tǒng)中的所述升級程序是預(yù)先從網(wǎng)絡(luò)中下載并存儲在所述主控子系統(tǒng)的程序存儲器中的。
6.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述步驟A還包含以下步驟A1 當(dāng)所述待升級子系統(tǒng)判斷所述加載標(biāo)志無效時,所述待升級子系統(tǒng)等待用戶輸入;A2 所述待升級子系統(tǒng)判斷是否在規(guī)定時間內(nèi)沒有用戶輸入,如果是則進入步驟A4,否則繼續(xù)等待,直至有用戶輸入時進入步驟A3;A3 所述待升級子系統(tǒng)根據(jù)用戶的輸入判斷是否需要強制加載程序,如果需要強制加載,則進入步驟B,如果不需要強制加載,則進入步驟A4;A4 開始執(zhí)行應(yīng)用程序,流程結(jié)束。
7.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述步驟B中,所述主控子系統(tǒng)向所述待升級子系統(tǒng)發(fā)送的所述允許加載信元中包含待加載程序的版本號和程序大小信息;并且,所述步驟C中還包含以下步驟當(dāng)收到的信元類型是允許加載信元時,所述待升級子系統(tǒng)根據(jù)待加載程序的所述版本號和程序大小信息,判斷加載是否合法,如果合法則將所述加載標(biāo)志改寫有效,向所述主控子系統(tǒng)發(fā)送準(zhǔn)備就緒信元,進入步驟D,否則重新啟動所述待升級子系統(tǒng),流程結(jié)束。
8.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述方法還包含以下步驟當(dāng)所述待升級子系統(tǒng)收到不允許加載信元或改寫加載標(biāo)志失敗時,打印錯誤信息。
9.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述步驟D還包含以下步驟所述主控子系統(tǒng)收到所述準(zhǔn)備就緒信元后,通知上層軟件所述待升級子系統(tǒng)準(zhǔn)備加載或升級程序。
10.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述步驟F還包含以下步驟當(dāng)所述待升級子系統(tǒng)收取完全部數(shù)據(jù)信元后,所述待升級子系統(tǒng)修改本地的軟件版本信息。
11.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述步驟F還包含以下步驟所述待升級子系統(tǒng)成功收取并保存數(shù)據(jù)信元后,根據(jù)數(shù)據(jù)信元中是否需要回應(yīng)的標(biāo)志,僅對需要回應(yīng)的信元反饋數(shù)據(jù)成功加載信元。
12.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述待升級子系統(tǒng)和所述主控子系統(tǒng)相互發(fā)送的信元中包含以下信息區(qū)分程序和數(shù)據(jù)的標(biāo)志、軟件版本、信元類型、信元編號。
13.根據(jù)權(quán)利要求4所述的遠(yuǎn)程加載或升級程序的方法,其特征在于,所述步驟A中所述應(yīng)用程序的入口地址是固定的,執(zhí)行應(yīng)用程序時,直接跳轉(zhuǎn)到所述應(yīng)用程序的固定入口地址,開始執(zhí)行。
全文摘要
本發(fā)明涉及一種電子設(shè)備中加載或升級程序的系統(tǒng)及其方法,公開了一種遠(yuǎn)程加載或升級程序的系統(tǒng)及其方法,使得電子設(shè)備中的程序可以遠(yuǎn)程升級,無需工程師到場,另外還可以實現(xiàn)多個設(shè)備中程序的同時升級。這種遠(yuǎn)程加載或升級程序的系統(tǒng)包含待升級子系統(tǒng),包含互相連接的CPU和程序存儲器,其中所述程序存儲器中存儲有每次所述待升級子系統(tǒng)啟動以前必須運行的BIOS區(qū)程序;主控子系統(tǒng),包含能夠從網(wǎng)絡(luò)獲取升級程序的網(wǎng)絡(luò)程序下載裝置、存儲所述升級程序的程序存儲器以及與所述待升級子系統(tǒng)交互將所述升級程序加載到所述待升級子系統(tǒng)的交互加載器;主控子系統(tǒng)和至少一個待升級子系統(tǒng)相連接。
文檔編號G06F9/40GK1570863SQ0313298
公開日2005年1月26日 申請日期2003年7月23日 優(yōu)先權(quán)日2003年7月23日
發(fā)明者王正波 申請人:華為技術(shù)有限公司