libusb
是一个C库,应用程序开发人员可以使用它来编写用于访问USB设备的用户空间驱动程序。 应用程序开发人员无需依赖要为新的USB设备开发的操作系统驱动程序。 可以使用libusb
框架公开的API在用户级别开发驱动程序,而libusb
框架又调用特定于OS的API。 您可以在http://libusb.info/中找到有关libusb
更多信息。
当前支持的Linux®,OS X,Microsoft®Windows®,Android,OpenBSD等都是低端系统。 libusb
已被libusb
移植并libusb
支持,IBM®AIX®是Big-endian操作系统。 应用程序开发人员必须在其现有的libusb
应用程序中更改其大尾数敏感代码,以在AIX上运行。 本文清楚地说明了如何编写libusb
应用程序以及如何在现有应用程序中更改代码的实例,以使其能够在大型字节序系统(例如AIX)上运行。
安装与配置
可以从以下位置下载用于AIX的libusb
rpm: https : //public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/libusb/
可以使用以下命令将rpm安装在AIX系统上:
#rpm -ivh libusb-1.0.19-1.aix7.1.ppc.rpm
支持libusb
的最低AIX版本是7.2TL1和7.1TL4SP3。
默认情况下禁用AIX中的libusb
支持。 必须通过运行以下命令来设置ODM变量来启用它:
#chdev –a usblibconfig="available" –l usb0
usb0
应该处于定义状态,以上命令才能成功执行。 上面的命令以及cfgmgr
命令可以发现libusb
设备。
了解libusb设备
libusb
设备在/ dev文件系统中创建。 这些设备的父级是usb0
。
当libusb
是通过设置启用usblibconfig
属性available
, libusb
设备曝光率,为孩子usb0
。
您可以通过运行以下命令列出所有USB设备:
# lsdev -C | grep usb
对于具有标准操作系统客户端驱动程序的设备(例如闪存驱动器,键盘和鼠标),每个设备都表示为两个设备。 一个是操作系统设备,另一个是libusb
设备。 例如,如果将闪存驱动器连接到AIX系统,则操作系统客户端驱动程序将设备枚举为usblibdev0
, libusb
枚举设备为usbms0
。 如果没有操作系统客户端驱动程序要求一个设备,则该设备仅代表一个设备。 例如,如果将USB摄像机连接到AIX系统,则它将仅表示为usblibdev1
。
对于每个libusb
设备(也具有AIX操作系统内置客户端驱动程序的设备),在ODM中会创建一个名为usbdevice
的新属性,以标识libusb
设备的相应客户端驱动程序的设备。 以下示例显示如何将libusb
设备与操作系统客户端驱动程序的设备关联:
# lsattr -El usblibdev0
speed highspeed USB Protocol Speed of
Device False
usbdevice usbms0 Actual USB Device with Client
Driver False
在此示例中,USB设备是闪存驱动器,其具有内置于Mass Storage Class客户端驱动程序(/usr/lib/drivers/usb/usbcd)
的AIX操作系统。 usbdevice
属性指示与usblibdev0
设备关联的客户端驱动程序的设备为usbms0
。
您可以在以下位置找到有关libusb
设备和相关驱动程序的更多信息: https : //www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.ktechrf2/usblibdd_pass.htm
在AIX上编写libusb应用程序
在本节中,说明了使用libusb
API的三个示例。 这些示例的说明如下:
listdevs:
此示例打印所有连接到AIX系统的设备,并打印其供应商ID(VID),产品ID(PID),总线号,设备地址和端口号。
xusb
:此示例从USB设备读取设备描述符,二进制