GPIO 控制器驱动程序的实现问题
gpioClx) (GPIO 框架扩展 (DDI) 提供灵活的设备驱动程序接口。 此 DDI 使开发人员能够在备用回调接口之间进行选择。 驱动程序开发人员应实现最适合目标 GPIO 控制器设备的硬件体系结构的事件回调函数集。
例如,如果 GPIO 控制器驱动程序支持读取和写入 GPIO I/O 引脚,则开发人员可以选择实现以下回调函数对之一:
CLIENT_ReadGpioPins 和 CLIENT_WriteGpioPinsCLIENT_ReadGpioPinsUsingMask 和 CLIENT_WriteGpioPinsUsingMaskCLIENT_ReadGpioPins 和 CLIENT_WriteGpioPins 函数接收库编号、GPIO 引脚编号数组以及要从这些引脚读取或写入这些引脚的位值的数据缓冲区。 如果在读取或写入操作中通常只访问少量 GPIO 引脚,则这对回调可能会生成最佳实现。 此实现通常用于硬件寄存器未进行内存映射的 GPIO 控制器。 但是,如果在读取或写入操作期间可能会访问多个 GPIO 引脚,或者 GPIO 控制器硬件可以有效地并行访问多个 GPIO 引脚,则另一对回调函数可能会产生更好的实现。
CLIENT_ReadGpioPinsUsingMask和CLIENT_WriteGpioPinsUsingMask回调函数可以在一次调用中读取或写入最多 64 个引脚的库。 CLIENT_ReadGpioPinsUsingMask函数将 GPIO 引脚值读入 64 位掩码。 CLIENT_WriteGpioPinsUsingMask 函数使用两个 64 位掩码。 一个掩码指示要设置的 GPIO 引脚,另一个掩码指示要清除哪些 GPIO 引脚。 此实现通常用于内存映射 GPIO 控制器。