一種通過i2c升級設備固件的方法
【技術領域】
[0001]本發明涉及嵌入式設備設計技術領域,本發明公開了一種通過I2C升級設備固件的方法。
【背景技術】
[0002]IIC,又稱I2C,既Inter-1ntegrated Circuit,集成總線電路,這種總線類型是由飛利浦半導體公司在20世紀八十年代初設計出來的。該總線兩條線組成:數據線(SDA)和時鐘線(SCL),一條IIC總線上可以連接多個IIC從設備,這些從設備使用不同的從地址來區分。
[0003]系統設計中,存在一種單主控設備和多個從設備或模塊(以下統稱從設備)的結構。其中主控設備功能豐富,支持多種管理方式;而從設備功能較單一,采用成本相對低廉的普通單片機便可實現其功能,而這些單片機通常都支持IIC接口。
[0004]然而,成本相對低廉的芯片提供的系統資源往往有限,通常無法提供更多的資源用于設備的升級;并且大多數的設備程序運行在Rom中,也無法直接對設備進行升級。
[0005]CN200510002062.7公開了一種單片機在線加載升級方法及系統,用于對作為從CPU工作的單片機進行在線加載升級,該方法包括:將單片機的BOOT軟件寫入單片機的內部程序存儲區,并將其應用程序寫入片外掉電保持介質中;當單片機需要升級時,由主CPU控制單片機工作在運行片內BOOT軟件狀態,并將加載代碼通過BOOT軟件寫入其片外掉電保持介質中;由主CPU復位單片機,并控制其重啟后工作在運行片外應用程序狀態,完成加載升級過程。本發明系統在基于現有主、從CPU系統基礎上,增加了主CPU對單片機工作模式的控制電路,以及存儲單片機應用程序的片外掉電保持介質。利用本發明,可以簡單方便地實現對單片機的在線加載升級,便于系統維護。但是,該方法需要多條通信總線或控制線,同時需要外掉電保持介質,設計相對復雜,并且設計成本相對較高;總線和控制線較多,消耗主CPU的資源較多,不適合單CPU連接多單片機的設計。
【發明內容】
[0006]針對現有技術中的從設備難以升級的上述問題,本發明公開了一種通過I2C升級設備固件的方法。
[0007]本發明的技術方案如下:
本發明公開了一種通過I2C升級設備固件的方法,其具體包括以下的步驟:步驟一、將N個從設備通過一條I2C總線連接到主控設備上,每個從設備的系統包括引導程序區、系統功能程序區和系統升級程序區;步驟二、當從設備啟動時,引導程序選擇需要加載的系統功能程序,當加載成功時,系統功能程序啟動;當加載失敗時,等待主控設備升級;步驟三、主控設備獲取到從設備需要升級的指令后,根據該從設備的信息下載該從設備的固件并發送升級指令給該從設備,從設備接收到升級指令后將狀態切換為升級模式,在升級過程中,從設備維護為狀態機,記錄當前從設備的升級狀態,主控設備讀取從設備的升級狀態;步驟四、當從設備切換為升級模式后,主控設備將固件信息下發給從設備,從設備收到固件信息后系統升級程序將其寫入指定的位置;步驟五、當從設備的所有寫入指令執行完成后,主控設備下發重啟指令,從設備重啟,引導程序選擇需要加載的系統功能程序。通過主控設備以及I2C總線實現從設備的自動在線升級。
[0008]更進一步地,上述主控設備獲取到從設備需要升級的指令具體包括:當從設備加載失敗時,從設備寫入一個標志位,主控設備通過讀取這個標志位判斷該從設備是否需要升級。快速獲取到從設備需要升級的信息,從而提高升級效率。
[0009]更進一步地,上述主控設備獲取到從設備需要升級的指令具體包括:主控設備通過I2C總線,讀取或配置從設備的運行狀態和參數,通過從設備的運行狀態和參數判斷從設備是否需要升級。快速獲取到從設備需要升級的信息,從而提高升級效率。
[0010]更進一步地,上述從設備的系統還可以包括功能程序備份區,當功能程序受損后,從功能程序備份區獲取到該程序的備份。從而實現快速恢復。
[0011]更進一步地,上述主控設備在下發數據或者指令時,其頭部信息包括指令編號和指令編號的反值,保證Type的正確性。
[0012]更進一步地,上述主控設備在下發數據或者指令時,其尾部信息為數據校驗和。通過校驗信息保證所有數據的正確性。
[0013]更進一步地,上述主控設備在下發固件時,首先將固件分片,并發送固件分片信息,從設備收到固件分片信息后,記錄并等待接收固件的數據;然后主控設備依次下發固件的分片信息,從設備收到固件的分片信息后,記錄當前信息并等待接收單前分片的數據,直到最后一個分片數據發送并接收完成。首先將固件分片,并發送總體信息給從設備,便于從設備了解固件分片的編號,所有的片是否全部發送等內容。
[0014]更進一步地,上述方法還包括主控設備從上位機下載從設備的固件,當下載成功后,進行校驗,校驗成功后,主控設備下發從設備升級模式切換指令。
[0015]更進一步地,在傳輸過程中采用網絡字節序傳輸。
[0016]通過采用以上的技術方案,本發明的有益效果包括:通過主控設備以及I2C總線實現從設備的在線升級,從設備的升級過程簡單方便,整個過程自動實現,不需要任何的人工參與,方便了用戶的使用,實現了系統的自動檢測以及自動的在線升級。本發明不需要外接存儲介質,同時僅僅需要一條IIC總線連接多個從設備,連接方法簡單,既簡化了設計過程,也節省了設計成本。
【附圖說明】
[0017]圖1為總體架構設計模型。
[0018]圖2為從設備系統結構。
[0019]圖3為數據及指令格式。
[0020]圖4為主、從設備升級狀態圖。
[0021]圖5為主控設備端操作流程圖。
[0022]圖6為從設備端升級流程圖。
【具體實施方式】
[0023]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細的說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0024]本發明公開了一種通過I2C升級設備固件的方法,其具體包括以下的步驟:步驟一、將N個從設備通過一條I2C總線連接到主控設備上,每個從設備的系統包括引導程序區、系統功能程序區和系統升級程序區;步驟二、當從設備啟動時,引導程序選擇需要加載的系統功能程序,當加載成功時,系統功能程序啟動;當加載失敗時,等待主控設備升級;步驟三、主控設備獲取到從設備需要升級的指令后,根據該從設備的信息下載該從設備的固件并發送升級指令給該從設備,從設備接收到升級指令后將狀態切換為升級模式,在升級過程中,從設備維護為狀態機,記錄當前從設備的升級狀態,主控設備讀取從設備的升級狀態;步驟四、當從設備切換為升級模式后,主控設備將固件信息下發給從設備,從設備收到固件信息后系統升級程序將其寫入指定的位置;步驟五、當從設備的所有寫入指令執行完成后,主控設備下發重啟指令,從設備重啟,引導程序選擇需要加載的系統功能程序。通過主控設備以及I2C總線實現從設備的自動在線升級。
[0025]更進一步地,上述主控設備獲取到從設備需要升級的指令具體包括:當從設備加載失敗時,從設備寫入一個標志位,主控設備通過讀取這個標志位判斷該從設備是否需要升級。比如標志位為1為需要升級,標志位為0為不需要升級,初始的時候標志位為0。快速獲取到從設備需要