【UEFI之基本外设调试(1)PS2键盘】

PS/2接口概述

PS/2是在较早电脑上常见的接口之一,用于鼠标、键盘等设备。PS/2的命名来自于1987年时IBM所推出的个人电脑:PS/2系列。
特别注意PS/2接口设备不支持热插拔,强行带电插拔有可能烧毁主板。
1984年IBM推出了IBM AT键盘接口标准,该标准定义了84~101键,采用5脚DIN连接器和双向串行通讯协议,设有8个主机到键盘的命令。
1987年,IBM又推出了PS/2键盘接口标准。该标准仍旧定义了84~101键,但是采用6脚mini-DIN连接器,支持17个主机到键盘的命令。

具有五脚连接器的键盘称之为AT键盘,而具有六脚mini-DIN连接器的键盘则称之为PS/2键盘。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a73c021c2d6642eeac0b485f590c7697.png在这里插入图片描述
接口图片

基本外设调试步骤(以PS2为例)

不管是什么外设,首先要看硬件线路图,确认这个外设是接在CPU还是EC。目前台式和笔电来讲通常PS2键盘接在EC。
在这里插入图片描述

对于键盘一般使用了三个寄存:
状态寄存器:我们可以通过查看此寄存器来判断是否有设备插入。
在这里插入图片描述
通过串口打印可以看出,
没插入PS2键盘时,状态寄存器的BIT0值为0
在这里插入图片描述
插入PS2键盘后,状态寄存器的BIT0的值为1
在这里插入图片描述
命令寄存器:通过64端口下commod
数据寄存器:60端口读写数据
在这里插入图片描述
在这里插入图片描述

PS2键盘常见问题分析

①系统下无法使用PS2键盘
Ⅰ系统下无法使用首先确保BIOS是否有在asl code中上报PS2 KBC的设备:
基本上IBV厂商都会默认上报,BIOS可以通过dump acpi table查看或者查看设备管理器,X86系统下PS2的驱动是微软的,一般不会有问题。asl代码如下:
在这里插入图片描述
Ⅱ如果BIOS已上报设备但是PS2 KBC还是无法使用,需要EC检查60/64端口的数据是否异常(在系统下查看Scancode,每一个键值是否能对应上)

②setup界面无法使用PS2键盘

setup下需要添加PS2的驱动,这部分代码也是比较成熟的,让我们一起来分析一下BIOS是如何加载的:
Ⅰ在初始化的时候我们主要是安装protocol,具体看下protocol都做了哪些操作
在这里插入图片描述
ⅡUEFI的驱动一般都是以Supported、Start、Stop三个函数实现(同步可对比PCI的UEFI driver)

在这里插入图片描述
Ⅲ如果Setup下PS2键盘没有功能,需要查看Start的状态是否正确。
在这里插入图片描述
Ⅳ如果Start的状态正确我们可以确认一下在Setup下是否能读取到Scancode。
在这里插入图片描述
Ⅴ这里采用TimeEvent的方式去读取scancode
在这里插入图片描述
Ⅴ可以将Scancode打印出来
在这里插入图片描述
Ⅵ如果此时Start的状态正常,scancode也能读取到,只是Setup界面没有反应,可以尝试热键还有Caps灯以及Num灯是否可以使用
热键和灯一般是通过检测scancode去做一些通知EC或者CPU reboot的指令,不会与Setup UI有交流。
如果只是UI界面没有反应,那就是没有添加ConsoleIn,UI界面不知道PS2的devicepath
如PS2键盘,USB键盘都有一个固定的设备地址,Setup UI要根据这个地址才能找到此设备,需要我们把固定地址添加到ConsoleIn当中(此驱动一般是EDK2或者IBV做好的,OEM只需要添加到ConsoleIn当中即可!)

Ⅶ在BdsPlatform.c中通过variable的方式更新输入输出设备。
在这里插入图片描述
Ⅶ像USB KBC是默认添加的Device patch。
在这里插入图片描述
Ⅶ而设备的地址也都是固定的。
在这里插入图片描述

总结

PS2键盘目前已经比较成熟,这里只是给大家介绍一下uefi驱动的基本调试步骤,希望对大家有所帮助
我是农夫三拳,喜欢的话请大家点个赞,有错误的地方也请大家多多指出,感谢大家!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值