專利名稱:用戶程序在線升級系統(tǒng)和升級方法
技術(shù)領(lǐng)域:
本發(fā)明涉及單片機技術(shù),尤其涉及一種用戶程序在線升級系統(tǒng)和升級方法。
背景技術(shù):
對單片機中的用戶程序進行燒錄和升級,傳統(tǒng)上是采用并行燒錄器。用這種方法對單片機進行升級時,需要反復(fù)插拔單片機,而鐵片封裝的單片機進行升級時,則需要反復(fù)焊接和拆卸,不但操作麻煩,而且容易損壞單片機。IAP (In-Application Program,在應(yīng)用中編程)技術(shù)則很好地解決了這個問題。 如圖I所示,在非易失性程序存儲器(FLASH程序存儲器)中存儲有用戶程序;單片機通過加載FLASH (閃存)程序存儲器中的用戶程序運行來實現(xiàn)各種功能,如采集、計算、控制等功能。用戶程序通常存儲于FLASH程序存儲器中的用戶程序區(qū)。此外,F(xiàn)LASH程序存儲器中還存儲有IAP程序,IAP程序是通過專用的下載口,如單片機的JTAG或ISP燒錄到FLASH程序存儲器中的;IAP程序中通常有IAP功能函數(shù),單片機運行IAP程序時,通過調(diào)用IAP功能函數(shù),可以實現(xiàn)從其通用通信端口(如IIC總線、SPI總線或并行總線)接收用戶程序,將用戶程序燒錄到FLASH程序存儲器;這樣,在進行用戶程序升級時,不必通過專用設(shè)備或端口,而是通過運行IAP程序,通過通用通信端口實現(xiàn)用戶程序的在線升級。IAP程序通常存儲于FLASH程序存儲器中的IAP程序區(qū)。單片機上電后,執(zhí)行Boot (引導)程序先檢測IAPPin管腳的電壓;若IAPPin管腳的電平為高電平,則單片機執(zhí)行FLASH程序存儲器中的IAP程序;若LoadPin管腳的電平也為高電平,則IAP程序通過通信總線開始從主機(Host)接收二進制文件燒錄到FLASH程序存儲器中,作為新版的用戶程序;主機在發(fā)送二進制文件完畢后,控制LoadPin管腳的電平轉(zhuǎn)為低電平,則單片機結(jié)束IAP程序的執(zhí)行。主機控制ResetPin管腳復(fù)位后,單片機重啟;單片機重啟后,若檢測到IAPPin管腳的電壓為低電壓,則執(zhí)行之前燒錄的新版的用戶程序,從而實現(xiàn)單片機的用戶程序的在線升級。本發(fā)明的發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)的單片機用戶程序的在線升級方法需要占用單片機較多的硬件資源;事實上,為了實現(xiàn)在線升級的控制,占用了單片機3個管腳(1\0端口)分別作為IAPPin、LoadPin、ResetPin管腳與主機相連,主機通過這三個管腳來控制單片機的用戶程序的在線升級。因此,現(xiàn)有技術(shù)的單片機用戶程序的在線升級方法占用單片機較多硬件資源,在單片機功能日益增多的情況下,越來越具有節(jié)省單片機硬件資源的需求。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了一種用戶程序在線升級系統(tǒng)和升級方法,用以在用戶程序的在線升級時減少對單片機的硬件資源的占用。根據(jù)本發(fā)明的一個方面,提供了一種用戶程序在線升級方法,包括所述單片機上電或復(fù)位后,讀取非易失性程序存儲器中的燒錄標識;
若所述燒錄標識為數(shù)值A(chǔ),則運行所述非易失性程序存儲器中的IAP程序,對所述非易失性程序存儲器中的用戶程序進行在線升級;若所述燒錄標識為數(shù)值B,則運行所述非易失性程序存儲器中的用戶程序;在運行所述用戶程序時,若接收到燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。其中,所述運行所述非易失性程序存儲器中的IAP程序,對所述非易失性程序存儲器中的用戶程序進行在線升級具體包括所述單片機運行所述IAP程序后,若接收到寫數(shù)據(jù)指令,則根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到所述非易失性程序存儲器的用戶程序區(qū)中,作為升級版的用戶程序?qū)λ龇且资猿绦虼鎯ζ髦械挠脩舫绦蜻M行在線升級。進一步,在所述單片機運行所述IAP程序后,還包括
若所述單片機接收到寫燒錄標識指令,則根據(jù)所述寫燒錄標識指令將數(shù)值B寫入到非易失性程序存儲器中的燒錄標識中;之后,跳轉(zhuǎn)到所述非易失性程序存儲器的用戶程序區(qū)的入口處,開始執(zhí)行所述升級版的用戶程序。進一步,在所述接收到寫數(shù)據(jù)指令后,還包括所述單片機根據(jù)所述寫數(shù)據(jù)指令中的校驗位對所述寫數(shù)據(jù)指令進行校驗;若校驗結(jié)果錯誤,則返回接收錯誤的反饋指令;以及所述根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到所述非易失性程序存儲器的用戶程序區(qū)具體為若校驗結(jié)果正確,則根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到所述非易失性程序存儲器的用戶程序區(qū),并返回接收正確的反饋指令。較佳地,在所述執(zhí)行所述升級版的用戶程序后,還包括在所述升級版的用戶程序運行過程中,若所述單片機接收到所述燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。根據(jù)本發(fā)明的另一個方面,還提供了一種用戶程序在線升級系統(tǒng),包括單片機,用于上電或復(fù)位后讀取非易失性程序存儲器中的燒錄標識;若所述燒錄標識為數(shù)值B,則運行所述非易失性程序存儲器中的用戶程序;主機,用于向所述單片機發(fā)送燒錄指令;所述單片機在運行所述用戶程序時,若接收到所述燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位;復(fù)位后根據(jù)讀取的數(shù)值A(chǔ)的燒錄標識,運行所述非易失性程序存儲器中的IAP程序;所述主機向所述單片機發(fā)送升級版用戶程序;所述單片機將接收的升級版用戶程序?qū)懭胨龇且资猿绦虼鎯ζ鞯挠脩舫绦騾^(qū)中,進行用戶程序的在線升級。其中,所述主機向所述單片機發(fā)送升級版用戶程序具體為所述主機將所述升級版用戶程序的二進制文件通過至少一個寫數(shù)據(jù)指令發(fā)送到所述單片機。較佳地,所述主機還用于向所述單片機發(fā)送升級版用戶程序完畢后,向所述單片機發(fā)送寫燒錄標識指令;以及
所述單片機還用于根據(jù)接收的寫燒錄標識指令,將數(shù)值B寫入到非易失性程序存儲器中的燒錄標識中;之后,跳轉(zhuǎn)到所述非易失性程序存儲器的用戶程序區(qū)的入口處,開始執(zhí)行所述升級版的用戶程序。較佳地,所述單片機還用于根據(jù)接收的寫數(shù)據(jù)指令中的校驗位對接收的寫數(shù)據(jù)指令進行校驗;若校驗結(jié)果錯誤,則向所述主機返回接收錯誤的反饋指令;以及所述主機在接收到所述單片機返回的接收錯誤的反饋指令后,重新發(fā)送寫數(shù)據(jù)指令。較佳地,所述單片機還用于在執(zhí)行所述升級版的用戶程序后,在所·述升級版的用戶程序運行過程中,若所述單片機接收到所述燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。本發(fā)明實施例提供的技術(shù)方案中,由于在非易失性程序存儲器中增加有燒錄標識,用以在單片機上電后,指示單片機執(zhí)行IAP程序還是用戶程序;而且,在單片機運行的用戶程序中增加一個接收與處理主機發(fā)送的燒錄指令的功能在接收到主機發(fā)送的燒錄指令后,將燒錄標識修改為指示單片機執(zhí)行IAP程序的值(數(shù)值B)后,復(fù)位單片機;單片機在復(fù)位后根據(jù)燒錄標識執(zhí)行IAP程序,從主機獲取升級版用戶程序,實現(xiàn)用戶程序的在線升級。在此過程中,主機不必通過硬件管腳來控制對單片機用戶程序的升級,而是通過發(fā)送燒錄指令的軟件方式來實現(xiàn)升級控制的;從而節(jié)省了單片機的管腳資源,即減少了對單片機的硬件資源的占用。進一步,在主機對用戶程序進行在線升級完畢后,主機還控制單片機將燒錄標識修改為指示單片機執(zhí)行用戶程序的值(數(shù)值A(chǔ)),使得單片機在用戶程序在線升級完畢后,在每次上電或復(fù)位后可自動執(zhí)行用戶程序。
圖I為現(xiàn)有技術(shù)的單片機用戶程序在線升級系統(tǒng)的示意圖;圖2為本發(fā)明實施例的單片機用戶程序在線升級系統(tǒng)的示意圖;圖3為本發(fā)明實施例的單片機引導程序流程圖;圖4為本發(fā)明實施例的用戶程序在線升級方法流程圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉出優(yōu)選實施例,對本發(fā)明進一步詳細說明。然而,需要說明的是,說明書中列出的許多細節(jié)僅僅是為了使讀者對本發(fā)明的一個或多個方面有一個透徹的理解,即便沒有這些特定的細節(jié)也可以實現(xiàn)本發(fā)明的這些方面。本申請使用的“模塊”、“系統(tǒng)”等術(shù)語旨在包括與計算機相關(guān)的實體,例如但不限于硬件、固件、軟硬件組合、軟件或者執(zhí)行中的軟件。例如,模塊可以是,但并不僅限于處理器上運行的進程、處理器、對象、可執(zhí)行程序、執(zhí)行的線程、程序和/或計算機。舉例來說,計算設(shè)備上運行的應(yīng)用程序和此計算設(shè)備都可以是模塊。一個或多個模塊可以位于執(zhí)行中的一個進程和/或線程內(nèi),一個模塊也可以位于一臺計算機上和/或分布于兩臺或更多臺計算機之間。
本發(fā)明的技術(shù)方案中,省去了主機用于控制單片機用戶程序在線升級的三個管腳,而是在FLASH程序存儲器中增加有燒錄標識,用以在單片機上電后,指示單片機執(zhí)行IAP程序還是用戶程序;而且,在單片機運行的用戶程序中增加一個接收與處理主機發(fā)送的燒錄指令的功能在接收到主機發(fā)送的燒錄指令后,將燒錄標識修改為指示單片機執(zhí)行IAP程序的值后,復(fù)位單片機;單片機在復(fù)位后根據(jù)燒錄標識執(zhí)行IAP程序,從主機獲取新版的用戶程序,實現(xiàn)用戶程序的在線升級。在此過程中,主機不必通過硬件管腳來控制對單片機用戶程序的升級,而是通過發(fā)送燒錄指令的軟件方式來實現(xiàn)升級控制的;從而節(jié)省了單片機的管腳資源,即減少了對單片機的硬件資源的占用。下面結(jié)合附圖詳細說明本發(fā)明實施例的技術(shù)方案。本發(fā)明實施例提供的單片機的用戶程序在線升級系統(tǒng),如圖2所示,包括主機201、單片機202、非易失性程序存儲器203。其中,非易失性程序存儲器203具體可以是FLASH器件。 主機201與單片機202之間連接有通用通信總線,比如串行總線IIC(Inter-Integrated Circuit,交互集成電路)或 SPI(Serial Peripheral Interface,串行外設(shè)接口)總線,或者并行總線等。主機201具體可以是計算機、CPU (Central ProcessingUnit,中央處理器)、微處理器等。單片機202上電或復(fù)位后,先執(zhí)行Boot (引導程序),執(zhí)行該程序的流程圖3所示,包括如下步驟S301 :單片機202上電或復(fù)位;S302 :單片機202執(zhí)行Boot程序,讀取非易失性程序存儲器203中的燒錄標識。非易失性程序存儲器203通常分為多個塊(Block),單片機在對其進行燒錄時,即單片機向非易失性程序存儲器203寫入數(shù)據(jù)時,通常是整塊操作。燒錄標識可以寫入到非易失性程序存儲器203中的某個特定塊中,例如,燒錄標識存儲在非易失性程序存儲器203中的最后一個塊中,該塊專用于存儲燒錄標識,不存儲其它信息,以免對燒錄標識的錯誤寫入;為便于描述,本文將專用于存儲燒錄標識的塊稱為燒錄標識塊。單片機202執(zhí)行Boot程序,從非易失性程序存儲器203的燒錄標識塊中讀取燒錄標識。S303 :判斷燒錄標識的數(shù)值;若燒錄標識為數(shù)值A(chǔ) (第一數(shù)值),則執(zhí)行步驟S304,跳轉(zhuǎn)到IAP程序的入口 ;若燒錄標識為數(shù)值B (第二數(shù)值),則執(zhí)行步驟S305,跳轉(zhuǎn)到用戶程序的入口。本步驟中的數(shù)值A(chǔ)和數(shù)值B為預(yù)先設(shè)定的,比如,可以設(shè)定數(shù)值A(chǔ)、數(shù)值B分別為OxFFFFFFFF、0x00000000。當單片機202讀取的燒錄標識為OxFFFFFFFF,則跳轉(zhuǎn)到IAP程序的入口,開始執(zhí)行IAP程序;若單片機202讀取的燒錄標識為0x00000000,則跳轉(zhuǎn)到用戶程序的入口,開始執(zhí)行用戶程序。S304 :單片機202跳轉(zhuǎn)到非易失性程序存儲器中的IAP程序的入口,運行IAP程序。S305:單片機202跳轉(zhuǎn)到非易失性程序存儲器中的用戶程序的入口,運行用戶程序。在單片機202運行用戶程序時,若主機201需要對非易失性程序存儲器203中的用戶程序進行升級,則具體的升級方法流程,如圖4所示,包括如下步驟S401 :單片機202運行用戶程序。S402 :主機201向單片機202發(fā)送燒錄指令。在本步驟中,主機201通過通信總線向單片機202發(fā)送燒錄指令。主機201和單片機202可以事先約定一套用于用戶程序在線升級的指令,這些指令中可以包括燒錄指令,用以主機201指示單片機202進行燒錄操作;寫數(shù)據(jù)指令,用以主機201指示單片機202向非易失性程序存儲器203中的特定塊寫入特定數(shù)據(jù);反饋指令,用以單片機202向主機201反饋寫入數(shù)據(jù)的結(jié)果。
S403 :單片機202接收到燒錄指令后,修改燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。具體地,單片機運行的用戶程序通常具有從主機201接收指令和數(shù)據(jù)的功能,而本發(fā)明的單片機202運行的用戶程序中除了包括通常的應(yīng)用功能模塊外,還包括一個燒錄指令接收處理模塊。單片機202運行的用戶程序在接收到主機201發(fā)送的指令后調(diào)用該燒錄指令接收處理模塊,若燒錄指令接收處理模塊識別出接收的指令為燒錄指令,則執(zhí)行修改燒錄標識為數(shù)值A(chǔ),將本單片機進行軟復(fù)位。S404 :單片機202在復(fù)位后,重啟;S405 :單片機202根據(jù)燒錄標識,執(zhí)行IAP程序。具體地,單片機202在重啟后,重新執(zhí)行Boot程序;執(zhí)行Boot程序的具體流程已在上述圖3所示的步驟中介紹了,此處不再贅述;由于燒錄標識已經(jīng)在之前修改為數(shù)值A(chǔ),因此,在執(zhí)行Boot程序的過程中,單片機202在判斷燒錄標識為數(shù)值A(chǔ)后,跳轉(zhuǎn)到IAP程序的入口,開始執(zhí)行IAP程序。S406 :單片機202執(zhí)行IAP程序,接收從主機201發(fā)送的升級版用戶程序?qū)懭氲椒且资猿绦虼鎯ζ?03,進行用戶程序的升級。具體地,主機201在發(fā)送燒錄指令后可以等待一段設(shè)定的時間段,比如等待ls,在這時間段內(nèi)單片機202完成重啟,已經(jīng)運行了 IAP程序;之后,主機201將新的用戶程序,SP升級版用戶程序的二進制文件通過發(fā)送多個寫數(shù)據(jù)指令到單片機202,由單片機202將升級版用戶程序燒錄到非易失性程序存儲器203中單片機202執(zhí)行IAP程序,IAP程序接收主機201發(fā)送的寫數(shù)據(jù)指令,根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到非易失性程序存儲器203的用戶程序區(qū)中的相應(yīng)塊中。一般而言,升級版用戶程序被寫入到非易失性程序存儲器203的用戶程序區(qū)中,用以覆蓋掉原有用戶程序。也就是說,單片機202運行所述IAP程序后,將主機201發(fā)送的二進制文件寫入到非易失性程序存儲器203中的用戶程序區(qū),作為升級版的用戶程序?qū)Ψ且资猿绦虼鎯ζ?03中的用戶程序進行在線升級。較佳地,在單片機202的IAP程序在接收到寫數(shù)據(jù)指令后還可根據(jù)其校驗位對其進行校驗;若校驗結(jié)果正確,則根據(jù)接收的寫數(shù)據(jù)指令將接收的數(shù)據(jù)寫入到非易失性程序存儲器203中的相應(yīng)的塊中,并向主機201返回接收正確的反饋指令;若校驗結(jié)果錯誤,則向主機201返回接收錯誤的反饋指令。主機201在接收到接收錯誤的反饋指令后將重新發(fā)送之前發(fā)送的寫數(shù)據(jù)指令。
如果主機201在發(fā)送燒錄指令后向單片機202發(fā)送寫數(shù)據(jù)指令時,單片機202還未重啟,或還未運行IAP程序,則主機201在設(shè)定時間段(比如IOms)內(nèi)將接收不到單片機202返回的反饋指令,因此,主機201可以重新發(fā)送之前發(fā)送的寫數(shù)據(jù)指令,直到單片機202運行IAP程序后向其返回接收正確的反饋指令。S407 :主機201發(fā)送用以指示將數(shù)值B寫入到燒錄標識塊的燒錄標識中的寫數(shù)據(jù)指令,為便于描述,本文中將該寫數(shù)據(jù)指令稱為寫燒錄標識指令。主機201通過發(fā)送寫燒錄標識指令,作為結(jié)束該次用戶程序升級過程的標志;即主機201在完成發(fā)送升級版用戶程序到單片機202后,向單片機202發(fā)送寫燒錄標識指令,單片機202根據(jù)所述寫燒錄標識指令將數(shù)值B寫入到非易失性程序存儲器203中的燒錄標識中單片機202根據(jù)接收的寫燒錄標識指令,將數(shù)據(jù)寫入非易失性程序存儲器203中的燒錄標識塊,在寫入到燒錄標識塊的數(shù)據(jù)中,寫入到燒錄標識位置處的數(shù)據(jù)為數(shù)值B。S408 :單片機202根據(jù)接收的寫燒錄標識指令,將燒錄標識塊中的燒錄標識修改為數(shù)值B?!ぞ唧w地,單片機202的IAP程序根據(jù)接收的寫燒錄標識指令,將數(shù)據(jù)寫入非易失性程序存儲器203中的燒錄標識塊,將燒錄標識塊中的燒錄標識修改為數(shù)值B。S409:單片機202跳轉(zhuǎn)到非易失性程序存儲器203的用戶程序的入口,開始執(zhí)行新寫入的升級版用戶程序。由于單片機202將接收到寫燒錄標識指令,作為結(jié)束該次用戶程序升級過程的標志;因此,單片機202的IAP程序在根據(jù)寫燒錄標識指令,將燒錄標識塊中的燒錄標識修改為數(shù)值B后,不再從主機201接收寫數(shù)據(jù)指令,而是跳轉(zhuǎn)到非易失性程序存儲器203的用戶程序區(qū)的入口處,開始執(zhí)行新寫入的升級版用戶程序。從上述可以看出,為了在用戶程序升級完畢后單片機可以執(zhí)行新的用戶程序,主機需要在發(fā)送升級版用戶程序完畢后,控制單片機將燒錄標識寫為數(shù)值B。此外,為了保證用戶程序的持續(xù)升級,每次升級過程中寫入的升級版用戶程序也都具有如上所述的燒錄指令接收處理模塊,并在接收到主機發(fā)送的指令時調(diào)用燒錄指令接收處理模塊用以識別是否為燒錄指令,若是燒錄指令則進行相應(yīng)處理;也就是說,在單片機執(zhí)行升級版的用戶程序后,在升級版的用戶程序運行過程中,若單片機接收到主機發(fā)送的燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。復(fù)位后,單片機根據(jù)為數(shù)值A(chǔ)的燒錄標識進行用戶程序的在線升級,具體過程如上述圖3所示的步驟所述,此處不再贅述;從而實現(xiàn)了用戶程序的持續(xù)升級。因此,本發(fā)明中除了需要在非易失性程序存儲器203中設(shè)置有燒錄標識外,主機也需要進行相應(yīng)的燒錄流程修改即主機201需要在進行用戶程序升級前發(fā)送燒錄指令,在升級版用戶程序傳送完畢后,將燒錄標識寫為數(shù)值B ;而且,單片機中運行的用戶程序也需要具有識別和處理燒錄指令的功能在接收到燒錄指令后,將燒錄標識寫為數(shù)值A(chǔ),進行軟復(fù)位。本發(fā)明實施例提供的技術(shù)方案中,由于在非易失性程序存儲器中增加有燒錄標識,用以在單片機上電后,指示單片機執(zhí)行IAP程序還是用戶程序;而且,在單片機運行的用戶程序中增加一個接收與處理主機發(fā)送的燒錄指令的功能在接收到主機發(fā)送的燒錄指令后,將燒錄標識修改為指示單片機執(zhí)行IAP程序的值(數(shù)值B)后,復(fù)位單片機;單片機在復(fù)位后根據(jù)燒錄標識執(zhí)行IAP程序,從主機獲取升級版用戶程序,實現(xiàn)用戶程序的在線升級。在此過程中,主機不必通過硬件管腳來控制對單片機用戶程序的升級,而是通過發(fā)送燒錄指令的軟件方式來實現(xiàn)升級控制的;從而節(jié)省了單片機的管腳資源,即減少了對單片機的硬件資源的占用。進一步,在主機對用戶程序進行在線升級完畢后,主機還控制單片機將燒錄標識修改為指示單片機執(zhí)行用戶程序的值(數(shù)值A(chǔ)),使得單片機在用戶程序在線升級完畢后,在每次上電或復(fù)位后可自動執(zhí)行用戶程序。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀取存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng) 視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種用戶程序在線升級方法,包括 所述單片機上電或復(fù)位后,讀取非易失性程序存儲器中的燒錄標識; 若所述燒錄標識為數(shù)值A(chǔ),則運行所述非易失性程序存儲器中的IAP程序,對所述非易失性程序存儲器中的用戶程序進行在線升級; 若所述燒錄標識為數(shù)值B,則運行所述非易失性程序存儲器中的用戶程序;在運行所述用戶程序時,若接收到燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。
2.如權(quán)利要求I所述的方法,其特征在于,所述運行所述非易失性程序存儲器中的IAP程序,對所述非易失性程序存儲器中的用戶程序進行在線升級具體包括· 所述單片機運行所述IAP程序后,若接收到寫數(shù)據(jù)指令,則根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到所述非易失性程序存儲器的用戶程序區(qū)中,作為升級版的用戶程序?qū)λ龇且资猿绦虼鎯ζ髦械挠脩舫绦蜻M行在線升級。
3.如權(quán)利要求2所述的方法,其特征在于,在所述單片機運行所述IAP程序后,還包括 若所述單片機接收到寫燒錄標識指令,則根據(jù)所述寫燒錄標識指令將數(shù)值B寫入到非易失性程序存儲器中的燒錄標識中;之后, 跳轉(zhuǎn)到所述非易失性程序存儲器的用戶程序區(qū)的入口處,開始執(zhí)行所述升級版的用戶程序。
4.如權(quán)利要求2或3所述的方法,其特征在于,在所述接收到寫數(shù)據(jù)指令后,還包括 所述單片機根據(jù)所述寫數(shù)據(jù)指令中的校驗位對所述寫數(shù)據(jù)指令進行校驗;若校驗結(jié)果錯誤,則返回接收錯誤的反饋指令;以及 所述根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到所述非易失性程序存儲器的用戶程序區(qū)具體為 若校驗結(jié)果正確,則根據(jù)接收的寫數(shù)據(jù)指令將接收的二進制文件寫入到所述非易失性程序存儲器的用戶程序區(qū),并返回接收正確的反饋指令。
5.如權(quán)利要求4所述的方法,其特征在于,在所述執(zhí)行所述升級版的用戶程序后,還包括 在所述升級版的用戶程序運行過程中,若所述單片機接收到所述燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。
6.一種用戶程序在線升級系統(tǒng),包括 單片機,用于上電或復(fù)位后讀取非易失性程序存儲器中的燒錄標識;若所述燒錄標識為數(shù)值B,則運行所述非易失性程序存儲器中的用戶程序; 主機,用于向所述單片機發(fā)送燒錄指令; 所述單片機在運行所述用戶程序時,若接收到所述燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位;復(fù)位后根據(jù)讀取的數(shù)值A(chǔ)的燒錄標識,運行所述非易失性程序存儲器中的IAP程序; 所述主機向所述單片機發(fā)送升級版用戶程序; 所述單片機將接收的升級版用戶程序?qū)懭胨龇且资猿绦虼鎯ζ鞯挠脩舫绦騾^(qū)中,進行用戶程序的在線升級。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述主機向所述單片機發(fā)送升級版用戶程序具體為 所述主機將所述升級版用戶程序的二進制文件通過至少一個寫數(shù)據(jù)指令發(fā)送到所述單片機。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于, 所述主機還用于向所述單片機發(fā)送升級版用戶程序完畢后,向所述單片機發(fā)送寫燒錄標識指令;以及 所述單片機還用于根據(jù)接收的寫燒錄標識指令,將數(shù)值B寫入到非易失性程序存儲器中的燒錄標識中;之后,跳轉(zhuǎn)到所述非易失性程序存儲器的用戶程序區(qū)的入口處,開始執(zhí)行所述升級版的用戶程序。
9.如權(quán)利要求7或8所述的系統(tǒng),其特征在于, 所述單片機還用于根據(jù)接收的寫數(shù)據(jù)指令中的校驗位對接收的寫數(shù)據(jù)指令進行校驗;若校驗結(jié)果錯誤,則向所述主機返回接收錯誤的反饋指令;以及 所述主機在接收到所述單片機返回的接收錯誤的反饋指令后,重新發(fā)送寫數(shù)據(jù)指令。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于, 所述單片機還用于在執(zhí)行所述升級版的用戶程序后,在所述升級版的用戶程序運行過程中,若所述單片機接收到所述燒錄指令,則更改所述燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。
全文摘要
本發(fā)明公開了一種用戶程序在線升級系統(tǒng)和升級方法,所述方法包括單片機上電或復(fù)位后,讀取存儲器中的燒錄標識;若燒錄標識為數(shù)值A(chǔ),則運行存儲器中的IAP程序,對存儲器中的用戶程序進行在線升級;若燒錄標識為數(shù)值B,則運行存儲器中的用戶程序;在運行用戶程序時,若接收到燒錄指令,則更改燒錄標識為數(shù)值A(chǔ)后,進行軟復(fù)位。由于單片機在運行用戶程序時若接收到燒錄指令,則將燒錄標識修改為數(shù)值B后,復(fù)位單片機;單片機在復(fù)位后根據(jù)燒錄標識執(zhí)行IAP程序,實現(xiàn)用戶程序的在線升級。此過程中,主機不必通過硬件管腳來控制對單片機用戶程序的升級,從而節(jié)省了管腳資源。
文檔編號G06F9/445GK102945173SQ20121042828
公開日2013年2月27日 申請日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者馬軍濤, 李剛, 宋哲韜, 孫黎明 申請人:青島海信寬帶多媒體技術(shù)有限公司