基于 SerCx2 的串行控制器驱动程序的功能

SerCx2 是 Kernel-Mode Driver Framework (KMDF) 的扩展,具有支持串行控制器驱动程序的特殊功能。 有关 KMDF 的详细信息,请参阅 使用 WDF 开发基于驱动程序 A SerCx2 的串行控制器驱动程序是一种 KMDF 驱动程序,它使用 KMDF 中的方法和回调来执行泛型驱动程序操作,并与 SerCx2 通信以执行特定于串行控制器驱动程序的操作。

通常,串行控制器在硬件级别与 16550 通用异步接收器/发送器 (UART) 设备兼容。 UART 自个人计算的早期以来一直用于控制位于台式电脑外壳上的串行端口。 最近,串行控制器包含在芯片上的系统 (SoC) 集成电路中,以提供与其他集成电路的低引脚数通信。 在基于 SoC 的硬件平台中,客户端向其发送 I/O 请求的“串行端口”只是 SoC 芯片上的一组串行接口引脚。 有关详细信息,请参阅 串行控制器驱动程序概述

Microsoft 可能会为具有类似硬件功能的串行控制器系列提供串行控制器驱动程序。 或者,具有特殊功能的串行控制器的硬件供应商可能会提供自定义串行控制器驱动程序来支持这些功能。

串行控制器驱动程序通过设备驱动程序接口与 SerCx2 通信, (DDI) 。 SerCx2 DDI 有两个部分:

  • 由 SerCx2 实现并由串行控制器驱动程序调用的一组驱动程序支持方法。
  • 由串行控制器驱动程序实现并由 SerCx2 调用的一组事件回调函数。

有关 SerCx2 DDI 中方法和回调的详细说明,请参阅 sercx.h 标头 主题中的版本 2 串行框架扩展 (SerCx2) 参考。

尽管硬件供应商可以选择编写独立的串行控制器驱动程序,但这样做需要付出大量努力。 相比之下,开发使用 SerCx2 的串行控制器驱动程序更容易,并且通常会导致驱动程序更小、更可靠。

SerCx2 代表控制器驱动程序管理以下任务:

  • 读取和写入操作
  • 串行 I/O 超时检测
  • 硬件事件
  • 如果支持系统 DMA 事务,则系统 DMA 传输 ()
  • 与低功耗设备状态的转换
  • 取消 I/O 请求 (,除非在自定义 I/O 事务)

为了管理读取和写入操作,SerCx2 将 来自客户端IRP_MJ_READIRP_MJ_WRITE 请求转换为相对简单的 I/O 事务,以便串行控制器驱动程序进行处理。 有关详细信息,请参阅 SerCx2 I/O 事务

SerCx2 作为名为 Sercx2.sys 的组件包含在 Windows 中。 串行控制器驱动程序静态链接到 SerCx2 库 Sercxstubs.lib (版本 2.0) ,并在运行时与Sercx2.sys通信。 SerCx2 DDI 在 2.0\Sercx.h 头文件中定义。 适用于 Windows 8.1 的 Windows 驱动程序工具包中提供了 Sercxstubs.lib 和 Sercx.h。