Змінюй хід війни! Допомагай ЗСУ!

stm32f103 usb HID у кого работает в две стороны на win/lin

🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • Автор теми _pasha
  • Дата створення

_pasha

P
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #1
stm32f103 usb HID у кого работает в две стороны на win/lin

привет.
замучался :незнаю:
нужен custom hid
столько вариантов, на поверку не все надежно работает.
те вещи, что не вызывают вопросов и без матюков принимаются в win/lin - не могу до них из компа достучаться. времени на выяснения мало. может случиться что разбирательства затянутся


подскажите плз, особенно если кто запускал на opencm3, что сделали чтобы оно заработало и на прием и на отдачу или хотя бы какой пример взяли на-допилить

спасибо
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #2
Активно использую VCP - отловил все баги, о чем писал тут ещё в прошлом году.
ХИД не юзал, но... как именно выглядит проблема? Хид обнаруживается? Хоть в одну сторону работает?

P.S. Попробуй сгенерировать STM32 кубом проект на безе HAL и проверить там. Если работает - посмотреть как там сделано.
Просто по кубу есть туториалов в интернете.
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #3
да в том и дело. я пилю opencm3 с простейшим хид репортом
причем простейший в Vusb который предлагался(это еще obdev итд итп для AVR) - чето норм не пошел. хер с ним
сделал свой. парсится нормально. подкл откл - не вопрос. все надежно.

примеры с кубом работают ну очень нестабильно

под вендой известная программа USB hid demonstrator показывает исходящий девайс->хост
но :незнаю: входящего нету. endpoint на него завел (в оригинале не было)
т.е. все четко. обработка - бреки поставил. оно туда не заходит.
т.е. чего то я не понимаю
скорей всего ошибка в репорте

я как то делал аналогичную задачу, но там хостом выступал stm32f4 и не требовалось совместимость с осью. не проблема - подправил егойный хост. но это не метод естественно. теперь аукается
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #4
да в том и дело. я пилю opencm3 с простейшим хид репортом
причем простейший в Vusb который предлагался(это еще obdev итд итп для AVR) - чето норм не пошел. хер с ним
сделал свой. парсится нормально. подкл откл - не вопрос. все надежно.

примеры с кубом работают ну очень нестабильно

под вендой известная программа USB hid demonstrator показывает исходящий девайс->хост
но :незнаю: входящего нету. endpoint на него завел (в оригинале не было)
т.е. все четко. обработка - бреки поставил. оно туда не заходит.
т.е. чего то я не понимаю
скорей всего ошибка в репорте

я как то делал аналогичную задачу, но там хостом выступал stm32f4 и не требовалось совместимость с осью. не проблема - подправил егойный хост. но это не метод естественно. теперь аукается

прерывания USB не продолбал? Точно всё обрабатывается?
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #5
а я вот думаю. а почему бы не попробовать вообще нечто инопланетное. чисто на EP0 :D
тем более, примеров есть
HID какбы необязательно
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #6
азаза
процесс идет
уже есть рабочая софта на тест под линем, что тоже вызывало ряд вопросов. и работает с моим экзамплом. т.е. таки пошел курить HID report
:прыгун:
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #7
Так в чем же засада была,поделись,плиз.
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #8
засады какбы не было. была масса какихто разных вариантов, с которыми нужно разбираться а оно затратно по времени. и обязательно какието траблы: то не собирается, то работает в одной оси но не работает в другой.
в итоге, стабильная связка
  1. libopencm3. вот мне она нравится, потому что там все наглядно и культурно.
  2. Глухой HID report
    Код:
    static const uint8_t hid_report_descriptor[] = {
        0x06, 0x00, 0xFF,
        0x09,   0x01,       //; usage (vendor defined 1)
        0xA1,   0x01,       //; collection (application)
        0x19,   0x01,//     ;usage (vendor usage )
        0x29,   0x08,//     ;usage (vendor usage )
        0x15,   0x00,//
        0x26,   0xFF,0x00,
        0x75,   0x08,//     ; report size (8)
        0x95,   0x04,//     ; report count (4)
        0x81,   0x02,//     ; input ()
      0xC0,                        //  END_COLLECTION   
    };
    ващета был даже более тупой вариант. но я гдето его потерял.
    плюс к этому всему - заводим 2 endpoints - прием и передача. никаких там не нужно стандартных запросов HID_SET_REPORT HID_GET_REPORT - они зависят от репорта, репорт штука редкостно мутная.
    Просто обслуживаем в МК interrupt точки. Не забываем, что в дескрипторах их внесли - надо и железо сконфигурировать :D - множественные правки суть много ошибок.
  3. libusb-1.0 для линуха
    тут все предельно просто и ясно, хоть и омрачается необходимостью вручную детачить и диспозить
    Код:
    libusb_init(NULL);
        hid = libusb_open_device_with_vid_pid(NULL,VID,PID);
            libusb_set_auto_detach_kernel_driver(hid,1);
                libusb_claim_interface(hid, 0);
                     /* а тут уже можно передавать принимать*/
                     libusb_interrupt_transfer(hid, EP_RCV_ADDR, data, sizeof(data), &xfr, 1000); // оно само понимает из адреса эндпоинта направление пересылки
                libusb_release_interface(hid,0);
            libusb_set_auto_detach_kernel_driver(hid,0);
        libusb_close(hid);
    libusb_exit(NULL);
    т.е. вот эти все стадии нужно в try-catch засовывать или их аналог на setjmp, тогда попускает :ги:
    но аналог на setjmp будет поумнее плюсового try, потому что можно сгородить конструкцию, которая потребует только одного jmp_buf и решит все проблемы с claim/release и прочими парами действий
  4. libusb-0.1 для выни
    тут некая горбатость и дикая недокументированность имеется, лечится разными обертками. лучше конечно самому написать, благо все нужные сущности оказывается реально перетаскиваются. Но впадлу писать, libusb-1.0 на подходе, активно пилится, вот-вот еще чуть чуть - и будет под венду. Но его все время собирать самому это тоже время. есть всякие варианты типа старинного
    ⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

    работает - и хер с ним.
 
  • 🟠 23:37 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #9
Сейчас работает обмен winlin правда между распи и хрюшей
 
Назад
Зверху Знизу