ARMV8 datasheet學習筆記4:AArch64系統級體系結構之Generic timer


1.前言

2.generate timer

2.1 概述

  1. 提供了一個系統計數器,用來實時測量流逝的時間;
  2. 提供了一個虛擬計數器,用來測量某個虛擬機上流逝的虛擬時間;
  3. 定時器,每隔一段時間會觸發事件,支持正向計時和倒計時;
  4. 通用timer實現必須包含一個內存映射的系統組件:提供system counter;

 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. 規格

(1)       Width:至少56bit;

(2)       頻率:支持固定頻率,典型是1-50MHZ;

(3)       ROLL-OVER:翻轉時間不少於40 years;

(4)       Accuracy:未指定,24小時不多於10S;

(5)       Start-up:從0開始。

  1. System counter一旦配置並運行,必須提供統一的 system time view;
  2. System counter電源域必須常開;
  3. 為了支持低功耗,低頻率可以一個時鍾累加一個比1大的數;

初始化並讀取system counter頻率

系統啟動階段,初始化system counter的時鍾;

 

System counter的內存映射控制

需要通過內存映射(ioremap??)的方式對system counter進行控制:

  1. 使能和禁用計數器;
  2. 設置計數器的值;
  3. 改變操作模式,更新頻率或步長值;
  4. 使能halt-on-debug,可以用來suspend counting.

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則實現的定時器有:

  1. EL1物理定時器;
  2. Non-secure EL2物理定時器;
  3. Secure EL3物理定時器;

 

timer的輸出

  1. 提供一個輸出信號給sysem;
  2. 如果PE連到GIC,會想PE發送PPI信號

Timer regs

  1. 一個64bit compare值寄存器,提供了64bit無符加計數器;
  2. 一個32bit timer寄存器,提供了32bit有符號減計數器;
  3. 一個32bit control寄存器

 

4. 參考文檔

[1] DDI0487A_k_armv8_arm_iss10775.pdf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM