乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      usb trace/monitor

       xsx2008 2014-02-18

      usb trace/monitor  

      2012-04-12 17:31:08|  分類: kernel |  標(biāo)簽:usb  libusb   |舉報(bào) |字號(hào) 訂閱

      linux kernel中有一個(gè)選項(xiàng)CONFIG_USB_MON,可以打開kernel的usb protocol monitor功能,在分析usb協(xié)議時(shí)挺有用的。

      打開CONFIG_USB_MON后,重新編譯kernel。新kernel運(yùn)行起來后,可以看到在/sys中加入了以下目錄:
      # cd /sys/kernel/debug/usb/usbmon/                                             
      # ls
      1s 1u 1t 0s 0u

      這樣,cat 0u可以看到所有usb設(shè)備的trace。如果只想跟蹤某條bus上的設(shè)備,可以cat非0的那個(gè)文件,比如1u。

      我手頭上有一個(gè)usb指紋頭。在應(yīng)用程序中,我通過libusb來控制指紋頭、讀取圖像:
          int ret;

          ret = libusb_init(NULL);
          ASSERT(ret == 0);

          devh = libusb_open_device_with_vid_pid(NULL, xxxx_VID, xxxx_PID);
          ASSERT(devh != NULL);

          ret = libusb_set_configuration(devh, 1);
          ASSERT(ret == 0);

          ret = libusb_claim_interface(devh, 0);
          ASSERT(ret == 0);

          libusb_control_transfer(devh, 
              LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT, 
              CMD_INIT, 0, 0, NULL, 0, TIME_OUT); /* CMD_INIT為0xe0 */

          libusb_control_transfer(devh, 
              LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT, 
              CMD_GET_IMAGE, 0, 0, NULL, 0, TIME_OUT); /* CMD_GET_IMAGE為0xe5 */

          img_transfer = libusb_alloc_transfer(0);
          ASSERT(img_transfer != NULL);

          libusb_fill_bulk_transfer(img_transfer, devh, ep_bulk, buf,
              sizeof(buf), cb_img, jcb, 0);

          ret = libusb_submit_transfer(img_transfer);
          ASSERT(ret == 0);

      這樣trace的輸出是:
      e8c14120 1078039890 S Co:1:004:0 s 00 09 0001 0000 0000 0
      e8c14120 1078043182 C Co:1:004:0 0 0
      e8c14120 1078043457 S Co:1:004:0 s 40 e5 0000 0000 0000 0
      e8c14120 1078043548 C Co:1:004:0 0 0
      e8c14120 1078043670 S Bi:1:004:1 -115 16384 <
      e8c148a0 1078043731 S Bi:1:004:1 -115 16384 <
      e8c140a0 1078043823 S Bi:1:004:1 -115 16384 <
      e8483c20 1078043884 S Bi:1:004:1 -115 16384 <
      e8483ca0 1078043945 S Bi:1:004:1 -115 16384 <
      e87dd6e0 1078046323 S Bi:1:004:1 -115 16384 <
      e87dd9e0 1078046445 S Bi:1:004:1 -115 16384 <
      e87dd260 1078046536 S Bi:1:004:1 -115 16384 <
      e87dd2e0 1078046597 S Bi:1:004:1 -115 16384 <
      e87dd3e0 1078046658 S Bi:1:004:1 -115 6144 <
      e8c14120 1078060957 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e8c148a0 1078078182 C Bi:1:004:1 0 16384 = fafbf8fa f5f5f5fa fafafcfa f9f7fafb f9f9faf7 f9f9f7f9 f9f8fcfa f8f9f8f8
      e8c140a0 1078095804 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e8483c20 1078113030 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e8483ca0 1078130134 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e87dd6e0 1078147359 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e87dd9e0 1078165103 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e87dd260 1078182207 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e87dd2e0 1078200073 C Bi:1:004:1 0 16384 = fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe fefefefe
      e87dd3e0 1078206902 C Bi:1:004:1 0 6144 = fefefefe fefefaf4 f7f4f8fe fefefefe fefefefe fefefefe fefefefe fefefefe

      trace的格式可以參考Documentation/usb/usbmon.txt。下面是trace的解析:
      e8c14120 - urb tag
      1078039890 - timestamp
      S - event type. S: submission; C: callback; E: submission error
      Co:1:004:0 - address. urb type+direction:bus no:dev address:endpoint
      s - urb status. 一個(gè)字母或者數(shù)字。如果為字母,則表示setup packet,對(duì)應(yīng)libusb.h中的libusb_control_setup
      00 09 0001 0000 0000 0 - 分別為bmRequestType, bRequest, wValue, wIndex, wLength, data,為libusb_control_setup的成員

      bRequest為09表示SET_CONFIGURATION
      urb status為-115表示EINPROGRESS
      從trace中可以看到libusb_set_configuration和 libusb_control_transfer對(duì)應(yīng)的命令。另外,指紋頭數(shù)據(jù)也可以看到。有關(guān)setup packet的介紹可以參考:

      最后,可以參考
      這里提供了一個(gè)方法,可以用wireshark抓取和查看usb trace。不幸的是,我這里沒有試成功,以后有時(shí)間再試試。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約