Stefano Zammattio Clive Davies
摘要:隨著ARM Cortex-A9多處理器和FPGA SoC的推出,可把現有的分立微控制器和數字邏輯功能集成到一個多核器件中。這減小了功耗和體積,而主要難點之一是在一個器件中同時實現安全關鍵和非安全關鍵軟件單元。本文網絡版地址:http://www.eepw.com.cn/article/164382.htm
關鍵詞:ARM;TrustZone;安全;FPGA
DOI: 10.3969/j.issn.1005-5517.2013.9.003
隨著ARM Cortex-A9多處理器和FPGA SoC的推出,很多開發人員看到了合并現有系統的機會,這通過將分立微控制器(MCU)和數字邏輯集成到一個多核器件中來實現。最大的好處是減小了功耗和體積,而一個主要難點是在一個器件中同時實現安全關鍵和非安全關鍵軟件單元。圖1顯示了使用三個分立器件實現的一個典型電機控制系統。系統有一個非安全網絡/用戶接口處理器,一個電機控制監控微控制器和一片用于實現硬核實時電機控制器的FPGA。圖1中的陰影部分含有設計的安全關鍵單元,需要通過外部權威機構進行安全認證。
把一個電機控制系統合并到SoC中,支持使用一個器件來實現信號處理、監控和通信等應用。Altera的28 nm Cyclone V SoC便是適用于這方面應用的一個器件實例。它具有低功耗FPGA架構和硬核處理器系統(HPS),含有ARM Cortex-A9雙處理器內核和外設。HPS包括對ARM TrustZone技術的支持;這也可以延伸到FPGA架構中。
ARM的TrustZone技術支持把多核系統劃分成關鍵系統資源運行的安全的環境和其他系統資源運行的非安全環境。因此,TrustZone隔離系統的關鍵部分只能在安全環境下訪問這些部分;其基礎是Cortex-A9 MPCore硬件和AMBA AXI3總線標準。在TrustZone支持系統中,每一AXI會話包括一個非安全(NS)比特,用于表示此次會話來自非安全還是安全環境。每次會話利用這一信息,系統中的從機可以選擇根據其TrustZone狀態進行響應。例如,處于安全模式的一個系統復位控制器只響應來自安全環境的復位申請,忽略非安全環境的響應,否則會產生錯誤。這一方法可以延伸到系統中的所有從機,在SoC器件中提供一個安全環境子系統。這一安全子系統與非安全環境隔離,可以用于運行可信軟件,或者,在我們的安全軟件中,不會受到流氓軟件的危害,也不會受到來自系統非安全部分AXI會話的影響。安全檢查器可以接受這類保護。
每一Cortex-A9處理器都有自己的獨立L1高速緩存,獲取指令和數據,還有一個獨立的定時器/看門狗模塊。處理器共享L2高速緩存、通用中斷控制器(GIC)以及探測控制單元(SCU)。GIC管理優先級、中斷和MPCore處理器的連接??梢詫⑵渑渲脼檫B接每一中斷和某一內核,還可以為每一中斷分配一個TrustZone狀態。
可以把L2高速緩存配置為以很多不同的方式進行工作。在我們的例子中,L2配置寄存器被設置為只能從安全主機進行寫操作,意味著,Linux不能修改L2高速緩存配置,除非它通過安全狀態監視器來訪問寄存器。主機將L2高速緩存分開,兩個分配給μC/ OS-II,六個分配給Linux內核。μC/ OS-II內核分配了1Mb的DDR、UART1以及FPGA中的所有外設。所有其他資源都分配給Linux內核。
Linux內核能夠管理ARM處理器的存儲器管理單元,而μC/OS-II不能,因此,修改μC/OS-II BSP代碼以便在啟動期間建立靜態頁面表。分配給μC/OS-II的資源被放置在頁面表中,μC/OS-II被配置為只使用這一存儲器映射。對于Linux,描述系統的器件樹(在啟動時傳遞給內核)不包括分配給μC/OS-II的存儲器或者外設參考。
SoC的啟動是一個三級過程。第一級涉及到片內啟動ROM,完成內核0的最小配置,使能外部非易失存儲器。在這一存儲器中,它找到并驗證裝入到片內RAM中的“預裝入”軟件鏡像,用于配置SDRAM和SoC器件的外設I/O。器件初始化完成后,預裝入程序裝入并執行第二級啟動加載程序(例如,U-boot)。第二級啟動加載程序負責裝入并執行最終的OS。我們的AMP系統還有其他的要求,例如,把兩個獨立的操作系統裝入到存儲器中,在SoC中配置TrustZone安全選項等。內核1、UART1、看門狗定時器1中的本地定時器/看門狗外設以及μC/ OS-II使用的中斷被配置為安全,因此,只能由μC/OS-II進行訪問。所有其他外設和中斷被配置為非安全。完成這一工作后,代碼啟動內核1運行μC/OS-II,然后在內核0上啟動運行Linux。
使用這一例子中描述的方法,設計人員受益于Altera SoC帶來的器件合并優勢,同時滿足了安全關鍵應用嚴格的(TrustZone/硬件要求)軟件分離要求。
參考文獻:
[1]SoC FPGA ARM Cortex-A9 MPCore Processor Advance Information Brief[R/OL].http://www.altera.com.cn/literature/ hb/soc-fpga/aib-01020-soc-fpga-cortex-a9-processor. pdf
[2]Functional Description—HPS Memory Controller[R/OL]. http://www.altera.com.cn/literature/hb/external-memory/ emi_fd_controller_HPS.pdf
[3]Cortex-A9 Microprocessor Unit Subsystem[R/OL].http:// www.altera.com.cn/literature/hb/arria-v/av_54006.pdf