新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種嵌入式系統(tǒng)bootrom自動(dòng)備份及切換技術(shù)

一種嵌入式系統(tǒng)bootrom自動(dòng)備份及切換技術(shù)

作者: 時(shí)間:2012-03-13 來源:網(wǎng)絡(luò) 收藏

③如果FlashA中的代碼已經(jīng)損壞,CPU將無法啟動(dòng)。此時(shí),CPLD等待5 s后檢測(cè)到的啟動(dòng)寄存器值仍為初始值,CPLD認(rèn)為FlashA已損壞,boot_cs信號(hào)輸出到FlashB,然后發(fā)送一個(gè)復(fù)位信號(hào)給CPU,CPU重新開始啟動(dòng)過程。CPU從FlashB中啟動(dòng)代碼,啟動(dòng)完成后,軟件向CPLD的啟動(dòng)寄存器中寫入值B。此時(shí)輸出CS1給FlashA,軟件檢測(cè)FlashA中代碼的完整性。如果完整,則不處理。如果發(fā)現(xiàn)FlashA中代碼不完整,則更新FlashA中的代碼,更新完畢后通知CPLD復(fù)位CPU,并輸出boot_cs給FlashA,從FlashA重新啟動(dòng)。
更新時(shí),首先改寫FlashA中的代碼,并重新啟動(dòng);然后驗(yàn)證FlashA中代碼的完整性,如果FlashA中代碼完整,則更新到FlashB中。

2 實(shí)現(xiàn)
由軟件和CPLD配合實(shí)現(xiàn),其中CPLD根據(jù)軟件反饋的狀態(tài)來確定片選的分配以及系統(tǒng)的復(fù)位。軟件則在啟動(dòng)后對(duì)cpld Bootrom_run寄存器進(jìn)行置位,并對(duì)兩片F(xiàn)lash的代碼進(jìn)行CRC校驗(yàn)。如果有錯(cuò)誤,則修復(fù)相應(yīng)的Flash代碼,并記錄相關(guān)錯(cuò)誤信息。
CPLD工作流程如圖2所示。

本文引用地址:http://m.butianyuan.cn/article/149452.htm

b.jpg


本系統(tǒng)采用了Altera公司的MAXII CPLD實(shí)現(xiàn),編譯通過后僅占用124個(gè)邏輯單元,很方便就可以把相關(guān)的代碼添加到產(chǎn)品現(xiàn)有的CPLD中,實(shí)現(xiàn)bootrom功能。

結(jié)語
本文提出了一種基于CPLD實(shí)現(xiàn)軟件bootrom功能的方法。該方法在PowerPC處理器MPC5200、MIPS處理器RM7000A和ARM處理器ATM9200的平臺(tái)上都得到了驗(yàn)證,均能保證系統(tǒng)的正常啟動(dòng),并能完成bootrom的恢復(fù),為產(chǎn)品軟件更新升級(jí)提供了強(qiáng)有力的保證。本設(shè)計(jì)由于采用了兩片F(xiàn)lash,因此增加了一定的設(shè)計(jì)難度和成本。但相對(duì)于可靠的bootrom更新機(jī)制、自動(dòng)化和可靠性所帶來的維護(hù)成本的降低,這個(gè)代價(jià)是值得的。

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

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉