MicroBlaze微處理器在實(shí)時(shí)汽車系統(tǒng)中的應(yīng)用
簡便的調(diào)試
調(diào)試有多個(gè)并行執(zhí)行線程的系統(tǒng)往往難度較大。不過把系統(tǒng)劃分給多個(gè)處理器就可以使事情變得簡單。我們不需要多線程調(diào)試器(比如在Linux環(huán)境中調(diào)試多個(gè)處理器時(shí)所需要的)。賽靈思調(diào)試器 (XMD) 可以連接到多個(gè)處理器上,而且通過使用TCL(XMD能理解的工具命令行語言),我們可以自動(dòng)完成設(shè)置,并將待測的代碼下載到多個(gè)處理器上。當(dāng)然,也可以使用采用 printf 聲明的常規(guī)嵌入式系統(tǒng)調(diào)試方法,因?yàn)槊總€(gè)處理器都有自己的串行端口。
在調(diào)試處理器間通信時(shí)具有重大價(jià)值的另一種工具是 ChipScope? Pro。該嵌入式邏輯分析器內(nèi)建在 FPGA 結(jié)構(gòu)中,讓我們可以捕獲通過FSL 鏈路的數(shù)據(jù),把隱藏較深的缺陷的漏洞排查到發(fā)送方或者接收方,然后進(jìn)行代碼的逐行排查。
使用四個(gè)處理器實(shí)現(xiàn)的隔離的意義在于,當(dāng)某個(gè)元件被調(diào)試過后,基本上不需要再調(diào)試。這樣可以避免在把不同來源的代碼集成到大型獨(dú)立應(yīng)用中,或者在單個(gè)處理器上運(yùn)行多個(gè)進(jìn)程時(shí),因奇奇怪怪的相互作用而產(chǎn)生的諸多問題。
FPGA 實(shí)現(xiàn)
這個(gè)項(xiàng)目基本不涉及 HDL,只用高級(jí)封裝程序把基于 EDK 的設(shè)計(jì)與一小段看門狗代碼整合在一起,確保系統(tǒng)在駕駛?cè)藛T熄火后關(guān)閉。 EDK生成了FPGA的主體部分(MHS 文件長度超過1,300 行!),而系統(tǒng)生成器負(fù)責(zé)生成視頻降采樣器。我們對四個(gè)微控制器都配置使用了高速緩存和浮點(diǎn)單元。在使用四個(gè)處理器、四個(gè) DDR 存儲(chǔ)接口以及一系列外設(shè)(包括以太網(wǎng)、SPI、IIC、CAN、UART、定時(shí)器和 GPIO)之后,器件約七成的查找表都被占用了(大約2.8萬個(gè)查找表)。與基于微控制器的 FPGA 的通常情況一樣,塊存儲(chǔ)器的使用率非常高,超過了 90%,或者119 個(gè)BRAM,但 DSP 模塊使用率相對較低:只有每個(gè)處理器的浮點(diǎn)單元需要它們(每個(gè)處理器 8 個(gè),總計(jì) 32 個(gè))。
整合主微處理器從內(nèi)部閃存引導(dǎo) Linux 內(nèi)核,然后加載內(nèi)部文件系統(tǒng)。每個(gè)從處理器都有基于FSL的引導(dǎo)載入程序,可以接受標(biāo)準(zhǔn)的 S-record文件,對其進(jìn)行解析并將其拷貝到本地存儲(chǔ)中,然后執(zhí)行。Linux 處理器把 S-record文件從文件系統(tǒng)中直接發(fā)送到 FSL 偽文件(使用內(nèi)置的 dd 實(shí)用程序)。如上文所述,所有的處理器間通信都通過完全連接的 FSL 鏈路網(wǎng)格完成。FSL 鏈路網(wǎng)格的帶寬為 32 位,運(yùn)行頻率為60MHz,能夠提供大量的低時(shí)延通信帶寬。雖然避免使用共享存儲(chǔ)可能會(huì)帶來限制,但這樣做可以實(shí)現(xiàn)上文已經(jīng)探討過的隔離所帶來的優(yōu)勢。硬件架構(gòu)與應(yīng)用要求的劃分吻合良好,實(shí)現(xiàn)了直觀的軟件分區(qū)。
有需要時(shí),F(xiàn)oot-LITE 算法微處理器會(huì)向 JPEG 壓縮器發(fā)出觸發(fā)信號(hào),同時(shí)與智能電話顯示器通信。Linux 處理器在藍(lán)牙通信和系統(tǒng)其余部件之間充當(dāng)媒介作用(如圖3 所示)。除了向駕駛?cè)藛T發(fā)出即時(shí)信號(hào),它將有關(guān)車輛狀態(tài)的連續(xù)信息流以及偶發(fā)的視頻流通過智能電話上傳到中央服務(wù)器。
在旅途結(jié)束,駕駛?cè)藛T熄火時(shí),主處理器會(huì)通知從處理器,隨即從處理器啟動(dòng)各自的關(guān)閉流程(比如將更新的參數(shù)寫入非易失調(diào)節(jié)存儲(chǔ)器),然后告知主處理器它們已經(jīng)可以安全地關(guān)閉了。此時(shí),主處理器向電源發(fā)出信號(hào),然后系統(tǒng)進(jìn)入極低功耗睡眠模式,等待下一次發(fā)動(dòng)。如果在熄火后兩分鐘軟件還沒有發(fā)出關(guān)閉信號(hào)(不過這種情況一般不太可能發(fā)生),F(xiàn)PGA 結(jié)構(gòu)中的硬件定時(shí)器會(huì)切斷電源,避免耗盡車輛的電池。
在項(xiàng)目收尾階段,來自由紐卡斯?fàn)柎髮W(xué)和南安普頓大學(xué)兩名學(xué)術(shù)界人士將分析在實(shí)際高速公路行駛狀態(tài)下車輛輸出數(shù)據(jù),以評估該系統(tǒng)引導(dǎo)駕駛?cè)藛T行為的效能。
FPGA 的優(yōu)勢
FPGA 提供了高度的靈活性,與固定硬件平臺(tái)相比,能夠更輕松地滿足日新月異的項(xiàng)目需求。另一大優(yōu)勢是,F(xiàn)PGA 能夠集成到定制化硬件中,滿足密集型應(yīng)用(比如視頻)需求。在使用 Linux 的情況下,可以方便地對諸如以太網(wǎng)這樣的外設(shè)進(jìn)行高級(jí)訪問,同時(shí)不會(huì)影響實(shí)時(shí)性能,這樣就可以把這些關(guān)鍵性的工作交給它們各自的微處理器來處理。最終,如果是由一個(gè)大型的、位于不同地理位置的團(tuán)隊(duì)在開發(fā)該軟件,使用與功能劃分相匹配的硬件架構(gòu)有助于開發(fā)和集成工作。
評論