1.前言
2.generate timer
2.1 概述
|
2.2 完整的generic timer組件
- System counter
- Generic timer的PE實現
(1)一個物理的counter,它訪問system counter的計數值;
(2)一個虛擬的counter,它訪問虛擬時間;
(3)一組timers,所有的異常級別都實現了一個timer:
EL1物理timer;
EL2物理timer;
EL3物理timer;
虛擬timer
- Generic timer系統級的內存映射實現
(1)內存映射的counter模塊(必須),控制了system counter;
(2)內存映射的timer模塊(必須),控制system timer;
(3)內存映射的timers(可選)
2.3 System Counter
概述 |
(1) Width:至少56bit; (2) 頻率:支持固定頻率,典型是1-50MHZ; (3) ROLL-OVER:翻轉時間不少於40 years; (4) Accuracy:未指定,24小時不多於10S; (5) Start-up:從0開始。
|
初始化並讀取system counter頻率 |
系統啟動階段,初始化system counter的時鍾;
|
System counter的內存映射控制 |
需要通過內存映射(ioremap??)的方式對system counter進行控制:
|
3. AArch64 generic timer
3.1 Physical counter(包含system connter的count值)
訪問physical counter |
通過訪問CNTPCT_EL0來獲取64bit物理count值 |
虛擬counter |
指示虛擬時間 |
事件流 |
通過system counter周期性的產生事件 |
3.2 多個定時器
實現的timers |
如果EL3使用AArch64則實現的定時器有:
|
timer的輸出 |
|
Timer regs |
|
4. 參考文檔
[1] DDI0487A_k_armv8_arm_iss10775.pdf