新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種嵌入式系統bootrom自動備份及切換技術

        一種嵌入式系統bootrom自動備份及切換技術

        作者: 時間:2012-03-13 來源:網絡 收藏

        引言
        隨著物聯網概念的興起,在社會各個領域的應用越來越廣泛。由于產品應用的場合越來越復雜,對于產品開發就提出了新的要求,其中最明顯的表現就是軟件的維護變得日益重要。嵌入式投入實際環境中運行后,一部分在軟件開發過程中無法充分測試的錯誤便會暴露出來;在嵌入式系統的運行期內,用戶也往往會對嵌入式軟件提出新的功能要求和性能要求。因此,嵌入式軟件的更新逐漸成為嵌入式系統實際應用的一個重要問題。在嵌入式系統安裝數量較多,或安裝位置不方便的情況下,采用人工更新方式會花費較大的人力和物力。這時候就需要實現軟件的遠程更新,通過在系統中設計一個有線或無線的通信接口,在異地采用遠程通信的方式實現嵌入式軟件的更新。
        實現更新能有效地降低嵌入式軟件的更新和維護成本,因此得到了廣泛的應用。但是,在實際的應用過程中也發現了一些問題。由于更新過程中發生的一些異常操作(比如突然斷電、更新數據傳輸錯誤等),會導致產品軟件損壞,用戶無法維修,必須發回產品生產廠家進行維修,這給產品使用造成了很大的不便。
        分析這種問題發生的原因,當采用嵌入式Linux、Windows CE等較為復雜的操作系統時,一般設計一個獨立的程序,對系統進行初始化并引導嵌入式操作系統。而系統的更新僅僅考慮了應用層程序或是嵌入式操作系統,沒有對進行,所以當升級boot rom出現異常后,系統將無法再次啟動。同時,由于的加載必須通過燒片機或專用JTAG仿真器進行,而這些工具一般無法在現場使用,用戶也不具備這種條件,因此必須返回廠家進行維修。本文針對這種問題,提出一種bootrom自動,當系統更新出錯后,產品能自動從備份bootrom啟動,啟動后再恢復已寫壞的主bootrom。

        1 系統設計
        1.1 設計思想
        對于嵌入式系統,基于ARM、Power PC或MIPS架構,以及基于Linux、VxWorks等操作系統,其啟動原理都是一樣的。首先,系統上電后復位電路復位整個系統;在復位過程中,CPU讀取外部配置(這個配置一般由CPU引腳通過上下拉電阻確定);復位結束后,CPU根據配置從相應的外部程序存儲器的特定地址讀取bootrom代碼,大多數嵌入式系統一般采用的是NOR Flash,也有部分采用NAND Flash或CF卡等存儲器;然后執行bootrom代碼,初始化CPU各個部分,最后引導操作系統及應用軟件啟動。
        對于一個確定的嵌入式系統,其CPU讀取第一條指令的地址和片選是一定的。下面就以MPC5200B系統為例,說明實現bootrom自備份及自系統的實現方法。
        MPC5200B支持的bootrom地址為0x00000000或是0xfff00000,由復位配置確定從哪一個地址讀取,支持的bootrom空間為512 KB。要實現bootrom自動備份及自動切換有兩種方案:
        ①采用2片NOR Flash,同時掛在MPC5200B的本地總線上,通過一個CPLD提供2個Flash的片選信號,由軟件和CPLD根據boot啟動狀態確定把boot_cs輸出給哪一片Flash。
        ②采用1片NOR Flash,劃分兩個區域,每個區域為512 KB,通過CPLD去切換地址實現。
        本文采用方案一實現bootrom切換功能。
        1.2 總體設計
        如圖1所示,CPU輸出兩個片選信號(boot_cs和CSD給CPLD,同時CPU Local bus的其他信號分別連接到FlashA、FlashB以及CPLD上,CPLD輸出一個復位信號給CPU,復位電路和時鐘電路給CPLD和CPU提供復位和時鐘信號。

        本文引用地址:http://www.104case.com/article/149452.htm

        a.jpg


        要實現bootrom自動切換及備份,需要CPLD和軟件共同進行處理。默認主Flash為FlashA,備份Flash為FlashB。具體步驟如下:
        ①啟動時,CPU發出boot_cs信號,從Local bus的0x00000000地址開始讀取軟件,CPLD默認把boot_cs信號送給FlashA。如果CPU正常啟動,等CPU啟動完成后,軟件向CPLD的bootrom啟動寄存器中寫入值A。
        ②CPLD延時5 s后讀取bootrom啟動寄存器,當發現這個寄存器值為A時,代表bootrom已經成功啟動,CPLD鎖定輸出boot_cs給第一片Flash。同時,輸出CS1給FlashB,軟件檢測FlashB中代碼的完整性。如果完整,則不處理;如果發現FlashB中代碼不完整,重新往FlashB中寫入代碼。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鹿邑县| 萍乡市| 泽州县| 和龙市| 潢川县| 连州市| 莲花县| 阆中市| 秭归县| 墨脱县| 内乡县| 鹤庆县| 迁西县| 邹城市| 秭归县| 怀化市| 大竹县| 肃南| 普兰县| 丹凤县| 安多县| 郧西县| 乾安县| 巴林左旗| 兴城市| 阳城县| 平顶山市| 肥乡县| 登封市| 定州市| 莱西市| 区。| 南宫市| 通化县| 平阴县| 乐山市| 西乌珠穆沁旗| 大余县| 田东县| 石屏县| 育儿|