ITE Super IO 学习 – PS2 KB&MS
简介
PS2 keyboard 和 mouse 是SIO中的一个基础功能,在台式机中出现较多,但该接口需要特殊的插座,不支持热插拔,无论是设计还是使用体验上都没有USB的方便,所以逐渐被弃用了。
PS2接口一般在主板上会有两个,分别对应键盘跟鼠标,但也有把他们设计成一个插座的,可以同时兼容键盘和鼠标,当然,此时只能接一个PS2设备。
线路上,PS2信号比较简单,只有clock和data信号,跟i2c比较相似。下图是SIO上keyboard跟mouse的两组信号:
寄存器说明
Keyboard
Keyboard 是SIO中的Logic Device 5,寄存器比较简单:
0x30:是否启用改设备。
0x60&0x61 / 0x62&0x63:用于配置 Keyboard Controller 中 Data 跟 Command 的地址,一般MSB这个byte不用,LSB要配置为 0x60 跟 0x64。
0x70:IRQ配置,根据对应的IRQ Table选择即可。
0x71:此寄存器用于配置IRQ的触发方式,跟0xF0是有关联的,如果0xF0中bit0清0,该寄存器是只读的,默认为0x02,即Edge Type,High Level;如果0xF0 bit0置1,则可以自己配置类型。注意这里配置之后,ASL代码中的中断要与此处对应!
0xF0:bit5-7虽然是reserved,但不同的SIO型号要求Reserved的值可能不同,有的要求000,有的要求010;其它bit可根据实际场景配置。
Mouse
Mouse对应SIO中的Logic Device 6,寄存器跟KB比,少了配置Keyboard Controller 中 Data 跟Command,其它基本一样。需要提下的是,如果在OS下无法使用,可以改改0xF0中的IRQ type。如果是sharing,0x70 中IRQ要设为0。其它的不重复写了。
调试
调试PS2的时候可分两步进行,首先能在EFI Shell使用,然后再调试OS下。
EFI Shell
EFI Shell 环境下不用关心IRQ的问题,只要硬件连接无异常,BIOS有启用PS2 Driver(可以在Shell下用 Drivers 命令查看是否有加载),就可以使用的。键盘比较好测试,能打字就行,测试鼠标的话有个小技巧,就是可以利用Shell中的edit命令,该命令是用于编辑文件的,支持鼠标移动光标,如果鼠标能移动光标,那证明鼠标没问题。使用edit命令有一点要注意,一定要将当前shell的路径切换到某个具体的目录下,不然会死机!
OS
有时候PS2可以在 shell 使用,进OS后却失效了,一般就是IRQ问题了,可以调调上文提到的IRQ Type。Serial IRQ也可以试着改成 CONTINUOUS Mode。
版权声明:
作者:bin
链接:https://ay123.net/mystudy/bios/1523/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。
lee