Про излишние уровни абстракции
Jun. 1st, 2021 10:23 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Один товарищ решил проверить, насколько быстро может работать USB на STM32F103 (ссылка на не очень хороший ресурс). И получились у него совсем невзрачные результаты. На что я в своем духе объяснил, что проблема не в камне, а в используемом HAL'е — библиотечке, написанной ленивыми "индусами" для ленивых же "индусов" (интересно, что толпа ардуинщиков активно этой гадостью пользуется, и ни у кого из них не возникало вопроса о вменяемости этого говнокода). Но товарищ (хоть и вендузятник) все же не слился, а решил "пробить" мои велосипеды. И нашел мою реализацию CDC. ЛОРовец "сокрощенец" подкинул ТСу свою реализацию. В итоге у того родилась очередная статья с проверкой наших двух реализаций USB-CDC.
И что бы вы таки думали? Ему удалось гонять данные с предельной для USB на F103 скоростью — около 12Мбит/с!
Честно говоря, я такого не ожидал (у меня никогда не было цели выжать из USB-CDC все возможное). Однако, учитывая то, что тактовая у F103 всего-то 72МГц, в реальных условиях такой скорости можно достигнуть, лишь если отправлять малые порции данных из памяти в блокирующем режиме (для неблокирующего придется проделать значительную работу, чтобы USB могло пинаться DMA).
Радует, что человек понял, что "ограничение скорости USB на STM32" определяется не самим камнем, а кривостью кода! Правда, сдается мне, что он все равно продолжит использовать калокуб вместо того, чтобы писать код по-человечески. Да еще и вендузятник…
И что бы вы таки думали? Ему удалось гонять данные с предельной для USB на F103 скоростью — около 12Мбит/с!
Честно говоря, я такого не ожидал (у меня никогда не было цели выжать из USB-CDC все возможное). Однако, учитывая то, что тактовая у F103 всего-то 72МГц, в реальных условиях такой скорости можно достигнуть, лишь если отправлять малые порции данных из памяти в блокирующем режиме (для неблокирующего придется проделать значительную работу, чтобы USB могло пинаться DMA).
Радует, что человек понял, что "ограничение скорости USB на STM32" определяется не самим камнем, а кривостью кода! Правда, сдается мне, что он все равно продолжит использовать калокуб вместо того, чтобы писать код по-человечески. Да еще и вендузятник…