eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2021-06-01 10:23 pm

Про излишние уровни абстракции

Один товарищ решил проверить, насколько быстро может работать USB на STM32F103 (ссылка на не очень хороший ресурс). И получились у него совсем невзрачные результаты. На что я в своем духе объяснил, что проблема не в камне, а в используемом HAL'е — библиотечке, написанной ленивыми "индусами" для ленивых же "индусов" (интересно, что толпа ардуинщиков активно этой гадостью пользуется, и ни у кого из них не возникало вопроса о вменяемости этого говнокода). Но товарищ (хоть и вендузятник) все же не слился, а решил "пробить" мои велосипеды. И нашел мою реализацию CDC. ЛОРовец "сокрощенец" подкинул ТСу свою реализацию. В итоге у того родилась очередная статья с проверкой наших двух реализаций USB-CDC.
И что бы вы таки думали? Ему удалось гонять данные с предельной для USB на F103 скоростью — около 12Мбит/с!
Честно говоря, я такого не ожидал (у меня никогда не было цели выжать из USB-CDC все возможное). Однако, учитывая то, что тактовая у F103 всего-то 72МГц, в реальных условиях такой скорости можно достигнуть, лишь если отправлять малые порции данных из памяти в блокирующем режиме (для неблокирующего придется проделать значительную работу, чтобы USB могло пинаться DMA).
Радует, что человек понял, что "ограничение скорости USB на STM32" определяется не самим камнем, а кривостью кода! Правда, сдается мне, что он все равно продолжит использовать калокуб вместо того, чтобы писать код по-человечески. Да еще и вендузятник…

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org