特色

招聘信息(更新Ampere 职位 1月6日)

●2022年1月更新 Ampere Computing职位,具体要求可以在下面看到

●2021年11月更新 Intel Shenzhen职位,具体要求可以在下面看到

LCFC 的一些职位,具体可以在以下页面看到

● AMD BIOS 的一个职位,具体要求在以下页面:

https://www.lab-z.com/amd-bios/

● Ampere Computing 的一个职位 ,要求在以下页面可以看到:

[......]

阅读全文

TIPS: ACPIVIEW

之前krishna 在“UEFI Shell 下的 ACPI Dump工具”评论中提到过,EDK2 提供了内置的 ACPI COMMAND:ACPIVIEW,可以直接在 Shell 下查看 ACPI。最近在研究 ACPI 方面的内容,于是研究了一下这个 command 的使用。

在 EDK2 202108 的版本中, Shell 提供了2种访问这个工具的方法:

1.独立的 EFI 程序 ,源代码在 \ShellPkg\Application\AcpiViewApp

2.内置于 Shell 中的 acpiview 命令。现在无需手工添加,使用下面的命令编译 ShellPk[......]

阅读全文

Step to UEFI (242)写一个输出当前 IP 的函数

前面的文章中,我们写过输出当前IP 的代码,这次,我们要尝试将这个代码编写为C的函数方便我们调用。

因为 X64 无法内嵌汇编,我们值得参考其他的函数,用如下三步可以实现:

1. \MdePkg\Include\Library\BaseLib.h 中加入函数头定义

2. \MdePkg\Library\BaseLib\X64\CurrentRIP.nasm 加入我们的函数汇编实现

3. \MdePkg\Library\BaseLib\BaseLib.inf 加入上面的文件

接下来就可以使用这个函数了,比如,我们在\OvmfPkg\Sec\SecMain[......]

阅读全文

Micron 内存颗粒命名规则

在阅读Micron 内存颗粒的 DataSheet过程中经常碰到 -125e,-062e 这样的代码,起初我以为是JEDEC规定的代号,但是多次搜索无果,最近偶然间搞清楚了,这个是 Micron 家自己的命名。

以MT40A2G8SA-062E:F【参考1】为例,Datasheet中可以看到如下定义:

Timing -Cycle Time

  • 0.625ns@CL=22(DDR4-3200)  -062E
  • 0.682ns@CL=21(DDR4-2933)  -068

简单的说 -062 就是代表了 0.625ns,而0.6225=1秒/(1600Mhz),[......]

阅读全文

Step to UEFI (241)SecMain 中的 CONSTRUCTOR

在 SecCoreStartupWithStack() 函数中,有下面这一条调用:

具体调用的代码在\Build\OvmfX64\DEBUG_VS2015x86\X64\OvmfPkg\Sec\SecMain\DEBUG\AutoGen.c 中:

  1. PlatformRomDebugLibIoPortConstructor() 在 DebugLibDetectRom.c 中,函数是空的直接 return 了事;
  2. AcpiTimerLibConstructor() 在 BaseRomAcpiTimerLib.c 中,可以看到是取得当前一些 IO Base 的信息

3.Lz[......]

阅读全文

能在 ADL 上使用的 RU

今天忽然发现之前的RU 无法在 Intel 最新的 ADL 平台上工作(现象是运行之后黑屏)。我忽然也意识到在后台留言“密码“二字的朋友,他们需要 RU 压缩包的解压密码。

特此声明: RU 系列的作者是: AMI 的 James。

正式的下载网站是https://github.com/JamesAmiTw/ru-uefi , 其中的压缩包密码可以在

他个人网站 http://ruexe.blogspot.com/ 看到(该网站需要科学上网)。。

为了方便大家,这里放上一个最新的无密码 RU (截至2021年12月27日)。有需要的朋友可以下载。

[......]

阅读全文

Step to UEFI (240)分析第一条 Debug Log 的输出方法

前面提到,Debug Log 中的第一条信息位于 SecMain.c 中的 SecCoreStartupWithStack() 函数中:

这次就分析一下 OVMF 这段代码的具体实现方式。DEBUG 这个宏,之前我们有分析过,有兴趣的读者可以在【参考1】看到之前的文章。

1.这里的 DEBUG 宏可以在  \MdePkg\Include\Library/DebugLib.h 看到,这个和我们之前遇到的是完全相同的定义:

1.1 其中的 DebugPrintEnabled () 定义在 \OvmfPkg\Library\PlatformDebugLibIoPo[......]

阅读全文

注册表关闭 ModernStandby 的方法

在注册表 HKLM \ System \ CurrentControlSet \ Control \ Power 创建 PlatformAoAcOverride 属性为 DWORD32 值为0.

上述方法来自:

1.https://zhuanlan.zhihu.com/p/339761713 在Win10 v2004以上版本启用S3睡眠并禁用Modern Standby待机的终极解决方案

2.http://blog.sinovale.com/3867.html 戴尔dell笔记本无法进入睡眠的解决办法

3.https://www.reddit.com/r/Dell/co[......]

阅读全文

Step to UEFI (239)MainAsm跳转到SecEntry的证明

前面提到了 Main.asm 中的 Main16 最后会跳转到 SecEntry.nasm 中,这次用实验来证明这一点。

在Main.asm跳转代码如下,前面找到的地址放在 rsi 中,然后直接跳转到该地址:

这里加入代码,从0x402 Port输出 rsi的值:

接下来在SecEntry.nasm添加代码,输出当前 rip 的值:

在 QEMU 上运行后,用十六进制工具查看 debug.log:

可以看到输出的 0xFFFC C374, 这样可以证明跳转到 SecEntry.nasm 继续执行的。

[......]

阅读全文