# QNX GPIO 框架参考
概述GPIO通用输入输出框架是 QNX OS 中用于管理 GPIO 引脚的标准化接口。框架由三个核心组件构成组件描述libgpioGPIO 客户端 API应用程序通过它与 GPIO 交互io-gpio资源管理器管理 GPIO 硬件访问gpio_hw_xxx.so硬件模块共享库实现特定硬件的驱动架构应用程序通过标准 POSIX 函数和专门的devctl()命令与 io-gpio 资源管理器交互。io-gpio 动态加载硬件模块硬件模块通过hwmod_funcs_t结构体提供硬件特定操作。第一部分客户端 API (gpio_api.h)头文件:#include gpio_api.h所有客户端函数通过 io-gpio 资源管理器与 GPIO 硬件交互。设备访问函数描述gpio_open()打开一个 GPIO 设备gpio_close()关闭一个 GPIO 设备方向控制函数描述gpio_get_dir()获取 GPIO 引脚方向gpio_set_dir()设置 GPIO 引脚方向电平控制函数描述gpio_get_level()获取 GPIO 引脚电平gpio_set_level()设置 GPIO 引脚电平使能控制函数描述gpio_get_enable()获取 GPIO 使能状态gpio_set_enable()设置 GPIO 使能状态去抖控制函数描述gpio_get_debounce()获取 GPIO 去抖配置gpio_set_debounce()设置 GPIO 去抖配置中断触发类型函数描述gpio_get_itype()获取 GPIO 中断触发类型gpio_set_itype()设置 GPIO 中断触发类型上下拉配置函数描述gpio_get_pull()获取 GPIO 上下拉配置gpio_set_pull()设置 GPIO 上下拉配置功能选择与信息函数描述gpio_get_fsel()获取 GPIO 功能选择值gpio_get_info()获取引脚的 GPIO 信息gpio_custom()执行自定义 GPIO 操作第二部分硬件模块接口 (gpio_hw.h)配置结构体gpio_hwmod_t定义已加载的 GPIO 硬件模块实例字段类型描述hdlvoid*dlopen()返回的模块句柄phybase-GPIO 控制器的物理基地址argschar*硬件驱动的子选项字符串pins_per_bank-每个 bank 的最大引脚数默认 32num_banks-GPIO bank 总数默认 1bank_index_id_map-bank 索引到 ID 的映射数组NULL 索引即 IDreserved[8]-保留字段gpio_helpergpio_helper_tio-gpio 提供的辅助函数hwfuncshwmod_funcs_t硬件模块实现的回调函数操作接口hwmod_funcs_t资源管理器通过此结构体调用硬件特定操作回调签名描述必需gpio_initint32_t (*)(gpio_hwmod_t*)初始化硬件模块是gpio_finivoid (*)(void)清理硬件模块是gpio_dirint (*)(gpio_header_t*, gpio_dir_t*, uint8_t set)获取/设置引脚方向是gpio_enableint (*)(gpio_header_t*, gpio_enable_t*, uint8_t set)启用/禁用引脚-gpio_levelint (*)(gpio_header_t*, gpio_level_t*, uint8_t set)获取/设置引脚电平是gpio_pullint (*)(gpio_header_t*, gpio_pull_t*, uint8_t set)获取/设置上下拉-gpio_get_fselint (*)(gpio_header_t*, int32_t *fsel)获取功能选择值-gpio_itypeint (*)(gpio_header_t*, gpio_itype_t*, uint8_t set)获取/设置中断类型-gpio_debounceint (*)(gpio_header_t*, int32_t *debounce, uint8_t set)获取/设置去抖-gpio_customint (*)(gpio_header_t*, void *data)厂商特定操作-reserved[8]-保留字段-调用约定: 所有带uint8_t set参数的回调遵循统一约定set ! 0将配置应用到硬件set 0从硬件读取当前状态到结构体第三部分io-gpio 交互流程1. 模块加载io-gpio 通过dlopen()动态加载硬件模块句柄存储在hdl中。2. 初始化资源管理器调用gpio_init()准备硬件传入完整的gpio_hwmod_t结构体使模块可访问基地址 (phybase)、参数 (args) 和辅助函数。3. 运行时操作应用程序的 GPIO 请求方向、电平、中断类型等由 io-gpio 转换为对相应hwmod_funcs_t回调的调用。gpio_header_t携带引脚和 bank 标识符。4. 清理模块卸载时调用gpio_fini()释放硬件资源。gpio_helper_t结构体提供 io-gpio 的辅助函数硬件模块可调用它们实现双向交互。相关参考SPI 框架技术说明 — 类似的设备驱动框架Devctl 和 Ioctl 命令 — GPIO 相关的命令