键盘驱动相关文档和知识补充

使用到的相关文档链接

以及PS/2相关的官方文档等

IO端口地址

I/O端口地址(Input/Output Port Address)是计算机系统中用于与外部设备进行通信的一种地址机制。I/O端口地址允许CPU与外围设备(如键盘、鼠标、打印机、硬盘等)进行数据交换。每个I/O端口地址都是一个唯一的标识,用于指定特定的硬件设备或寄存器。

I/O端口地址的基本概念

  • 地址空间:I/O端口地址通常位于一个独立的地址空间,称为I/O地址空间,与内存地址空间分开。x86架构的计算机系统通常支持从0x0000到0xFFFF(16位地址)的I/O端口地址空间,共64KB。
  • 访问方式:CPU通过特定的指令(如inout指令)访问I/O端口地址。读取操作使用in指令,写入操作使用out指令。
  • 设备分配:不同的硬件设备被分配到不同的I/O端口地址。例如,键盘控制器、串行端口、并行端口、声卡等设备都在系统启动时被分配到各自的I/O端口地址。

常见的I/O端口地址

  1. DMA 控制器
    • DMA 控制器 1 (主):0x00 - 0x1F
    • DMA 控制器 2 (从):0xC0 - 0xDF
    • DMA 页寄存器:0x80 - 0x8F
  2. 可编程中断控制器 (PIC)
    • 主 PIC:0x20 - 0x21
    • 从 PIC:0xA0 - 0xA1
  3. 系统时钟/RTC
    • 系统时钟:0x40 - 0x43
    • RTC:0x70 - 0x71
  4. 键盘控制器
    • 键盘数据端口:0x60
    • 键盘控制寄存器:0x64
  5. 可编程定时器
    • 定时器控制端口:0x40 - 0x43
  6. 系统控制端口
    • 控制端口 A:0x92(用于 A20 行)

通信接口

  1. 串行端口 (COM)
    • COM1:0x3F8 - 0x3FF
    • COM2:0x2F8 - 0x2FF
    • COM3:0x3E8 - 0x3EF
    • COM4:0x2E8 - 0x2EF
  2. 并行端口 (LPT)
    • LPT1:0x378 - 0x37F
    • LPT2:0x278 - 0x27F

图形与音频设备

1、视频图形阵列 (VGA)

  • VGA 控制器:0x3B0 - 0x3DF

2、声卡

  • 常见的声卡端口地址:0x220 - 0x22F

硬盘与软盘控制器

  • IDE 硬盘控制器

    • 主通道命令块寄存器:0x1F0 - 0x1F7
    • 主通道控制块寄存器:0x3F6
    • 从通道命令块寄存器:0x170 - 0x177
    • 从通道控制块寄存器:0x376
  • 软盘控制器

    • 软盘控制器:0x3F0 - 0x3F7

特殊功能设备

PCI 配置空间访问

  • 地址端口:0xCF8
  • 数据端口:0xCFC