首页
关于我
Search
1
V4L2 sensor驱动中.s_ctrl() 自陷死锁问题排查全过程总结
20 阅读
2
阿明的个人博客站今日上线
12 阅读
3
AM5728绕过hpd信号,强制输出hdmi/dvi的设置方法
10 阅读
4
RK3588 SD启动卡系统备份
8 阅读
5
新站链接提交百度的方法
4 阅读
嵌入式软件
C/C++
Linux v4l2
RK3588
UEFI
AM5728
嵌入式硬件
网站建设
生活
其他
Search
标签搜索
v4l2
linux driver
sensor
website
RK3588
Linux
u-boot
spl
UEFI
Armin
累计撰写
6
篇文章
累计收到
2
条评论
首页
栏目
嵌入式软件
C/C++
Linux v4l2
RK3588
UEFI
AM5728
嵌入式硬件
网站建设
生活
其他
页面
关于我
搜索到
1
篇与
的结果
2026-03-27
在UEFI阶段处理ACPI表的主要流程
一、 ACPI 表的加载与更新流程整个过程可以概括为:静态读取 -> 动态修补 -> 正式交付。1.静态读取在 AcpiPlatformDxe 驱动启动时,它通过 ReadSection 函数从固件卷(FV)中读取预编译好的 AML 二进制数据(即 iasl 编译 asl 后的产物)。此时的表是 asl 源码的复制。3.动态修补在 AcpiPlatformDxe 驱动的 UpdateAcpiTable 函数中主要对Dsdt、Madt、Ssdt三个表进行了更新。其中对Dsdt的更新采用异步更新的方法,驱动调用了 EfiCreateProtocolNotifyEvent,它并不立即改表,而是等待 gPhytiumAllDriversConnectedProtocolGuid 信号。当所有驱动加载完毕,回调函数 UpdateAcpiRamAfterPciEnum 被触发。它通过以下方式获取硬件的真实状态:调用 GetVariable:从bios设置中获取配置调用 GetParameterInfo:从 Flash 的 Parameter 区块读取当前单板的专属配置(例如:这块板子是用 EC 还是 SE 管理电源)。最终使用 AmlFindNode 、 AmlDetachNode 、 AmlNameOpUpdateInteger,查找acpi表的相关节点,进行删除、更新操作。3.校验与交付修补完成后,重新计算 Checksum(校验和),最后通过 InstallAcpiTable 协议将表挂载到系统表中,等待操作系统接管。二、 硬件的双重描述在 UEFI 和 ACPI 的开发中,“双重描述”是指同一个硬件资源(地址、中断、偏移)必须在两个互不统属的地方分别定义。1.UEFI中,对硬件的描述主要在 .dsc 文件中的 PCD。主要给 UEFI 驱动用,决定了固件如何操作寄存器。2.ACPI中,对硬件的描述主要在 .asl 源码。主要给 OS 内核用,告诉操作系统硬件在哪里。
2026年03月27日
1 阅读
0 评论
0 点赞