Step to UEFI (278)Progra message 的使用

Visual Studio 的 C 支持 #pragma message() 宏可以用来输出一些信息。于是编写一个代码进行测试:

唯一的问题是:我在 EDK2 中编译的时候,无法看到输出的结果。经过研究,编译C代码是通过下面这个指令:

于是尝试去掉其中的/nologo 指令,运行结果如下:

再同时去掉 /showIncludes 运行结果:

可以看到,其中出现了当前的文件名信息。

总结:在使用VC 编写代码的时候,如果需要输出一些编译期的数据,可以考虑使用 #pragma message() 来实现。

[......]

阅读全文

海龟汤和“死尸粒子”

在国外流行着一种叫做海龟汤的游戏。正规的名字是情境猜谜(Situation puzzle),又译情境推理游戏,俗称“海龟汤”,另名水平思考游戏(Lateral thinking puzzle)或是/不是游戏,是一种猜测情境型事件真相的智力游戏。其玩法是由出题者提出一个难以理解的事件,参与猜题者可以提出任何问题以试图缩小范围并找出事件背后真正的原因,但出题者仅能则以“是(对)”、“不是(不对)”或“没有关系”来回答问题。

一个典型的游戏是,出题者提问:“一个男人走进一家酒吧,并向酒保要了一杯水。酒保拿出一支枪并瞄准他,该名男子说:“谢谢你!”然后离开,请问发生了什么事?”

猜题者与出[......]

阅读全文

Step to UEFI (277)QEMU 增加自定义的 FFS和读取

这次实验的是在 OVMF 生成的BIOS中插入一个Binary ,然后在代码中将这个Binary 读取出来。

第一个目标:在 OVMF 中插入 Binary。

1.我们准备一个 message.txt,其中内容是简单的字符串:

2.在\OvmfPkg\OvmfPkgX64.fdf 文件中,加入下面的代码

3.使用工具查看放置的FFS,可以看到正确的增加到 BIOS 中

这样,第一个目标已经完成,我们成功的生成了一个FFS文件。

第二个目标,将这个 FFS文件从FV中读取出来。之前我们做过类似的实验,在【参考1】中有介绍。这次我们编写一个 UEFI[......]

阅读全文

在 ESp32C3 上使用 USB Host

最近入手了Beetle ESP32 C3(SKU:DFR0868),整体非常小巧。这次尝试用它搭配之前的 Micro USB Host 【参考1】读取USB 鼠标信息。

第一次使用 ESP32 C3,有如下需要注意的地方:

硬件连接如下:

名称   Beetle ESP32 C3Beetle ESP32 C3名称INTIO0IO6MOSIGNDGNDIO5MISOMD-USB 母头 D-IO7SSMD+USB 母头 D+IO4SCLKVBCOMPN/A3.3VRESETGNDGND3.3V3.3V

之后需要对USB Host 库进[......]

阅读全文

Step to UEFI (276)宏和结构体初始化表格

在 EDK2 中有一种比较有趣的定义和初始化Table 的方法,主要是基于 __VA_ARGS__ 这个宏。

很多时候,我们定义一个 Table 用来传递一些常量,Table需要给出具体的长度,通过这个宏可以实现自动给出Table 的长度,避免用户手工计数的麻烦。

下面是一个示例代码:

运行结果如下:

上面代码的解释如下:

1.首先我们定义一个 ONE_TABLE 结构体用来“携带”数据。

从定义可以看到,这个结构体包含了一个头,还有一个变长的数据段。头可以实现用于识别判断这个Table 是否为我们需要的目的,例如,其中有DID和VID 信息[......]

阅读全文

合并多个 Excel 的VBA代码

如果你有多个Excel 文件希望可以合到同一个文件中,可以使用如下 VBA 代码:

1. 创建一个 Excel 文件

2. 使用 ALT+F11 打开 VBA 界面

3. 输入如下代码

4. 运行之后会弹出对话框选择要合并的excel文件目录(特别注意目录中不要含有中文)

5. 最后生成的文件中包含了前面目录中的所有文件内容,每一个文件是单独存放在一个 Sheet 页面中的。

此外,还可以使用在线合并服务,例如:https://products.aspose.app/cells/merger (每次不能超过10个文件)

还可以开通 WPS 会员进行[......]

阅读全文

ESP32 S2 Mini

最近发现了一款非常便宜的 ESP32 S2 开发板:wemos 的 ESP32 S2 MINI,价格在12元。这个建议甚至低于 Atmel 328P 芯片,更重要的是这个是开发板直接可以下载代码无需额外 USB转串口设备。

官方网站是 https://www.wemos.cc/en/latest/s2/s2_mini.html#

对于一般的开发已经足够用了。

在使用 Arduino 开发时,需要特别注意选择为  LOLIN S2 MINI 开发板,具体如下:

引脚定义在下面这个文件中(ESP32的大多数引脚都可以自行定义,但是为了更好的[......]

阅读全文

Arduino ESP32 I2C Slave 的例子

Arduino 作为 I2C Slave 算是比较冷门的使用方式,下面是一个实际的例子:

运行之后,Arduino 作为一个地址为 0x08 的I2C设备。当它收到 Master 发送过来的数据,会进入 void dataRcv(int numBytes)  函数,然后将收到的数据输出到串口上;当它收到 Master 发送的读请求,会进入void dataRqst() 函数,将之前收到的数据返回给 Master 。

试验使用 Leonardo 板子,使用调试器发送 10 17 表示对 0x08 地址的设备发送 0x17,之后调试器发送 11 01 表示从 0x08 设[......]

阅读全文