特色

4月更新 UEFI工作机会

下面是4月最新更新的工作机会,有兴趣的朋友可以联系对应的猎头:

Firmware Architecture Engineer
Location:上海徐汇
薪资:120万内

岗位职责 Job Responsibility
1、负责Firmware的架构设计。包括软件的功能分解、结构的分层及模块化解耦设计、为快速适应不同的交付需求而设计高可复用性和高可扩展性的软件架构方案;
2、负责Firmware整体架构的演进和稳定性、解决产品系列化带来的兼容性问题;
3、输出Firmware功能设计文档和规范,以及维护和更新设计规范,保证软件实现的规范性和正确性;
4、负责软件开发流程的重整和优化,包[......]

阅读全文

Arduino Leonardo 移除USB CDC 的方法

Leonardo 是基于 32U4 的,内部直接带有一个 USB Device Controller。默认情况下都会出现一个USB CDC 设备。这个设备可以通过下面的方法移除。

方法来自:https://github.com/arduino/Arduino/issues/6387

特别提醒:在试验之前请准备好硬件烧写工具,当移除USB CDC 之后,Leonardo 无法再次刷写。

具体方法是,删除 USBCore.cpp 文件中的如下代码:

[......]

阅读全文

Step to UEFI (273打包为 EFI Application 的 MEMTEST86

前面介绍了最新的 MemTest86 ,美中不足的是这个版本需要制作启动盘,这次介绍一种将它打包为一个 EFI 的方法。

基本的思路是:将完整的 MemTest86 磁盘镜像按照资源打包到一个 EFI 文件中,然后再配合之前的RamDisk 知识将这个镜像加载到内存中。这样就相当于制作的镜像文件,跳进去就可以执行了。

代码要点:

1.将之前介绍的 MemTest86 制作成一个硬件镜像,然后将这个镜像命令为MemTest2023.png

2.MyRamDisk2.inf 中给出用到的文件如下

3. MyRamDisk2.idf 文件内容如下

4.主程[......]

阅读全文

SF100 SPINOR烧录座设计

BIOS 工程师通常会使用 DediProg 进行 SPI NOR 的烧写。这次为了烧写未焊接的SPI NOR芯片特地为SOP8/16测试座设计了一个电路板。

SF100接口定义如下【参考1】:

SPI NORSF100 SF100SPI NOR1 CS#GND VCC8 VCC2 MISOMISO VCC7 HOLD#/RESET#3 WP#VCC SCLK6 SCLK4 VSSGND MOSI5 MOSI

座子来自淘宝实验室专业耗材店 【参考2】

特别注意:对于SOP8/16 这种封装,有着不同的宽度。卖[......]

阅读全文

FireBeetle 显示鼠标移动

三年前设计过一个 FireBeetle USB Host Shied【参考1】,后来有其他项目需要再次使用,因为主控芯片 Max3421e 的特定封装很难买到,所以进行了重新设计选择了市面上更常见的封装。

电路设计如下:

其中的H3条线是预留的USB设备供电,短路时USB 母头(U2)将会从 VCC 引脚取电给USB设备使用。

硬件方面,使用到如下引脚有:

FireBeetle引脚功能VCC为USB 设备供电3.3V为 Max3421e 芯片供电GND地D8(IO5)SS信号IO18SCLK信号IO23MOSI信号IO19MISO信号IO17INT信号

上述引[......]

阅读全文

推荐一个编译结果查看网站

有时候我们需要对代码进行优化,通常的做法是编写代码之后编译查看生成的汇编代码,这次推荐的网站能够在线完成上述步骤非常方便。例如,左侧输入代码,右侧就是直接反编译的结果,同时可以调整编译器优化选项便于比较:

网址:

https://godbolt.org/

[......]

阅读全文

CH32V208 USB 转蓝牙键盘装置

CH32V208系列是一款32位RISC-V设计的无线型微控制器。它的外部接口非常丰富,片上集成2Mbps低功耗蓝牙BLE 通讯模块、USB2.0全速设备+主机/设备接口。这次的作品就是基于蓝牙BLE和USB 主机功能实现的。

简单的说这个作品的原理是通过 USB Host 和键盘进行通讯,取得按键之后再通过BLE蓝牙发送出去。

作品设计是围绕 CH32V208进行的,目前公开的型号有如下几种,这次使用的是CH32V208WBU6,它是QFN68X8封装的,这个对于手工焊接稍微有难度,如果有可能最好使用加热焊台配合焊锡膏进行。选择这种封装的唯一原因是目前市场上还没有其他封装。

[......]

阅读全文

做一个低成本的USB LED 变色灯

这次制作的目标是:一个插在USB接口就能不停变化颜色的灯。

为了尽可能的压低成本,使用印刷在PCB上的USB。为了低成本实现不停变化颜色,选择淘宝上“F3圆头5mm草帽七彩慢闪led灯珠雾状装饰3v5v12伏F5七彩闪烁渐变色”这款彩灯。这款LED内置了IC,所以能够实现颜色的不停切换变化。

接下来开始电路设计,非常简单就是将LED引脚接在USB的 VCC 和GND即可。

对应的USB1 封装如下:

最终设计的PCB 如下:

为了尽可能降低成本,特别使用V-Cut拼版,这样我们可以在一块PCB上容纳尽量多的PCB。同时需要注意的是:对于嘉立[......]

阅读全文

FireBeetle 制作一个LED矩阵

这次介绍的项目是通过 FireBeetle ESP32 实现一个 8*16的单色LED矩阵,可以在上面实现一些简单的图形和动画效果。

在开始之前,首先介绍LED 的静态驱动和动态驱动的概念。当我们在一个发光二极管两端加上一个电压的时候,发光二极管即可工作。理论上,如果驱动N个共阴极的LED那么需要N个提供正电压。这种带来一个问题,如果需要驱动大量的LED,那么就同样需要同样数量的引脚作为正极。对于单片机来说,会遇到IO引脚不够的问题。

这种直接驱动的方式称作“静态显示驱动”。与之相对,还可以通过构成矩阵的方式来进行驱动。以3x3的LED矩阵为例,通过6个IO 引脚可以驱动9个L[......]

阅读全文

EDK2 202302 来了

今年的3月3日,edk2-stable202302 版本正式发布,需要的朋友可以在下面的链接下载到

https://github.com/tianocore/edk2/releases/tag/edk2-stable202302

新增了如下功能:

看起来和我们 X86 UEFI 开发者关系不大。

前面介绍过下载之后手工补充编译一些第三方依赖库的方法,此外,可以使用下面的方法直接下载完整的代码:

git clone -b edk2-stable202302 https://github.com/tianocore/edk2.git --recursive

[......]

阅读全文