您的位置:首页 > 运维架构 > Linux

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,

而且接收数据不稳定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐