[trustzone]-TZC400学习总结
★★★ 個人博客導讀首頁—點擊此處 ★★★
文章目錄
- 1、系統架構圖
- 2、tzc400的硬件框圖
- 3、FPIDs and NSAIDs
- 4、region setup
- 5、NSAID
思考:
如果硬件是這種連接cpu–>tzc–>dmc–>ddr, 那么配置某塊region對cpu的nsaid權限后,cpu再次讀寫該region范圍的內存時,cache中已經緩存了該數據,那么這個數據流在cache中就完成了,不會經過TZC,那么是怎么保證安全的呢?
1、系統架構圖
我們先看一張系統架構圖,了解一下TZC400的作用或位置,其實就是下core和DDR(DMC)之間,添加了一個TAC, 其作用其實就是memory Filter。
2、tzc400的硬件框圖
從圖中可以看出
- apb接口 : 用于cpu讀寫tzc-400的寄存器;
- ACE-Lite接口 : TZC400的通過ACE-Lite接口接到Master和DDR中間,
對Master訪問DDR進行filter控制 : 一塊TZC400支持0-x個filter,x一般是1、2、3 - 也就是說,tzc400中,有一個control unit單元、x個filter unix單元;
- 一個TZC400,支持9個region(包含region0)
那么最多支持4個Filter和最多支持9個region, Filter和Region到底是什么關系呢?
什么關系都不是!!!
Filter就是Filter,Region就是Region,無論您是幾個Filter,一個TZC最多只支持9個region。
因為有著不同類型的Master,都需要連接到TZC上,所以才需要的多個Filter。 如下圖所示便有一個示例:
- Core和GPC 通過ACE接口與Filter0相連
- DMA/LCD 通過AXI接口與Filter1相連
3、FPIDs and NSAIDs
對應每一個filter unit, TZC400提供了兩種identity path :FPIDs和NSAIDs
- Fast Path IDentity
- Non-secure Access IDentity
4、region setup
Region 0 永遠是enable的,整塊DDR中未設置region的區域,都屬于region 0.
建立一塊region,需要配置:Top address、Base address、Region enables、Secure access permissions、Non-secure ID filtering
region的overlap規則:
- 不在Regionx(x=1-8)范圍內的地址,屬于region0
- 在同一個Filter中,Regionx(x=1-8)不能有互相覆蓋的情況,
如果進行了overlap的配置,那么當訪問該地址時,將產生一個中斷,暗示 overlapping access - 不同Filter中的Regionx(x=1-8)可以相互overlap
secure access permissions的權限參見 region_attributes寄存器
nsaid權限訪問的路由規則 : 先檢查Master的身份,若是secure發起的訪問,則去檢查Secure access permissions, 如果是non-secure發起的訪問,則取檢查nsaid權限
5、NSAID
對于Non-Secure的訪問,NSAID從何而來?
其實如果是Non-Secure發起的訪問(NSAccess_Identifiers為True),那么AWNSAID 和 ARNSAID的接口就必需提供.
- 如果Master支持nsaid,那么它會自動提供AWNSAID 或ARNSAID,
- 如果Master不支持nsaid,那么可以在SOC設計的時候,在系統寄存器種增加NSAID標志位,該Master發起讀寫時,則自動傳送相關NSAID value
如下是AMBA-AXI總線協議中nsaid相關的bit位
與之對應的TZC400接口,每個Filter都有NSAIDR0[3:0]、NSAIDW0[3:0]、NSAIDRx[3:0]、NSAIDWx[3:0]、
總結
以上是生活随笔為你收集整理的[trustzone]-TZC400学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python常用指令速查
- 下一篇: [reference]-ARM/TEE/