特色

10月 nVidia 工作机会

GPU Server- Firmware 应用工程师(上海/北京/深圳)

NVIDIA GPU Application Engineering 是为 NVIDIA 全球客户提供技术支持的部门。我们的主要任务是向我们的客户提供 NVIDIA GPU 技术信息,培训我们的客户设计 NVIDIA GPU 相关产品,并协助我们的客户成功地将产品推向市场。我们正在寻找软件应用工程师加入我们的应用工程团队!您将负责 GPU 软件设计支持和使用工具进行问题分析解决。

[工作内容]这是您即将从事的工作:

• 为客户提供 NVIDIA GPU 软件设计技术支持。

• 为客户在 GPU 的[......]

阅读全文

Step to UEFI (280)计算精确时间

一些情况下,我们需要得知操作消耗的时间,比如:通过硬盘读写操作耗费的时间能够计算出硬盘的速度。针对这个问题,之前有过研究,例如:GetTime 研究【参考1】、EADK clock()【参考2】。这里再次进行研究。

首先,在MdePkg\Include\Library\TimerLib.h给出了下面两个函数:

其中的GetPerformanceCounter() 返回CPU 当前经过的计数值或者说多少个 Ticks,GetTimeInNanoSecond() 函数能将经过的计数值转化为纳秒为单位的时间。

编写一个 UEFI Shell代码进行测试:

1. 在Ap[......]

阅读全文

可以指定压缩后文件大小的JPEG工具

大部分JPEG 工具都可以指定图片的压缩质量,从0-100 。但是有时候我们需要一个绝对的数值,比如:500KB 的照片我们期望压缩到40KB。经过努力找到了一个这样的开源工具,在

https://github.com/tjko/jpegoptim

命令行方式工作,比如,我找了一副3.39MB的图片:

使用如下命令:

压缩之后大小为 193KB

只要不是特别夸张的参数,例如:要把上述图片压缩为40KB,个人感觉都还是可以接收的。

[......]

阅读全文

UEIF Tips: EDK2 的 AppPkg

最近打算用 EDK2 202308 编写 UEFI Application,忽然发现无法找到 AppPkg,于是花点时间研究这个问题。这个问题在“VS2019 EDK202008 下的 Libc 编译”【参考1】有提及。具体来说 EDK2 在edk2-stable201903 tag升级到edk2-stable201905 tag这个过程中移除的。接下来的问题就是:如何在最新的 EDK2 环境中使用 AppPkg。具体的方法是,在一下网址下载 AppPkg:

https://github.com/tianocore/edk2-libc/tree/master

解压之后放在EDK[......]

阅读全文

Turbo Vision

和现在的GUI不同,在 Dos 的时代,使用 ASCII 字符同样能够绘制精美的窗口,这种被称作“CUI”。 Turbo Pascal 7.0 就是典型的代表,它基于Turbo Vision来实现的。

最近看到了一个开源的 Turbo Vision项目,让这套界面在 Windows下再次焕发青春。项目地址是

https://github.com/magiblot/tvision

下面介绍一下编译方法:

3. 运行 cmake --build ./build --config Release

编译后生成的 exe 在 build[......]

阅读全文

Ch9350 控制键盘 LED

CH9350 提供了控制键盘LED(就是 Caps Lock、Scroll Lock、 Num Lock) 的方法。不过非常遗憾的是对应的 DataSheet 语言不详,查阅了网上资料【参考1】【参考2】之后我感觉CH9350 可能是不断升级,所以这部分不是很确定。

最终经过实验,我手上的可以通过对CH9350 发送如下11 Bytes 长度的命令来实现:

0x57, 0xAB, 0x12, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0xAC, 0x20

修改其中的 Byte[7] ,可以实现更改Led的目标。对应的,在[......]

阅读全文

ESP32 IDF SDMMC 测试

官方的 sd_card_example_main.c 代码,在末尾添加如下代码:

一段是从 m 目录下读取从 0000.jpg 到 0100.jpg ;另外一段是读取从0扇区开始的 100个64KB 扇区。最终运行结果如下:

前者花了 1789ms 读取 1.5MB 的内容;后者711ms能够读取 6.4MB 左右的内容。从这里可以看出文件系统的开销比较大。

[......]

阅读全文

几个常见的 ACPI Debug 相关 Table

HEST: Hardware Error Source Table

用于报告系统平台能够产生的错误来源。比如,对于 X86 架构的 MCE和CMC,以及PCIe AER, OS 能够处理的 MSI 和 PCI INTs 错误。

The HEST table enables host firmware to declare all errors that platform component can generate and error signaling for those. The host firmware shall create Error source entries i[......]

阅读全文

Step to UEFI (279)介绍一个最小的UEFI Application 编译器

最近接触到了 TinyCC (https://bellard.org/tcc/), 这是一个小巧的、开源、编译速度快的C编译器。

https://github.com/andreiw/tinycc/tree/mob 这里,有一个基于 TinyCC 支持编译UEFI Application的项目。这里介绍如何使用这个编译器编译生成 UEFI Shell Application。

第一步,下载上述代码。

第二步,生成 TinyCC  UEFI 编译器。下载的 Package 中只有源代码,没有二进制的 EXE ,所以需要先进行编译。我这边使用 VS2019 进行[......]

阅读全文