VCP на STM32

Доброе время суток.

Товарищи, может быть кто-то сталкивался с глюками в работе виртуального ком порта на чипах STM32?
В винде работает нормально, а в в арче при попытке прочитать из него данные порт отваливается и перезапускается.
Выхлоп dmesg:
[25945.170934] usb 1-2.4.1: new full-speed USB device number 19 using xhci_hcd
[25945.263865] usb 1-2.4.1: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 2.00
[25945.263871] usb 1-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[25945.263875] usb 1-2.4.1: Product: STM32 Virtual COM Port
[25945.263879] usb 1-2.4.1: Manufacturer: STMicroelectronics
[25945.263881] usb 1-2.4.1: SerialNumber: 1FD3E02BDD14
[25945.271817] cdc_acm 1-2.4.1:1.0: ttyACM0: USB ACM device
[25973.830167] xhci_hcd 0000:00:14.0: WARN Cannot submit Set TR Deq Ptr
[25973.830171] xhci_hcd 0000:00:14.0: A Set TR Deq Ptr command is pending.
[25973.832171] xhci_hcd 0000:00:14.0: WARN Cannot submit Set TR Deq Ptr
[25973.832175] xhci_hcd 0000:00:14.0: A Set TR Deq Ptr command is pending.

[25974.349790] xhci_hcd 0000:00:14.0: WARN Cannot submit Set TR Deq Ptr
[25974.349794] xhci_hcd 0000:00:14.0: A Set TR Deq Ptr command is pending.
[25974.351209] usb 1-2.4.1: USB disconnect, device number 19
[25974.351758] xhci_hcd 0000:00:14.0: WARN Cannot submit Set TR Deq Ptr
[25974.351761] xhci_hcd 0000:00:14.0: A Set TR Deq Ptr command is pending.
[25974.353803] xhci_hcd 0000:00:14.0: WARN Cannot submit Set TR Deq Ptr
[25974.353807] xhci_hcd 0000:00:14.0: A Set TR Deq Ptr command is pending.
[25974.539367] usb 1-2.4.1: new full-speed USB device number 20 using xhci_hcd
[25974.631335] usb 1-2.4.1: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 2.00
[25974.631341] usb 1-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[25974.631345] usb 1-2.4.1: Product: STM32 Virtual COM Port
[25974.631348] usb 1-2.4.1: Manufacturer: STMicroelectronics
[25974.631351] usb 1-2.4.1: SerialNumber: 1FD3E02BDD14
[25974.641463] cdc_acm 1-2.4.1:1.0: ttyACM0: USB ACM device
Пишу по памяти, раньше встречалиь топики с сообщениями типа WARN Cannot submit Set TR Deq Ptr, даже встречались bug-report - подробности не помню, но связано было вроде бы с USB 3.0 .... С другой стороны, если речь идет о VCP, то можно попробовать blacklist uas
Ошибки не исчезают с опытом - они просто умнеют
vasek
С другой стороны, если речь идет о VCP, то можно попробовать blacklist uas
Не помогло.
Вообще другая железка с linux на борту, которая тоже реализует VCP, работает нормально.
Программатор stlink 2.1, встроенный в nucleo, имеет ядром stm32. И он предоставляет VPC (типа ttyACM0) без всяких проблем. Так что уточнить бы, о чём вообще речь.
akorop
Так что уточнить бы, о чём вообще речь.
Есть самодельная железка на чипе STM32L1xx, которая для связи с внешнем миром представляется как VCP. Софт для неё писал не я, но известно, что там взят пример реализации VCP, который приводится самим производителем. Мне нужно организовать связь с этим зверем. Под виндой проблем нет, а вот в arch (а так же в ubuntu 18) порт определяется, но чтение из него по сути не возможно. Тот, кто писал софт логично указывает на нормальную работу в винде и называет linux "недосистемой" и источником бед.
Мне кажется что дело тут в чем-то другом, нежели в драйверах ядра, по этому и спрашиваю, может у кого есть опыт по программированию этого семейства контролеров и кто-то наведёт на мысли, что с этим можно сделать.
genues
Софт для неё писал не я, но известно, что там взят пример реализации VCP, который приводится самим производителем.
Примеры и библиотеки от ST - это не для слабонервных. Так что можно понять программера. который готов придумать любые отговорки, лишь бы не макаться в это дело опять и не трогать код, основанный на примере. Но факт есть факт: stlink2.1, в котором стоит дешёвый stm32F103CBT, в составе отладочных плат NUCLEO прекрасно исполняет роль конвертера USB-UART под Линуксом. Я использую скорость USART 230400 - никаких проблем. Устройство видится как /dev/ttyACM0 и работает "из коробки".
Попробовать самому сделать USB-Serial на базе stm32 мне, в принципе, интересно, но сейчас не на чем (в моей NUCLEO-64 на USB-разъём выходит контроллер stlink, а не целевой контроллер).
akorop
Примеры и библиотеки от ST - это не для слабонервных. Так что можно понять программера. который готов придумать любые отговорки, лишь бы не макаться в это дело опять и не трогать код, основанный на примере.
Видимо макаться в это придётся мне самому.
akorop, а вы не могли бы показать выдачу lsusb -v для вашего стенда?
Спасибо.
genues
akorop, а вы не могли бы показать выдачу lsusb -v для вашего стенда?

Bus 001 Device 002: ID 0483:3752 STMicroelectronics ST-LINK/V2.1
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x0483 STMicroelectronics
  idProduct          0x3752 ST-LINK/V2.1
  bcdDevice            1.00
  iManufacturer           1 STMicroelectronics
  iProduct                2 STM32 STLink
  iSerial                 3 0673FF504955657867113144
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0069
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              300mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              4 ST-Link Debug
      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     0x01  EP 1 OUT
        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     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         1
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass       2 Abstract (modem)
      bFunctionProtocol       1 AT-commands (v.25ter)
      iFunction               6 ST-Link VCP Ctrl
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
      iInterface              6 ST-Link VCP Ctrl
      CDC Header:
        bcdCDC               1.10
      CDC Call Management:
        bmCapabilities       0x00
        bDataInterface          2
      CDC ACM:
        bmCapabilities       0x06
          sends break
          line coding and serial state
      CDC Union:
        bMasterInterface        1
        bSlaveInterface         2
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval             255
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              7 ST-Link VCP Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        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     0x85  EP 5 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
А вот ещё пример: blue pill с arduino-загрузчиком, видится тоже как ttyACMx
Bus 001 Device 004: ID 1eaf:0004 LeafLabs Maple
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x1eaf
  idProduct          0x0004
  bcdDevice            2.00
  iManufacturer           1 LeafLabs
  iProduct                2 Maple
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0043
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
      iInterface              0
      CDC Header:
        bcdCDC               10.01
      CDC Call Management:
        bmCapabilities       0x03
          call management
          use DataInterface
        bDataInterface          1
      CDC ACM:
        bmCapabilities       0x06
          sends break
          line coding and serial state
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval             255
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        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     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
Большое спасибо.
 
Зарегистрироваться или войдите чтобы оставить сообщение.