Keyboard Controller简称KBC,它是EC芯片中一个用于处理Keyboard、Mouse的模块,也可以说,它只是一个通道,因为最后处理数据的还是交给EC 8032处理器去处理。KBC只处理挂在EC PS/2接口上的设备,假如接了个usb键盘或鼠标,那可不关它的事。PS/2设备只有两种,即Keyboard和Mouse,即使像接的是触摸板,它实际上也是一个Mouse设备。
下面从几个方面来进一步认识KBC。
KBC通信过程
画了个简图,大致如下:
一个KBC设备开机后要正常工作,就需要对其进行初始化。初始化也就是Host对KBC下命令的过程:开机时,Host通过6064端口向KBC发送命令,EC(8032)收到后则通过PS/2接口向device做相应的处理。此过程在Code中写得很详细,如BIOS初始化keyboard,在\MdeModulePkg\Bus\Isa\Ps2KeyboardDxe\Ps2KbdCtrller.c文件中InitKeyboard这个函数,里边有很多初始化的命令,这里看下其中一个Command举个例子: