当前位置: 首页 > news >正文

ACPI PM Timer

ACPI PM Timer

概述: ACPI PM Timer是一个非常简单的计时器,它以 3.579545 MHz 运行,在计数器溢出时生成系统控制中断(SCI)。它精度较低,建议使用其他定时器,如HPET或APIC定时器。

检测ACPI PM Timer

关键概念:

  • RSDP(Root System Description Pointer):是一个指向ACPI系统表(如RSDT或XSDT)的指针。它位于系统内存的一个固定位置,操作系统会在启动时查找这个指针,以便访问ACPI表。RSDP在大多数情况下存储在系统的低地址区域(如BIOS固件中)
  • RSDT(Root System Descirption Table):是一个包含指向其他ACPI表的指针的ACPI表,它提供了系统固件中定义的所有ACPI结构的入口。
  • XSDT(Extended System Description Table):是RSDT的扩展,用于支持64位系统。于RSDT使用32指针不同,XSDT使用64位指针,可以支持更多的表
  • FADT(Fixed ACPI Description Table):是ACPI表之一,包含固定的ACPI信息,如电源管理、配置等内容,它描述了系统硬件的一些基本信息,并提供了与电源管理和系统管理相关的接口。

如何查找:

通过RSDP指针以获取RSDT或XSDT,然后找到FADT。一旦找到了FADT,需要检查PMTimerLength字段是否为4,如果不是,则必须假定该计时器不可用。然后,如果ACPI的版本为2或更高,并且X_PMTimerBlock通用地址结构可用(检测地址不为0),则使用它,否则,将PMTimerBlock用作IO端口。

24位和32位模式

ACPI PM Timer支持24位和32位计数器。如果FADA标志的第8位被设置,则计数器位32位。

读取counter值

使用的是X_PMTimerBlock:

  • 检查地址在哪个空间地址中
    • 如果是MMIO(内存映射I/O):将地址映射到虚拟内存中,并从中读取无符号32位整数counter值
    • 如果是IO(端口I/O):从I/O端口读取无符号32位整数counter值

使用的是PM_Timer:

  • 直接从I/O端口读取无符号32位整数counter值

counter值

描述
0:23计数器的24位
24:31如果计数器是32位的,则为计数器的高8位。如果计数器是24位的,则为0.

中断请求

ACPI PM Timer在计数器溢出时会触发一个系统控制中断(SCI)。

参考

  • ACPI Timer - OSDev Wiki
http://www.lryc.cn/news/511683.html

相关文章:

  • Linux 和设备树
  • Qt仿音乐播放器:QFileDialog添加本地文件
  • Odoo 引用字段 fields.Reference:动态关系的选择器
  • Android笔试面试题AI答之Android基础(6)
  • C# 中的记录类型简介 【代码之美系列】
  • 利用Java爬虫速卖通按关键字搜索AliExpress商品
  • gitlab runner 实现 微信小程序自动化部署
  • Playwright爬虫xpath获取技巧
  • 总结TCP/IP四层模型
  • netcat和nmap的区别
  • MinIO服务器文件复制(Windows环境Linux环境)
  • 【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用
  • 无监督学习算法
  • 【Compose multiplatform教程17】【组件】BoxWithConstraints组件
  • 银河麒麟操作系统安装达梦数据库(超详细)
  • Spring源码_05_IOC容器启动细节
  • 科大讯飞在线语音合成(流式版)python版
  • 常见搜索算法汇总
  • vue 中 ref 详解
  • 探索开源项目 kernel:技术的基石与无限可能
  • C 实现植物大战僵尸(二)
  • Vivado - TCL 命令(DPU脚本、v++命令、impl策略)
  • 【JDBC】数据库连接的艺术:深入解析数据库连接池、Apache-DBUtils与BasicDAO
  • hadoop-common的下载位置分享
  • 【机器学习】SVM支持向量机(一)
  • Spring Boot介绍、入门案例、环境准备、POM文件解读
  • 基于Spring Boot + Vue3实现的在线商品竞拍管理系统源码+文档
  • LeetCode--排序算法(堆排序、归并排序、快速排序)
  • 华诺星空 Java 开发工程师笔试题 - 解析
  • QT:一个TCP客户端自动连接的测试模型