arm+linux下usb驱动开发,移植Libusb以及开发应用调试过程
2016-11-09 17:15
706 查看
[SETUP] 2D 00 10
[OUT] E1 01 E8
/home/wangxj/tool_tar/libusb-1.0.20
或者
/home/wangxj/tool_tar/libusb-1.0.9
都可以
移植libusb
make
make install
拷贝到/usr/local/libusb_arm/lib
参考
https://code.csdn.net/snippets/470559
arm-linux-g++ usbtrans.c -o usbtrans `PKG_CONFIG_PATH=/usr/local/libusb_arm/lib/pkgconfig/ pkg-config --cflags --libs libusb-1.0`
修改dev_handle = libusb_open_device_with_vid_pid(ctx, 0xc1ca, 0x005); //vid pid
编译usbtrans
将libusb-1.0.so libusb-1.0.so.0 libusb-1.0.so.0.1.0 拷贝到/usr/lib
运行
[root@me bin]# ./usbtrans
Device Opened
Claimed Interface
Released Interface
[root@me bin]#
libusb_control_transfer(dev_handle, 0x80, LIBUSB_REQUEST_GET_DESCRIPTOR, 0x0100, 0, open_data, 0x0040, 5000)
返回-9 /** Pipe error */
LIBUSB_ERROR_PIPE = -9,
但是高清摄像头,就可以到读到数据
调用libusb_reset_device(dev_handle);可以读到设备描述符
//设备描述符,18个字段
12 01 0101 02 00 00 08 cac1 0500 0000 00 00
bLength bDecriptorType bcdUSB bDeviceClass bDeviceSubClass bDevicePortocol bMaxPacketSize0 idVendor idProduct bcdDevice iManufacturer iProduct
01:设备描述符 02:通信类
00 01
iSerialNumber bNumConfigurations
可能的配置描述符数目
//配置描述符, 9个字段
09 02 4300 02 01 04 40 00
bDescriptorType wTotalLength bNumInterfaces
bCongfigurationValue iConfiguration bmAttributes
MaxPower
两个接口 自给电源 总线电源消耗
//接口描述符-0
09 04 00 00 01 02 02 01 05
bInterfaceNumber bAlternateSetting
bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
接口号 端点数量 CDC控制类 描述此接口的字串描述表的索引值。
以下数据不懂
//05 24 00 10 01
//05 24 01 00 01
//04 24 02 00
//05 24 06 00 01
//端点描述符---端点1
//07 05 81 03 2000 02
设备到主机 中断传输 端点最大数据包 时间间隙
端点1
//接口描述符-1
//09 04 01 00 02 0a 00 00 06
bInterfaceNumber bAlternateSetting
bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
接口号 端点数量 CDC控制类 描述此接口的字串描述表的索引值。
//端点描述符---端点2
//07 05 82 02 2000 00
设备到主机 批量传输 端点最大数据包
端点2
//端点描述符---端点3
//07 05 03 02 2000 00 00 00
主机到设备 批量传输 端点最大数据包
端点3
从以上信息可以知道:
批量输出端点: 0x03
批量输入端点: 0x82
通过libusb_bulk_transfer(dev_handle,0x03,dataout,18,&size,100); 发送数据
通过libusb_bulk_transfer(dev_handle,0x82,datain,sizeof(datain),&size,200);接收数据
:)) 终于走通
2016.05.19
改写usbtrans 直接调用upslibso
发现,如果用comtest先测试一下usb口的收发,然后再用usbtrans测试,就可以收到数据,但是接收数据需要等待1000ms,
而且接收数据不稳定。
[OUT] E1 01 E8
/home/wangxj/tool_tar/libusb-1.0.20
或者
/home/wangxj/tool_tar/libusb-1.0.9
都可以
移植libusb
make
make install
拷贝到/usr/local/libusb_arm/lib
参考
https://code.csdn.net/snippets/470559
arm-linux-g++ usbtrans.c -o usbtrans `PKG_CONFIG_PATH=/usr/local/libusb_arm/lib/pkgconfig/ pkg-config --cflags --libs libusb-1.0`
修改dev_handle = libusb_open_device_with_vid_pid(ctx, 0xc1ca, 0x005); //vid pid
编译usbtrans
将libusb-1.0.so libusb-1.0.so.0 libusb-1.0.so.0.1.0 拷贝到/usr/lib
运行
[root@me bin]# ./usbtrans
Device Opened
Claimed Interface
Released Interface
[root@me bin]#
libusb_control_transfer(dev_handle, 0x80, LIBUSB_REQUEST_GET_DESCRIPTOR, 0x0100, 0, open_data, 0x0040, 5000)
返回-9 /** Pipe error */
LIBUSB_ERROR_PIPE = -9,
但是高清摄像头,就可以到读到数据
调用libusb_reset_device(dev_handle);可以读到设备描述符
//设备描述符,18个字段
12 01 0101 02 00 00 08 cac1 0500 0000 00 00
bLength bDecriptorType bcdUSB bDeviceClass bDeviceSubClass bDevicePortocol bMaxPacketSize0 idVendor idProduct bcdDevice iManufacturer iProduct
01:设备描述符 02:通信类
00 01
iSerialNumber bNumConfigurations
可能的配置描述符数目
//配置描述符, 9个字段
09 02 4300 02 01 04 40 00
bDescriptorType wTotalLength bNumInterfaces
bCongfigurationValue iConfiguration bmAttributes
MaxPower
两个接口 自给电源 总线电源消耗
//接口描述符-0
09 04 00 00 01 02 02 01 05
bInterfaceNumber bAlternateSetting
bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
接口号 端点数量 CDC控制类 描述此接口的字串描述表的索引值。
以下数据不懂
//05 24 00 10 01
//05 24 01 00 01
//04 24 02 00
//05 24 06 00 01
//端点描述符---端点1
//07 05 81 03 2000 02
设备到主机 中断传输 端点最大数据包 时间间隙
端点1
//接口描述符-1
//09 04 01 00 02 0a 00 00 06
bInterfaceNumber bAlternateSetting
bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
接口号 端点数量 CDC控制类 描述此接口的字串描述表的索引值。
//端点描述符---端点2
//07 05 82 02 2000 00
设备到主机 批量传输 端点最大数据包
端点2
//端点描述符---端点3
//07 05 03 02 2000 00 00 00
主机到设备 批量传输 端点最大数据包
端点3
从以上信息可以知道:
批量输出端点: 0x03
批量输入端点: 0x82
通过libusb_bulk_transfer(dev_handle,0x03,dataout,18,&size,100); 发送数据
通过libusb_bulk_transfer(dev_handle,0x82,datain,sizeof(datain),&size,200);接收数据
:)) 终于走通
2016.05.19
改写usbtrans 直接调用upslibso
发现,如果用comtest先测试一下usb口的收发,然后再用usbtrans测试,就可以收到数据,但是接收数据需要等待1000ms,
而且接收数据不稳定。
相关文章推荐
- 在连续两个平台的uboot和Linux系统移植过程中,在千兆网口调试这块都遇到了很大的麻烦。由于寄存器数量庞大,千兆网口MAC和PHY内部结构复杂,MAC和PHY接口种类多,千兆以太网驱动的调试成
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题2---CMAKE配置问题
- Linux 平台上的usb驱动开发,主要有内核驱动的开发和基于libusb的无驱设计。
- Linux 平台上的usb驱动开发,主要有内核驱动的开发和基于libusb的无驱设计。
- ARM-Linux驱动移植--Linux下烧写工具DNW和USB驱动安装
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
- V4L2驱动的移植与应用(二) 分类: arm-linux-Ubuntu 2013-08-16 08:40 511人阅读 评论(0) 收藏
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
- Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结
- ARM-Linux驱动移植--Linux下烧写工具DNW和USB驱动安装
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】
- Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结
- Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结
- V4L2驱动的移植与应用(三) 分类: arm-linux-Ubuntu 2013-08-16 08:41 473人阅读 评论(0) 收藏
- 嵌入式开发远程调试arm-linux-gdb的移植
- ARM-Linux驱动移植--Linux下烧写工具DNW和USB驱动安装
- 基于PXA255部分Linux驱动及Android移植开发小结
- arm-linux-gdb+gdbserver环境搭建以及远程调试
- linux 2.6 USB 驱动移植心得 (转贴)
- Linux下的硬件驱动——USB设备(下)&& Linux下PCI设备驱动程序开发