记录一个“诡异”的矩阵键盘问题

最近用船型开关做了一个矩阵键盘,电路图如下:

简单的说就是 KEY_ROW1-3 轮流为 HIGH 然后通过读取 KEY_COL1 引脚的电平就能得到当前开关状态。编写的取得按键信息的代码如下:

调试中我惊奇的发现每次读取KEY_COL1的值竟然不同,示意如下:

即使我[......]

阅读全文

Step to UEFI (238)OVMF 从第一条指令到 SecMain

最近抽空研究了一下 OVMF 的代码。它是为 QEMU虚拟机设计的UEFI BIOS内置在 EDK2 的代码,对于研究 UEFI EDK2架构非常有意义。分析代码是非常枯燥的事情,相信读者也会有这样的感觉。但是“所有的答案都在代码中”,通过这样的过程能够让我们对EDK2有着更深入的理解。

这次[......]

阅读全文

Step to UEFI (237)从 QEMU 看显卡的初始化

经常在面试的时候,会有人提问:如何编写一个代码来实现在没有操作系统的情况下在屏幕上显示一个字符。十年或者二十年之前,这个问题的答案是:调用 BIOS中断或者直接对0xB000:0000内存位置写入数值。但是在UEFI大行其道的今天,答案则是调用UEFI 提供的Service。但是听起来这个答案似乎并[......]

阅读全文

Memtest86 显示异常的解决方法

MemTest86 是一款很好用的 UEFI 的内存测试软件。但是最近在使用中碰到了开始测试之后显示异常的问题,具体的说是显示内容偏于一侧无法看到大部分内容。这是由于你的显示器或者屏幕分辨率过高导致的软件错误。解决方法是,打开EFI\BOOT 下面的 MemTest86.log 文件,查找 Prod[......]

阅读全文

Step to UEFI (235)UEFI Shell 下的变幻线

CRT(阴极射线显像管)显示器的显像原理主要是由灯丝加热阴极,阴极发射电子,然后在加速极电场的作用下,经聚焦极聚成很细的电子束,在阳极高压作用下,获得巨大的能量,以极高的速度去轰击荧光粉层。这些电子束轰击的目标就是荧光屏上的三原色。为此,电子枪发射的电子束不是一束,而是三束,它们分别受电脑显卡R、[......]

阅读全文