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