特色

招聘信息(更新Intel BIOS测试职位 3月31日)

●2022年3月更新一个 Intel BIOS 测试职位,具体要求可以在下面看到

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

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

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

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

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

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

[......]

阅读全文

英文版 Windows Python 窗口显示汉字

这次介绍一下如何在英文版 Windows的 CMD 窗口中显示中文的方法。例如,有如下代码,保存在 test.py 中:

直接运行显示如下:

这时候我们使用命令置活动代码页编号:

再进行测试即可显示:

同样的,我们可以直接在修改代码自动切换:

[......]

阅读全文

Step to UEFI (253)PEIM 调用顺序研究

当EFI 刚出现的时候,模块没有固定的加载顺序是作为优点介绍的,但是运行过程确实需要加载顺序,这一切是通过源代码中每个模块 INF 中[Depex] Section 决定的。前面的文章中提到了PEIM 加载了一些模块,根据 Log 输出的信息对其运行顺序进行排序结果如下:

顺序文件名INF 文件位置Depex1PcdPeim.efi\MdeModulePkg\Universal\PCD\Pei\Pcd.infTRUE2ReportStatusCodeRouterPei.efi\MdeModulePkg\Universal\ReportStatusCodeRouter\Pei\Report[......]

阅读全文

ESP32 S2 上实现假U盘(ESP32 2.0.1 )

这次介绍的是在 Arduino 1.8.16 + ESP32 2.0.1 下实现假U盘的例子。特别强调:ESP32 Arduino 环境必须是 2.0.1, 更高的版本反倒有兼容问题。

实现的方法和之前的相同【参考1】:

  1. 首先在本机做一个虚拟的256MB硬盘,然后在上面放置一个 200MB 的内容为全0x00的文件(太大的话,处理起来非常麻烦);
  2. 将这个硬盘使用HXD 做成镜像文件,然后使用工具扫描这个文件,将所有的不为0的内容写入.h文件中(这就是256MBDisk.bin.h文件的来源);
  3. 这个文件中0x804 到 0x8CC扇区内容,和0x902 到 0x9CA扇区内容相同,[......]

    阅读全文

Intel GOP 简介

GOP是 Grapshics Output Protocol 的缩写,这是 UEFI 定义的 Pre-OS 显示接口,目标就是提供显示的基本功能。 无论你使用何种显卡,如果想让屏幕在开机过程有所显示,必须遵从这个协议。这次简单介绍一下 Intel 的 GOP。

Intel 的GOP 会放在BIOS 中,可以看作 BIOS 的一部分。Intel Release 的 GOP有三部分:

1.IntelGopDriver: 这是DXE 的GOP Driver

2.IntelGraphicsPeim: 这是 PEI 阶段的 GOP。用户按下开机键后会希望尽快点亮屏幕看到提示信息,因[......]

阅读全文

ESP32S2 一个设备多个键盘的实现

最近在看《圈圈教你玩USB(第一版)》,我手上的这本是作者签名版,十多年前买的。

书中提到了一个USB设备同时实现键盘鼠标功能的方案,其中的一种是:在 HID 描述符中分别报告鼠标和键盘,然后通过Report ID 对数据进行区分。于是手工编写一个代码,实现了一个USB设备下有3个键盘的功能。

代码是基于CustomHIDDevice编写的,对于 HID 设备来说,彼此之间主要差别就是 HID 描述符。这里定义了三个键盘的HID描述符:

发送数据部分:

此外,代码中还修改了每一次发送的数据从8个改为9个(就是ReportID+8Byte 键盘数据):

[......]

阅读全文

ESP32 对于 SDIO 的支持

1.最原始的 ESP32 支持 SDIO

SDIO/SPI 从机控制器 ESP32 集成了符合工业标准 SDIO 2.0 规格的 SD 设备接口,并允许主机控制器使用 SDIO 总线协议访问 SoC 设备。ESP32 用作 SDIO 总线上的从机。主机可以直接访问 SDIO 接口的寄存器并通过使用 DMA 引擎访问设备 中的共享内存,从而不需要处理器内核即可使性能最优化。 SDIO/SPI 从机控制器具有以下特性:

• 时钟范围为 0 至 50 MHz,支持 SPI、1-bit SDIO 和 4-bit SDIO 的传输模式

• 采样和驱动的时钟边沿可配置

• 主机[......]

阅读全文

Step to UEFI (252)ReportStatusCodeRouter 和 StatusCodeHandlerPei

继续我们的研究。从Log中可以看到,加载了ReportStatusCodeRouterPei.efi:

对应代码位于\MdeModulePkg\Universal\ReportStatusCodeRouter\Pei目录下:

接下来Log 如下:

这两个 GUID 在 \MdePkg\MdePkg.dec 有定义:

这个里面比较有意思的是这里面注册了2个Ppi,其中一个是 ReportStatusCode的Ppi,另外一个是用来给ReportStatusCode 注册实际工作的函数,接下来的模块会调用这个Ppi能够让我们理解实际动作。

继续查看 L[......]

阅读全文

日常生活中的数学:保险公司推销的理财产品

数学,在日常生活中出了买菜之外,还能发挥很大的作用。笔者的一个朋友在朋友圈发布了一条保险的广告:

简单的说:连续三年每年存3万,然后第八年就能够取出来 111,659元。根据他们的说法,第八年的收益是 21,659元,因此利息是:(21659/90000)=24.1%,这算得每年利息 24.1%/7=3.45% (我也不知道为什么他们要除以7 )。从直觉上看我感觉这个非常可疑,按照复利计算得年利率应该不高。于是动笔进行计算。

假设年利率为x,那么一年之后本金加利率为  p=1+x。

第一年末尾一共有: 3*p

第二年末尾一共有: (3*p+3)*p

[......]

阅读全文