BIOS备忘录之ASL code常用知识点
_HID:device唯一
_STA:决定device在不在(在DM下面能不能看到)
_CRS:描述分配给device的资源
_INI:在OSPM加载描述表的时候运行一次(比如,如果要根据不同情况给device赋值不同的_HID,可以把代码加在这里)
BIOS code与ASL code之间传递数据
通过ASL code定义的OperationRegion,OperationRegion实例:
1. BIOS code里面定义了一个结构体,ASL code里面定义了一个OperationRegion,两者的数据元素定义是一一对应的;
2. BIOS初始化的时候会初始化结构体(初值的来源:通过PCD设置 / 在code里面设置 / 在setup page里面设置)并把它存放到EfiACPIMemoryNVS 空间:
3. ASL code访问对应的数据元素就能获取BIOS code里面传过来的数据
EC与EC ASL code之间传递数据
1. EC ASL code里面定义OperationRegion:
EC ASL code的OperationRegion的数据元素定义与EC code(EC RAM Space)里面的定义要一一对应(如下:在OS下通过EC tool查看EC RAM 400的空间与用RW查看EC空间(62/66)看到的内容是一样的)
2. EC的ASL code申请资源:
通过上面的资源申请,OSPM就知道要通过62/66来访问EC RAM SPACE的数据(port66就是EC_SC,port62就是EC_DATA):
下面的code获取EC RAM SPACE offset02的值(OSPM实际上也就是通过如下的操作来获取整个EC RAM SPACE的):
offset A9的位置写0x01
Q event
首先硬件上EC_SCI# 信号要连接到PCH(下图初始化代码表示使用的是PCH的GPP_E16)
当有Q event的事件发生时,EC通过WriteSCI_Buffer(QValue)把事件对应的Q event值汇报给OSPM,然后由OSPM调用对应的Method(_Qxx)
device与driver
下图定义了一个最简单的device,driver通过匹配"ZHUH1000"就能安装
如何判断driver是否被加载?
在device的_DSM里面写某个值,EC看到这个值就知道这个device的driver被安装了。
ASL code的debug
安装Windows SDK,debug工具位于:/C/program files(x86)/windows kits/10/debugger/平台/windbg.exe
具体操作参考:BIOS之通过Windbg来追踪ASL code的运行
WMI
参考BIOS大神的文章:[原创]BIOS知识点滴Follow Bini系列之---WMI ACPI :http://www.ufoit.com/thread-420-1-1.html
_HID:PNP0C14
_WDG:包含对xx的定义
_WQxx:MOF data,包含class的定义,这些二进制数据一般是build的时候生成的
_WMxx:Method
OS下调用WMI method的脚本:.vbs 下图显示的脚本会调用method WMGF,参数为196863(通常来说method会通过触发SMI来调用BIOS)
G Event
The ACPI event programming mode is based on the SCI interrupt and General-Purpose Event(GPE) register.
比如定义USB20/USB30 port支持唤醒系统:定义_PRW;下图定义了USB20/USB30 port对应的L Event number以及支持唤醒的sleep state
下图显示的是在Scope(\_GPE)里面定义的处理L Event的method(2表示唤醒系统)
关于Notify通知值的说明:
D3
设置device支持在S0 idle时进D3(前提是device支持D3)
USB Setting(_UPC _PLD)
...待...
UCSI
ASL code里面定义的Operation Region:(EC里面也定义了相同的数据结构)
调节LCD亮度 _BCL _BCM
_BCL:支持的亮度控制等级
_BCM:设置亮度等级,如果实现了_BCL,那么_BCM必须也要实现
问题举例:OS下切换最亮与次亮的时候闪屏(其他亮度之间切换没问题)
验证:切到最亮的时候不让level达到100(把_BCL的最高值100改成99),没复制到闪屏
BIOS备忘录之ASL code常用知识点的更多相关文章
- 装机备忘录:VS Code 常用插件
VS Code 常用插件推荐 1.基本的代码补全 2.git 扩展工具,可以看到代码的每一行 是谁修改?什么时候修改? 修改的版本号? 修改的注释? 非常好的一个工具 3.括号颜色改变工具,可以改变括 ...
- BIOS备忘录之IIC(touchpad)设备
简述BIOS中对IIC device的支持,以touchpad为例. 信息收集 收集平台的硬件信息: 1. IIC controller number(PCH一般包含多个controller,我们使用 ...
- BIOS备忘录之EC常用知识点
BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...
- BIOS备忘录之通过Windbg来追踪ASL code的运行
通过Windbg来追踪ASL code的运行: 目标机的配置: 第一步: 在BIOS Setup下面 disable secure boot(不然下面debug on 命令会失败):关闭防火墙. 第二 ...
- HTML常用知识点代码演示
1 HTML部分常用知识点 <!-- 版本声明 --> <!DOCTYPE html> <!-- 唯一根元素 --> <html> <!-- 对网 ...
- javaScript常用知识点有哪些
javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...
- DB2_SQL_常用知识点&实践
DB2_SQL_常用知识点&实践 一.删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快 ...
- vscode: Visual Studio Code 常用快捷键
vscode: Visual Studio Code 常用快捷键 主命令框 F1 或 Ctrl+Shift+P: 打开命令面板.在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace ...
- 【转】vscode: Visual Studio Code 常用快捷键
原文链接:https://www.cnblogs.com/bindong/p/6045957.html vscode: Visual Studio Code 常用快捷键 主命令框 F1 或 Ctrl+ ...
随机推荐
- 盘点 React 16.0 ~ 16.5 主要更新及其应用
目录 0. 生命周期函数的更新 1. 全新的 Content API 2. React Strict Mode 3. Portal 4. Refs 5. Fragment 6. 其他 7. 总结 生命 ...
- nginx 报错 connect() failed (111: Connection refused) while connecting to upstream
公司网站搬迁到新服务器后,发现站点访问不了,network里面提示502,查看相关的server配置,感觉没有什么问题,经过测试发现txt.html.等非php文件能够直接访问,也就是php访问不了, ...
- VUE组件的学习
参考:https://blog.csdn.net/baidu_23142899/article/details/79130225
- windows 安装 Apache、php、mysql及其配置(转载)
此文包括的注意内容:软件版本及下载地址Apache2.4的配置和安装php7.0的配置mysql5.5的安装常见问题及解决方法1.软件版本Windows server 2008 r2+ 64位Apac ...
- js中级小知识2
1.面向对象 js一开始就是写网页特效,面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差.所以作者就收到java和c的影响,往面向对象靠齐.js天生有一个Objec ...
- td使用word-break: break-all;强制换行无效的解决
今天发现表格内容不换行,加了word-break: break-all;也没有效果,后来检查发现用户编辑的html内容包含了CSS,其中有一项: td {padding-top:1px;padding ...
- 脚本一键部署lnmp
[root@ycj ~]# wget -c http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz && tar zxf lnmp1.1-full ...
- I2C写时序图[转]
1. I2C写时序图: 注意:最后一个byte后,结束标志在第十个CLK上升沿之后: 2. I2C读时序图: 注意:restart信号格式:读操作结束前最后一组clk的最后一个上升沿,主机应发送NAC ...
- RNN Train和Test Mismatch
李宏毅深度学习 https://www.bilibili.com/video/av9770302/?p=8 在看RNN的时候,你是不是也会觉得有些奇怪, Train的过程中, 是把训练集中的结果作为下 ...
- Python cffi学习(二)
上篇文章中讲到Python中调用外部c文件可以有两种方法,一是使用cffi.verify()的形式使用,但是该种方式仍然需要进行函数声明.二是将外部c文件编译成为函数库,然后通过cffi进行使用. 由 ...