特色

3月更新 UEFI工作机会

这里是一个3月份猎头推荐的一个 Firmware Leader职位,具体要求如下:

(Sr.) Staff System Engineer—Firmware Leader----Location:Shanghai
Job Responsibility
-Validate, debug, and understand PCIe/ CXL link training (LTSSM), Data Link Layer (DLLP), and Transaction Layer (TLP).
-Firmware execution lead
-Plan, develop, and execute PCI[......]

阅读全文

Step to UEFI (269)PRINT 前缀的研究

众所周知,在编写 UEFI Shell Application的时候,使用 PRINT(L”My String”) 可以非常容易的在屏幕上输出字符串。偶然机会看到了关于前缀“L”的介绍【参考1】。它能够决定后面的字符串的编码方式。简单介绍如下:

编写一个简单的代码进行测试,使用上述四种前缀来定义字符串,然后在代码中输出字符串对应的内存数值:

可以看出:

我们经常在GCC 编写的 UEFI 代码中看到使用u的定义方式,看起来这个应该是C语言标准的写法,具体可以在【参考2】和【参考3】看到。

参考:

[......]

阅读全文

Step to UEFI (267)OVMF的 ACPI Table 的来源

之前介绍过在 Shell 下面查看 ACPI Table 的工具,例如【参考1】提到的:ACPIView。

接下来的问题就是:上面的这个 DSDT 是从哪里来的?

首先,在代码中找了一圈,竟然一无所获;接下来在Debug Log中查找,发现如下信息,其中的一个 Table 长度是 0x1772(6002)非常接近我们在 Shell 下看到的 6009。

这一段 Log 对应的代码在\OvmfPkg\AcpiPlatformDxe\QemuFwCfgAcpi.c 中。

为了验证猜想,在对应代码中加入调试信息,输出读取到QEMU 的 ACPI DSDT,具体在Ovm[......]

阅读全文

推荐一个USB 2.0维修接头

有些时候,USB 2.0 设备由于长期使用,接头会出现接触问题,这种情况下直接更换USB接头是最好的选择。这里推荐下面这一款替换接头:

【淘宝】https://m.tb.cn/h.UJF7fNp?tk=E626djU8vYA CZ3457 「USB公头母头三件套 焊线式 USB插座 卡盒式A母 A公 A型带塑料外壳」 点击链接直接打开 或者 淘宝搜索直接打开

推荐这款维修接头最主要的原因是上面自带了固定孔位,安装之后会非常结实,不会出现因为拉扯导致主体和外壳分离的问题(我买的另外一家的有这个问题)。

焊接之后使用UV电子胶固定一下就齐活儿了,很好用。

[......]

阅读全文

Step to UEFI (268)EFI 资源文件再研究

在之前的文章中介绍过将 BMP文件直接存放在EFI 文件中的方法 【参考1】,本文继续研究如何将其他格式的文件放在EFI 中的方法。

首先,我搜索了一下,没有发现直接将其他格式按照类似的方法放在EFI文件中的方法(从Win32编程的角度来说,这个是以Resource/资源文件的方式存放)。其次,如果将文件直接修改后缀为BMP,在编译过程中,工具会对资源文件进行检查,如果不是BMP将会报错。对于这种问题,可以将二进制文件通过加文件头的方式伪装成一个BMP文件。但是这样做估计会比较麻烦。

在阅读代码的过程中,处理BMP文件的代码位于 \BaseTools\Source\Python\A[......]

阅读全文

CH567 SPI NOR 测试

最近编写了一个 CH567 SPI 读写测试的代码,测试的 SPI NOR 是 gd25q128e(特别注意:这款在Taobao上有假货,使用几次之后就无法读写,包括 READ ID 都无法响应)。这款 SPI 每个Page有256 Bytes ;每个 Sector有 4K Bytes; Block有 32K或者64K字节。

CH567 支持2个 SPI Host,这次测试的是 SPI0。

硬件连接:硬件连接:

引脚    1 CS#PA12 3.3V8 VCC2 MISOPA15 3.3V7 HOLD#/RES[......]

阅读全文

冷知识:更换SoC后要重刷Firmware

最让 BIOS 工程师头大的问题就是要回答BIOS范畴之外的问题,例如:Hardware issue, OS issue 以及BIOS 之外的 Firmware issue。今天介绍的一个就是典型的别人会找BIOS工程师,但是真不归BIOS 管的问题。

在研发和调试的时候,非常特殊情况下我们需要更换SoC进行测试。更换之后务必重刷Firmware。这是因为在上电自检的时候,SoC中初始化代码如果发现 SoC损坏,为了避免更严重的问题(例如,SoC损坏之后异常发热有可能导致火灾),Firmware 会记录这个问题,下次再开机的时候先于BIOS执行的Firmware如果看到对应的标记会自动断[......]

阅读全文

FireBeelte 显示环境声音频谱

前一段入手了Fermion: 全向MEMS麦克风模块(SEN0487),这款模块非常简单能够直接输出模拟信号。简单之处在于无需外部元件进行放大,当没有检测到声音时,输出电压在1.5V左右浮动,在说话时通过ADC采样可以很容易看到声音的波形。

首先跑了一下WIKI 给出的示例文件,使用 Arduino 自带的串口绘图工具查看了一下波形:

测试视频可以在B站看到:

https://www.bilibili.com/video/BV1p24y197FQ/

可以看到内部自带了滤波,敏感度也不错。

接下来,配合之前多次使用的 12864 OLED制作一个频谱显示装置。代[......]

阅读全文

BellWin UP520US USB Power Splitter 介绍

最近在研究一款USB控制的排插:BellWin 出品的带有USB接口的排插(USB Power Splitter)型号是:UP520US。它带有五个插孔,一个用于控制插孔供电的USB接口和一个供电开关。这款排插不是给家用设计的,上面的的插孔和插头都是专门为机房这种特别场合设计的,在家用环境中必须使用转接头才能工作。

电器特性如下【参考1】:

输入:220V,20A

输入频率:50/60Hz

功耗:5W

每一路最高可支持15A,五组最大支持输出20A

工作温度:0-25℃

接口:IEC60320 C13

认证:RoHS,IPC,CUS

[......]

阅读全文