nickita startcev (nicka_startcev) wrote,
nickita startcev
nicka_startcev

Categories:

трэш, угар и содомия

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

удобно, хорошо, довольно портабельно и компактно. тотальное "-flto", что приятно, либу не ломает.
есть куча рабочих примеров.

всё пашет - и еем сетевухи, и ацм модемы.

и тут вдруг внезапно всплывает ад с чертями -- при приёме данных по усб, через контрол-интеррапт на нулевой эндпоинт первые 4 байта каждой посылки (обычно) херятся. зависит от конфига и частот, в одних конфигах 4, в других 2 или ноль.

для просто модема цдц-ацм - это фигня, просто модем будет говорить, что он не на 115200 бит/с, а на пщвыщ. на работе это не скажется.

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


а вот я тут полез баттерфляем в выгребную яму -- делать микрософтовский LRNDIS (повод - нерабочая реализация eem в винде. с диверсиями типа отсутствия мс-подписи на мс-драйвере, но зато присутствия кучи ПЛАТНЫХ сторонних драйверов, а также кучи страниц в выдаче гугла на такие типа-драйверы, по которым или нерабочая даже на вид хрень, или вирусы, или платные предложения). а там, вместо тупо пары бульк потоков данных тщательно и обильно применяется типа-настроичный обмен. и в каждой посылке херится первые 4 байта. ровно и стабильно.

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

собственно, ключевым моментом стала формулировка вопроса "а не теряются ли байты при приёме НЕ У МЕНЯ", с дальнейшими разборками про где-как.

в общем, я чуток в офигении.

на данный момент баг исправлен в либопенцм. буду обновляться.
Subscribe

  • ковид и рубиско

    любопытно, если искать рубиско также тщательно, как ковид у непривитых, то у какого процента обследуемых это рубиско найдется? ps: рубиско - это у…

  • игра слов

    если геном лукьяненко отличается от генома человека, то лукьяненко - не человек.

  • и да

    если ПЦРом в крови можно найти рубиско (реально, в эпоху до озонодыры такая хохма была хохмой), то и сожранный вирус свиного гриппа тоже может…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments