PS/2

来自osdev
跳到导航 跳到搜索

This article is a stub! 此页面或段落为 草稿。 你可以通过更精确的编辑贡献 来帮助本wiki。

PS/2是一种串行通信,通常用于用户输入设备 (键盘,鼠标,条形码扫描仪等)。 它涉及控制器 (例如PC兼容系统上的 “8042芯片”) 、本身通信的机械和电气细节以及一个相关设备。

历史

最初 (1981) IBM为XT键盘使用了一种不同类型的串行通信。 较旧的接口不是双向的-设备可以向控制器发送数据,但控制器不能向设备发送数据。

后来 (1984) IBM用更新的用于AT键盘的双向接口替换了旧的串行接口。 它开始允许主机向设备发送命令。

后来 (1987) IBM扩展了 “AT” 标准以创建 “PS/2” 标准。 PS/2标准在电气上与较旧的AT标准相同 (仅使用不同的插头/连接器)。

最终PS/2被USB取代,但是它仍然相当普遍 (为了兼容性,某些系统具有使USB设备显示为PS/2设备的仿真层)。

协议

下面是PS2连接器的示意图。

PS2 connector.png

串行通信通常以10 khz至16.7 KHz的波特率运行。 设备发送到控制器的每个字节都作为包含11位的数据包传输。 “设备到主机” 数据包具有以下位:

  • 1起始位 (始终为0)
  • 8个数据位 (最低有效位优先)
  • 1奇偶校验位 (奇数奇偶校验)
  • 1个停止位 (始终为1个)

控制器发送到设备的每个字节都作为包含12位的数据包传输。 “主机到设备” 数据包具有以下位:

  • 1起始位 (始终为0)
  • 8个数据位 (最低有效位优先)
  • 1奇偶校验位 (奇数奇偶校验)
  • 1个停止位 (始终为1个)
  • 1个确认位

驱动程序模型

PS/2端口控制器有各种类型; 包括 “bit banging” 通用IO,内置于系统芯片组的特殊支持和附加PCI卡。 还有各种类型的PS/2设备 (键盘,鼠标,触摸板,条形码扫描仪,磁卡/条纹读取器,指纹读取器等)。

显然,你不想在每个不同的PS/2控制器驱动程序中重复每种类型的PS/2设备的代码。 你想要将它们独立实现,以便PS/2设备的任何驱动程序都可以与任何PS/2控制器驱动程序对话 (并且可以将PS/2设备的代码移植到不同的体系结构而无需进行任何更改)。 这比较简单 - PS/2控制器驱动程序只需要能够发送和接收字节 (没有波特率控制或任何东西) 和一个简单的 “字节流” 方法就足够了。

另见

文章

外部链接