一種嵌入式系統bootrom自動(dòng)備份及切換技術(shù)
③如果FlashA中的代碼已經(jīng)損壞,CPU將無(wú)法啟動(dòng)。此時(shí),CPLD等待5 s后檢測到的bootrom啟動(dòng)寄存器值仍為初始值,CPLD認為FlashA已損壞,切換boot_cs信號輸出到FlashB,然后發(fā)送一個(gè)復位信號給CPU,CPU重新開(kāi)始啟動(dòng)過(guò)程。CPU從FlashB中啟動(dòng)代碼,啟動(dòng)完成后,軟件向CPLD的bootrom啟動(dòng)寄存器中寫(xiě)入值B。此時(shí)輸出CS1給FlashA,軟件檢測FlashA中代碼的完整性。如果完整,則不處理。如果發(fā)現FlashA中代碼不完整,則更新FlashA中的代碼,更新完畢后通知CPLD復位CPU,并輸出boot_cs給FlashA,從FlashA重新啟動(dòng)。
④系統更新bootrom時(shí),首先改寫(xiě)FlashA中的代碼,并重新啟動(dòng);然后驗證FlashA中代碼的完整性,如果FlashA中代碼完整,則更新到FlashB中。
2 系統實(shí)現
本系統由軟件和CPLD配合實(shí)現,其中CPLD根據軟件反饋的狀態(tài)來(lái)確定片選的分配以及系統的復位。軟件則在啟動(dòng)后對cpld Bootrom_run寄存器進(jìn)行置位,并對兩片Flash的代碼進(jìn)行CRC校驗。如果有錯誤,則修復相應的Flash代碼,并記錄相關(guān)錯誤信息。
CPLD工作流程如圖2所示。本文引用地址:http://dyxdggzs.com/article/149452.htm
本系統采用了Altera公司的MAXII CPLD實(shí)現,編譯通過(guò)后僅占用124個(gè)邏輯單元,很方便就可以把相關(guān)的代碼添加到產(chǎn)品現有的CPLD中,實(shí)現bootrom自動(dòng)備份和切換功能。
結語(yǔ)
本文提出了一種基于CPLD實(shí)現嵌入式軟件bootrom自動(dòng)備份及切換功能的方法。該方法在PowerPC處理器MPC5200、MIPS處理器RM7000A和ARM處理器ATM9200的平臺上都得到了驗證,均能保證系統的正常啟動(dòng),并能完成bootrom的自動(dòng)恢復,為產(chǎn)品軟件更新升級提供了強有力的保證。本設計由于采用了兩片Flash,因此增加了一定的設計難度和成本。但相對于可靠的bootrom更新機制、自動(dòng)化和可靠性所帶來(lái)的維護成本的降低,這個(gè)代價(jià)是值得的。
評論