【Zynq UltraScale+ MPSoC解密學習7】Zynq UltraScale+的MPU

目錄

一、簡單介紹

1.1 概念

1.2 總覽

二、PMU功能

2.1 PMU處理器

2.2 PMU處理器接口

2.3 PMU時鐘

2.4 PMU復位

2.5 PMU RAM

2.6 PMU ROM

2.7 MBIST功能

2.8 Scan清除功能

2.9 PMU Interconnect

2.10 PMU I/O寄存器

 2.11 PMU全局寄存器

2.12 GPIs和GPOs

2.13 PITs

2.14 PMU中斷

2.15 PMU的錯誤處理和自救邏輯


一、簡單介紹

1.1 概念

PMU,platform measurement unit,平臺管理單元。
很多人會將它當做power measurement unit(電源管理單元)的縮寫,認爲就是管理電源和功耗的。其實PMU除了電源管理功能,還具有其他功能。官方描述如下:
    系統啓動前的初始化
    電源管理
    軟件測試庫執行(可選)
    系統錯誤處理

1.2 總覽

在電源管理章節裏,我們簡單介紹了Zynq U+裏的4個功耗域。其中PMU模塊本身處在低功耗域,如下圖爲PMU的模塊框圖:
 
PMU包括以下子組件:
    專用的、容錯率高的三模冗餘處理器
    ROM中會存放PMU ROM代碼,功能包括PMU的啓動順序、處理電源開關請求的例程和中斷
    用於存放代碼和數據的帶ECC功能的128kb內存
    只能被PMU訪問的PMU本地寄存器
    可以被PMU處理器和系統裏其他總線的master口訪問的PMU全局寄存器。包括所有電源、隔離和復位請求寄存器。還包括錯誤捕獲寄存器和系統電源狀態寄存器。
    PMU外部的master接口可以通過32位的AXI slave接口訪問PMU的RAM和全局寄存器。
    PMU中斷控制器管理了PMU的23箇中斷,其中四個來自處理器間的互連(IPI)
    PMU/MIO/PL相連的GPI和GPO寄存器接口,以及其他PS和PMU的互聯信號:
      1) 6個輸出,6個輸入
      2) PMU端有32個GPO輸出到PL,PL端有32個GPI輸入到PMU
      3) 47個系統錯誤到PMU
      4) CSU的錯誤碼
      5) 32個MBIST狀態信號和32個MBIST完成信號
      6) 3個直接復位控制信號
      7) 4個AIB狀態信號和4個AIB控制信號
      8) 11個邏輯清除狀態信號
      9) DDR保持控制信號
      10) 3個從PL端到CSU的可編程配置信號
    可以通過PSJTAG接口訪問使用PS TAP控制器的PMU MDM控制器


二、PMU功能

2.1 PMU處理器

PMU處理器是一個不帶cache的三模冗餘處理器。處理系統通過在PMU上應用冗餘和在RAM側應用ECC來提供容錯能力。
下圖爲PMU處理器的實現功能(實際主要是一個MicroBlaze核)。

2.2 PMU處理器接口

PMU提供輸入和輸出信號,這些信號按功能可以分組如下:
    32位的AXI master接口和低功耗域(LPD)互連,允許PMU訪問其他PS資源,包括SLCR寄存器和IPI塊
    通過LPD inbound switch的32位AXI slave接口,允許外部處理器訪問PMU全局寄存器和PMU RAM
    PMU時鐘和復位信號。
    和PS內所有islands相連的電源控制接口:
    1) L2、OCM和TCM RAMs
    2) APU_Cores[3:0]
    3) 雙核Cortex®-R5實時處理器
    4) USB0、USB1
    5) GPU像素處理器PP0和PP1
    6)全功率域和PL功率域的crossing bridges

2.3 PMU時鐘

PMU工作在SysOsc時鐘(180 MHz±15%),該時鐘由位於系統監視器(PS SYSMON)模塊內的內部環形振盪器(IRO)提供。時鐘一直被門控着直到POR模塊檢測到VCC_PSAUX升高。一旦電壓達到閾值,SysOsc便開始振盪工作。同時,PMU的處理器也跟着復位。復位需要一個時鐘沿的觸發,等到電壓升高,POR_B輸入也會跟着起來。這保證了PMU處理器GPOs在器件上電後能夠初始化。

2.4 PMU復位

PMU有兩個復位,POR復位和系統復位SRST,這兩個復位都來自於芯片的復位模塊。
POR復位可以完全清除PMU狀態,保證所有的電源域上電和所有的隔離被禁用。POR復位後,PMU在低功耗和全功耗域執行scan和BIST清除功能。
另一方面,SRST只能復位PMU處理器子系統、PMU互連以及局部和全局寄存器的一個子集,而將大多數局部和全局寄存器保留在復位之前的狀態。當通過SRST觸發PMU重啓時,將不會清除電源狀態,PS的電源狀態會被保留。
如果是直接上下電覆位,將清除所有RAMs和FIFO電源狀態。

2.5 PMU RAM

PMU的很多功能是由PMU處理器執行的軟件提供的。ROM內存包含提供默認功能的指令。用戶如果要擴展或替換這些功能,或者提供新功能,可以將軟件下載到PMU處理器的128kb RAM中。PMU包括一個128kb的RAM和32位的ECC,用於保存數據和代碼。PMU RAM可由PMU處理器和外部master接口通過PMU slave接口去訪問。
寫PMU RAM時,只支持以word爲單位,也就是4byte,不支持byte爲單位。如果寫入的數據少於4個byte,那麼必須先讀取、修改這4byte,然後將整個4byte數據寫回。
外部master通過APB接口訪問PMU RAM時PMU處理器必須處於休眠模式。如果PMU處理器沒有處於休眠狀態時訪問,PMU RAM將掛起系統。

2.6 PMU ROM

PMU內有一塊ROM空間,包含PMU的引導代碼、中斷向量和PMU可以執行的服務例程(根據請求執行)。PMU ROM負責PMU中的各種功能,以下是ROM代碼可以執行的任務列表:
1) Pre-boot任務
    清除PMU RAM空間
    使能系統監控器,檢查低功耗域是否供電
    根據初始化設置配置PLL時鐘
    觸發和排序必要的scan和PS的BIST清除
    釋放CSU復位
2) Post-boot任務
    PS內的功耗域上下電
    使能和控制BISR(內置的自修復功能)
    當要求或作爲主電源的一部分時,充當復位模塊
3) 根據要求執行固件代碼

2.7 MBIST功能

MBIST,memory built-in self test,存儲器內部自測試。
ROM代碼可以在除去PMU外的LP域或整個FP域上啓動MBIST clear操作。當使用MBIST測試或清除內存時,系統的其餘部分可以正常工作。
在用戶可以通過配置MBIST_RST、MBIST_PG_EN和MBIST_SETUP寄存器來啓動該特定塊上的MBIST進程。MBIST_DONE位被用來指示進程是否已經完成,MBIST_GOOD用來指示進程狀態,0表示失敗1表示成功。
關於MBIST模塊的具體功能,這裏不做過多描述和解析,可以參考ug1087相關文檔,以後有機會也可以單獨開章節學習。

2.8 Scan清除功能

歸零化過程中,所有的存儲元素都要移位歸零,然後再驗證該操作是否正確。這是由MBIST和scan清除功能實現的。scan清除引擎只能由PMU和CSU處理器通過直接接口進行控制,其他處理器如果要請求啓動任何特定的can清除引擎都必須通過SCAN_CLR_REQ寄存器。當scan清除引擎啓動時,來自引擎的完成狀態信號從1變成0,這個信號直接路由到PMU的LOGCLR_ACK寄存器,將引擎的完成狀態傳遞給PMU。當一個scan清除引擎完成它的操作時,它的完成狀態位從0變成1,生成一個到PMU的中斷信號。清除操作是否成功可以通過PMU LOGCLR_STATUS全局寄存器中的位來檢查。

2.9 PMU Interconnect

PMU包含一個2*3的互連,支持2個AXI master,2個APB slave和1個AXI slave。
2個AXI master口中,其中一個是32bit,來自三模冗餘處理器;另外一個master口來自低功耗電源域的主互連,該接口允許系統中的任何主機訪問PMU從機。
2個APB slave口是PMU RAM和PMU全局寄存器文件。
1個AXI slave口在路由到LPD交換機的端口上,只允許被PMU處理器發起訪問。

2.10 PMU I/O寄存器

PMU IO寄存器包括所有和中斷、GPI/GPO以及可編程間隔計時器PITs相關的寄存器。PMU_IOMODULE寄存器控制中斷控制器、GPI{0:3}、GPO{0-3}和PIT0-PIT3。PMU_GLOBAL寄存器使能系統處理器來控制中斷並觸發PMU服務請求。PMU處理器的Memory空間如下表:

 2.11 PMU全局寄存器

全局寄存器集包括用作PMU和其他塊之間的通信手段的寄存器,以同步有關電源/系統管理和復位的活動。

2.12 GPIs和GPOs

PMU處理器包括4個本地的GPI banks和4個GPO banks。其中,GPI0和GPO0保留給專用的PMU處理器子系統特性,GPI3和GPO3保留給和PL的通信。GPI1、GPI2、GPO1和GPO2用於PS硬件特性與PMU之間的通信。具體的寄存器描述這邊不做深入研究,大家可以看看ug1085。

2.13 PITs

PMU處理器包括4個32bit的可編程間隔計時器PITs。PITs的時鐘源是PMU的固定系統振盪器SysOsc。這些是通用計時器,用於作爲延遲計數器或事件調度,可以通過GPO0配置。

2.14 PMU中斷

當PMU處理器接收到一箇中斷時,它會分流到PMU的ROM,ROM代碼必須在PMU I/O模塊的中斷控制器中檢查正在掛起的中斷寄存器並分流到ROM或RAM對應的中斷服務例程裏。掛起中斷之間的優先級可以由PMU固件強制執行,如果不存在,則由ROM來管理優先級。

2.15 PMU的錯誤處理和自救邏輯

PMU對每個錯誤負責獲取、上報並採取合適的處理。每個系統錯誤都定義在PMU_GLOBAL錯誤狀態寄存器中。PMU還包括處理此功能所需的寄存器、邏輯和接口。
具體如何處理和自救,這裏先不詳細描述,可以參考ug1085。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章