解決軟硬件接口的嵌入式系統設計實例
為了評估最終系統軟件的性能,將列表1中的偽隨機碼正確轉換成C代碼并同時用于A、B系統中,然后利用內部存儲器中的結構模擬每個系統的硬件接口。代碼中應避免使用位域,因為標準C實現不能在限制性訪問的地址空間上正確工作。系統代碼模擬運行于PowerPC,編譯工具采用的是Green Hills MultiC,目標操作系統是VxWorks,編譯器設置在中級優化度(目的是幫助調試,并允許設計工程師把每條匯編指令與每一行C代碼聯系起來)。
表1列出了偽隨機碼的每一行,并給出了每個系統實現所用到的匯編指令與功能調用數量。另外還對兩個實現所用的代碼執行速度進行測試。子程序升級系統B軸的速度要比系統A快5.3倍,這主要歸功于任務阻塞與去阻塞功能調用的去除。要注意的是實際系統中的加速效果可能并不明顯,因為實際的硬件訪問時間對總的執行時間影響最大。
在實驗中要提升兩個實現所用編譯器的優化度,結果發現優化度的提高對系統B無效,對系統A來說只是減少了很少的代碼,并且速度卻稍有降低。這樣的結果表明,系統B的硬件接口在軸域的資源訪問上非常接近內部訪問的效能。
另外,為了對兩種實現所用到的硬件設備進行評估,要用VHDL對硬件接口進行編碼,然后用賽靈思的Webpack軟件進行綜合,并把設計映射到賽靈思的Virtex FPGA中。采用Virtex系列芯片的結果是系統A要消耗56個功能片(slice),系統B要消耗85個功能片。V300E-PQ240器件總共具有3072個片,因此系統A占用可用資源的1.8%,系統B則占2.8%。9500系列器件的內部資源更有限些,比如XC95288XL-PQ208,系統A將占用該器件可用資源的18%,系統B則占30%。
仔細考察這兩個設計發現,系統B所用的額外資源中最主要的驅動源是組合型軸尋址方案。為了驗證這一結果,重新組織寄存器映射,以便將每個軸作為一個獨立資源使用,單個軸映射按地址位邊界對齊。這一變通的實現方式保留了系統B的所有軟件接口優點,同時減少了整體硬件器件的使用,Virtex系列器件的片利用率能降低2.3%,9500系列的利用率能降低22%。
硬件設計會極大地影響系統軟件實現的復雜性和質量。一個好的硬件設計要求設計人員能根據硬件實現與最終軟件設計環境的復雜性做出決定,正確理解硬件接口設計對軟件開發流程的影響能極大地改進系統質量、性能和可靠性,同時減少系統開發的周期與成本。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論