Модуль (*.ko)

Тема в разделе "Raspberry Pi", создана пользователем Igor68, 2 мар 2023.

  1. Igor68

    Igor68 Гуру

    Модуль то сделал - и грузится, и устройство создаёт /dev/samhild0, и запись в устройство работает... а вот чтение никак.:(
    За основу взял usb-skeleton.c (есть в исходниках ядра), только изменил PID и VID, ну и имена функций (вместо skel_xxxxx samhid_xxxxx) для чтения не приходит на устройство bulk_in на первую конечную точку, вторая bulk_out работает.
    Собственно интересует (может кто имел дело)...
    вот lsusb -v:
    Код (Text):
    Bus 001 Device 047: ID d362:2312
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         8
      idVendor           0xd362
      idProduct          0x2312
      bcdDevice            1.00
      iManufacturer           4
      iProduct               32
      iSerial                66
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           32
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol    255 Vendor Specific Protocol
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
     
    Если надо, то код как Keil, так и драйвера могу выложить.
    Контроллер at91sam7s256(умеет только 4 конечные точки). подключаю к малине (USB) и модуль для неё собран. Запускаю тестовую программу по ROOT:
    Вот её консоль:
    Код (Text):
    root@pi01:/home/igor/sdb/MOUNT_RPI4/coding/codelite/samhid/samhid/samhid/Release# ./samhid --default --testrd
    Starting samhid...
    Test чтения из устройства (/dev/samhid0): открытие...
    Test чтения из устройства : открытие res=0
    Test чтения из устройства : чтение...
    ^C
    root@pi01:/home/igor/sdb/MOUNT_RPI4/coding/codelite/samhid/samhid/samhid/Release# ./samhid --default --testwr
    Starting samhid...
    Test записи в устройство (/dev/samhid0): открытие...
    Test записи в устройство : открытие res=0

    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
    20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
    30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F

    Test записи в устройство : звпись...
    Test записи в устройство : звпись res=64
    Test записи в устройство : закрытие
    root@pi01:/home/igor/sdb/MOUNT_RPI4/coding/codelite/samhid/samhid/samhid/Release#

     
    Как видно пишет нормально... а при чтении зависает на долго... только <ctrl+c> пологает.
    Если кто знаком - подскажите.