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