ACPI知识学习笔记
ACPI table之FACP(Fixed ACPI Description Table).
在代码里面:Resources\AcpiTables\Fadt\Fadt3.0.act 定义了EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE Fadt.
列举出比较重要且常用的几项:
INT_MODEL, //System Interrupt ModelSCI_INT_VECTOR, //System Vector of SCI interruptSMI_CMD_IO_PORT, //Port Address of SMI command portACPI_ENABLE, //Value to write to port SMI_CMD to enable ACPIACPI_DISABLE, //Value to write to port SMI_CMD to disable ACPI
这些items会在AcpiPlatform.h中定义:
#define INT_MODEL 0x01#define SCI_INT_VECTOR 0x0009#define SMI_CMD_IO_PORT 0x00B0 //For AMD #define ACPI_ENABLE 0xA0#define ACPI_DISABLE 0xA1
如果研究ACPI的规范,就会发现,当ACPI_EN起来,系统就会发SCI而不是SMI。那为什么?具体的流程是什么样子的?
其实,让ACPI ENABLE起来的动作是最后一号SMI来做的。通过向B0 端口下0xA0,就会调用到一个SMI的Callback function,这个函数最后把SCI enable。
接着又有一个问题,SCI的产生,OS是怎么知道的呢?CPU怎么会去执行SCI呢?
插入一个概念,当一个SMI发出来,CPU上的一个关于SMI的pin会被触发,CPU会进入SMM。而SCI其实是通过配置成APIC,产生IRQ。我的理解是,在上面所述的Callback函数里面,会将SCI对应到IRQ 9。之后SCI INT的信息就被存在ACPI FADT table里面,即定义的SCI_INT_VECTOR。这样OS就可以通过FADT获得SCI所使用的中断号码,这样就能在SCI产生时处理该中断。
这里插入一段我对Qxx的大概理解:
当AC IN/OUT, LID CLOSE/OPEN, HOTKEY PRESS等事件发生时,KBC/EC会侦测到。随即,它会触发南桥的EC_SCI pin(这边可以解释为什么OS知道这是EC发出的SCI),南桥就会触发一个SCI,OS会收到这个SCI,并且去查询Qxx的number(通过向EC下达84h命令,读取EC RAM某个地方的value,这个value就是number),最后asl code会调用相关的Qxx执行。
转载于:https://www.cnblogs.com/cffx-chu/archive/2011/08/09/2132119.html
ACPI知识学习笔记相关推荐
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
- Python 基础知识学习笔记——OpenCV(1)
Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...
- Python基础知识学习笔记——Matplotlib绘图
Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...
- python基础知识学习笔记(2)
python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...
- python基础知识学习笔记(1)
python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...
- oracle数据库基础知识总结,oracle数据库基础知识学习笔记
oracle数据库基础知识学习笔记 一.oracle数据库类型: Char: 字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...
- Python基础知识学习笔记(一)
Python基础知识学习笔记(一) 文章目录 Python基础知识学习笔记(一) (一) 认识python 1.注释 2.变量及类型 3.关键字(标识符) (1)什么是关键字? (2)查看关键字 (3 ...
- opencv-python基础知识学习笔记
opencv-python基础知识学习笔记 原博地址:https://www.cnblogs.com/silence-cho/p/10926248.html 目录: opencv-python基础知识 ...
- 图像基础知识学习笔记
图像基础知识学习笔记 文章目录 图像基础知识学习笔记 前言 一.图像基础知识相关笔记 1.光学系统影响图像的结构主要包括什么? 2.常见噪声都有什么,其分类,及特点? 3.光圈,快门,景深? 4. I ...
最新文章
- Java设计模式:设计模式基础知识和原则
- 2017《面向对象程序设计》作业四
- 手动写sonar plugin 一直File is not a plugin.
- Arduino 各种模块篇 DHT11 温度湿度 数字模块 单总线
- Redis与MySQL的双剑合璧,一文读懂redis
- EJB3.0学习笔记---JBOSS 7.1.1 Final版本安装与配置
- 三.Python函数
- python 新建一列_python – 如何在迭代pandas数据框时创建新列并插入行值
- centos7 go yum 安装_Centos7.6从头开始安装nvidiadocker
- 双控是指控制理论与控制工程,是二级学科,控制科学与工程是一级学科。
- XP重装后磁盘拒绝访问和无法访问加密文件夹
- 运动神经元病是怎么回事?
- 手机云台——灵眸Osmo Mobile 2
- OSGearth学习(一)
- OOM以及垃圾收集器
- 苹果签名市场变天,频繁封杀到底是什么原因?
- [梆梆安全]游戏广告条被篡改原理和APK加固保护方法
- 不要以抄底的心态去投资
- CentOS 7 64bit下安装并初始化mysql 5.7 完整过程
- 医学图像领域,是时候用视觉Transformer替代CNN了吗?
热门文章
- python3.4 pip安装_python3.4的pycurl pip安装
- visio调整形状位置_VISIO绘图技巧—三相桥式全控整流电路绘制
- spring boot2.x设置session有效时间_Spring 源码解析 Scopes 之 Request 、Session 、Application...
- python数据结构-栈和队列的实现
- 百度指数可视化_可视化指数
- 你不知道的 Node.js 工具函数
- 每次新增页面复制粘贴?100多行源码的 element-ui 的新增组件功能教你解愁
- Ubuntu 16.04使用timedatectl进行管理时间(UTC/CST)(服务器/桌面)
- 电信运营商x86服务器定制策略
- lnmp_auto:自动化安装lnmp环境脚本