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