Тормознутость Ардуино... Сравнение скорости (Arduino vs. AVR vs. STM32)

  Переглядів 74,811

Alexander Guryanov

Alexander Guryanov

6 років тому

Результаты тестов поражают! Arduino могла быть в 28 раз быстрее, а 8-битный AVR может обогнать STM32. Да и сам STM32 может быть до трех раз быстрее, если правильно использовать STDPeriph и тем более CubeMX.
Для проведения тестов я придумал несложный алгоритм, чтоб при помощи логического анализатора измерить скорость выполнения программы на разных микроконтроллерах, с использованием Arduino, AVR ATMega328(Atmel Studio), STM32 (STDPeriph или CMSIS).
#ВТопкуАрдуино #arduino #stm32 #avr
Пожалуйста подпишитесь: / axgxp

КОМЕНТАРІ: 696
@xKyPAx
@xKyPAx 5 років тому
Ассемблер всегда был быстрее. Но жизнь слишком коротка.
@AxGxP
@AxGxP 5 років тому
Тут ключевое слово "БЫЛ"! На современных процессорах и компиляторах (с включенной оптимизацией) придется очень сильно постараться, чтоб на ассемблере написать хоть немного быстрее.
@AxGxP
@AxGxP 4 роки тому
@@kazancevss откуда такая уверенность, может проверим? Это мнение не больше чем ошибочный миф... Если писать правильно на Си, учитывая всякие преобразования типов, явные и неявные, правильно используя типы данных и указатели, имея понятие, как это всё будет выглядеть после компиляции, то компилятор оптимизирует проект намного лучше, чем человек. А главное намного быстрее и без банальных ошибок присущих человеку! К тому-же в Си вполне возможно будет что-то подредактировать и это не приведет к необходимость переписывать заново всю функцию, компилятор сам все переоптимизирует. Ассемблер имеет смысл только там, где нужно четко зафиксировать количество байт, тактов, и выполнять инструкции в четкой последовательности, или для выполнения экзотических инструкций процессора, которые не предусмотрены языком Си (например барьеры памяти). P.S. работаю с ARM Cortex-M3 именно на этом микроконтроллере согласен сравнивать C vs ASM. Всякие древние x86 не предлагать!
@AxGxP
@AxGxP 4 роки тому
​@@kazancevss ну вот, что и следовало доказать, вы говорите про микроконтроллер с набором инструкций 90-х годов. Меня тоже когда-то очень удивило, как на практике автоматическая оптимизация творит чудеса... Нет смысла писать проект на ассемблере для Cortex-M, не получится заметно лучше, какие-то места может и лучше, а какие-то хуже, в общем в лучшем случае ничего не изменится. Тут больше инструкций предназначенных для конкретных целей, меньше свободных регистров, не остается особо места для всяких извращений и полета фантазии. Большинство узких мест старых процессоров, типа условных переходов, обращений к памяти, извлечения полуслов и изменения отдельных битов, имеет свои специальные инструкции и нет никакой необходимости изобретать велосипед, все делается аппаратно. Кстати только вчера мне нужно было перевести данные little-endian в big-endian, и тут как раз воспользовался вставкой единственной ASM инструкции, REV16, как заставить это сделать компилятор я не знаю. Но писать целиком на асме не имеет никакого смысла... Тут главный вопрос именно в том, что опытный программист знает как написать, чтоб это было оптимально. Для этого конечно нужно знать архитектуру, знать команды ассемблера и понимать, как заставить компилятор сделать то, что хочется, как подсказать ему, что именно и как именно нужно оптимизировать... Всё это нужен опыт, и именно опытность программиста в большей степени определит быстродействие и компактность. А количество ошибок в Си-шном варианте будет точно меньше, хотя-бы только потому, что там меньше строк.
@AxGxP
@AxGxP 4 роки тому
@@kazancevss Мне тоже несколько раз дизассемблировать приходилось. Так вот, что скажу, это не компиляторы кривые, это руки кривые у тех кто библиотеки к этим ARM-ам писал. Там только от этих вложенных функций на одно действие с ума сойти можно... Ни к чему не призываю, у каждого есть свой опыт, свое мнение. Взаимно))
@Violancergta
@Violancergta 4 роки тому
Я на асме пики прогаю.. евли честно , то переход на arm на си как глоток воздуха. да , код больше, ручной оптимизации нет , код работает медленнее, но не критично. а вот скорость неписан я проги в разы увеличилась. да и бошка не болит к вечеру,
@SkyVladTV
@SkyVladTV 6 років тому
Шикарный монтаж, это ж какой труд! Уважаю специалиста в своем деле!
@alexs8579
@alexs8579 4 роки тому
Такое счас не только в мире микроконтроллеров, но и в мире софта. Большое количество надстроек программирования, порождающих другие надстройки, ведет к тому, что тормознутость нивелируется увеличением тактовой частоты и количеством ядер. Мы с этим столкнулись еще во времена ВИН95, когда написанная на ассемблере мультиоконная графическая ОС умещалась на дискете 1.44 и работала на самом слабом железе, позволяя реанимировать че-то пк. тогда еще не было лайв сиди или рекавери флешек. Немного отступления: "и возомнили люди себя богами"... "и смешал он их языки, что бы не могли они понять друг друга" .... Да тут и смешивать не надо, мы сами себя закапываем в расстантартизации и увеличении паразитного кода. Вместо того, чтобы заставлять думать, мы все создаем и создаем "более дружественный интерфейс" и как результат сравнивая по моей отрасли качество софта с 15 летним... извините, но доступность и легкость и скорость написания идет в ушерб надежности и простоты. Есть незыблимый закон физики чем больше шестеренок в механизме, тем меньше его КПД.
@user-jp8kv1ts5q
@user-jp8kv1ts5q 4 роки тому
Наверное по этому сейчас в новом железе нету поддержки Windows XP, она просто быстрее Windows 10. Пробовал на своём уже старом ПК на 1156 сокете, жаль ХР лишилась поддержки ряда нужных мне программ, так бы на неё перешёл а так на Windows 10 LTSC сижу.
@user-il4kd9qq3y
@user-il4kd9qq3y Рік тому
Колибри??? )
@user-vf1jm9rr8t
@user-vf1jm9rr8t Рік тому
Бесконечное согласие с комментом
@sam_po_sebe_35
@sam_po_sebe_35 10 місяців тому
Все просто, стоимость машинного времени сейчас ниже стоимости времени работы программиста.
@Argentum79
@Argentum79 6 років тому
Аж слеза навернулась... :( спасибо.
@treugolinik
@treugolinik 5 років тому
Длинная беседа и как посмотрю людей критикующих библиотеки и платформу ардуино не мало ну так в том и смысл OpenSource чтоб пониммающие ребята писали библиотеки и проги лучше так давайте создадим репозиторий в который зальем переписанные и оптимизированые библиотеки дадим советы как писать тру код для ардуинки чего попусту языком теребить. Перепишем IDE убрав JAVA из него и добавив елементарных функций, напишем модуль и конфиги для более простой работы с Vim. Лично как по мне Arduino дала толчок к тому чтоб больше людей интересовались програмированием и хардуером а функция знающих и понимающих ну как все тут давать более точные и правельные знания.
@MaiklTil
@MaiklTil 5 років тому
Правильные мысли!
@logicfacts9964
@logicfacts9964 5 років тому
Наоборот Ардуино остановил развития даст возможность дебилов делать свои программы и проекты и распространят их на вес мир, а те кто смогли бы сделать это все профессионально остались без работы и пошли мыть туалеты. Ардуинчики их хлеб взяли а они им будут помагат да? Все эти опен сорс проекты как Arduino, Raspberry Pi, CMS, и так далее хрен делают что бы установит технического развития и убит малый и средний бизнес и остались одни корпорации и разумеется Ардуинчики дебилы. Тот кто хочет он и без Ардуино может заниматься электроники и делать свои проекты, только после Ардуино он эти проекты некому продавать, потому что каждый дебил скачает все на готово и сделает себе что захочется
@LiebGoth
@LiebGoth 5 років тому
@@logicfacts9964 ахахахахаха))))))
@LiebGoth
@LiebGoth 5 років тому
Ахахахахаха, ардуинщики отняли работу у настоящих программистов и инженеров, ахахахахаха)))))))
@logicfacts9964
@logicfacts9964 5 років тому
@@LiebGoth А ты все время о себя та у себя. Хватит о себя. Если ничего разумного сказать не можеш лучше стой молча
@peterlents983
@peterlents983 5 років тому
Все супер, но блин Ц.Э.Л.К.А.!!! Пин читается - КЛОК! :)
@Bagasl
@Bagasl 4 роки тому
Ну зачем так качественно и наглядно, придется подписаться и поставить лайк
@user-fs7ml9ql9q
@user-fs7ml9ql9q 4 роки тому
Монтаж и в целом подача великолепны А возможности оптимизации кода под восьмибитный AVR поражают
@durnevm
@durnevm 5 років тому
Важную проблему подняли, ведь многие пишут лишь бы работало, и не задумываются об оптимизации, в лучшем случае надеются на компилятор или на то что уж библиотеки то написаны как нужно и профессионалами. Понятно новичку принцип - "лишь бы работало" подходит. Опыт приходит с проектами, но вы этим видео заронили мысль о том что - все равно можно сделать лучше. И как раз это и есть толчок к развитию. Спасибо за ваш труд!
@user-jz7qw2cv2p
@user-jz7qw2cv2p 5 років тому
Спасибо за видео, полезная информация.
@looowblooow7508
@looowblooow7508 5 років тому
Вот это работа. Молодец. Теперь для меня все стало еще интереснее!!!
@user-be8nn7nr4f
@user-be8nn7nr4f 5 років тому
Спасибо! Очень интересно! Хорошая работа.
@TheIntellekt
@TheIntellekt 5 років тому
Очень круто! спасибо! если есть возможность то сделайте такой обзор на PIC!
@AxGxP
@AxGxP 5 років тому
PIC-ами сейчас не занимаюсь, хотя начинал с них, давно, когда-то. По цене они дороже и обычно имеют достаточно узкую спецификацию. Нет той универсальности... Сейчас большинство производителей перешли на STM, чего и Вам рекомендую.
@AxGxP
@AxGxP 5 років тому
@easyJet А с чего бы им переставать? У них объемы продаж микроконтроллеров огромные, они могут себе позволить снижать цену за счет количества продаж. Сейчас STM32 уже во все, что угодно пихают, от mp3 плееров до роботов и промышленной автоматизации... Даже если ST поднимут цену (что вряд-ли) остается еще множество аналогов на тех-же Cortex-ах. Да и у ST уже есть полные китайские аналоги, еще дешевле и даже быстрее Giga Device (GD32). Кто перешел на ARM-ы назад не вернется!
@HamsterTime
@HamsterTime 6 років тому
Не очень понимаю в програмировании, но было интересно)
@Vlad_4572
@Vlad_4572 5 років тому
Hamster Time , понимаю чуть больше, но тоже было интересно)
@33KK
@33KK 5 років тому
Нифига не понял, но очень интересно)
@XYZ.cnc.
@XYZ.cnc. 5 років тому
@@33KK слышу какой то набор звуков и всё ровно интересно )))
@user-zi1hf6xn2w
@user-zi1hf6xn2w 4 роки тому
@@XYZ.cnc. , не смотрел видео, но интересно. Кажется, дальше абсурдность поднимать уже некуда )))
@user-vt3bh9vg5z
@user-vt3bh9vg5z 4 роки тому
Вы о чем? Очень интересно :))
@user-ve8om5zg3s
@user-ve8om5zg3s 5 років тому
Спасибо за труды! Если хорошо разбираешься в электронике и мк расскажи. Создай отдельный плейлист из серии уроков по электронике и мк. Здорово услышать человека, который разбирается.
@AxGxP
@AxGxP 5 років тому
Таких уроков в youtube не мало, например погуглить программирование stm32. Конечно везде есть ошибки... Но как говориться, не ошибается тот, кто ничего не делает. Информации много, учитесь, разбирайтесь, никто вам свои мозги не подарит. Есть конкретные вопросы, задавайте, отвечу.
@user-cu6fm5ti8s
@user-cu6fm5ti8s 2 роки тому
Без ардуино библиотек мы бы не получили столько энтузиастов и будущих инженеров. За это разработчикам спасибо. И за видео спасибо. Всё так, как и должно быть.
@user-vf1jm9rr8t
@user-vf1jm9rr8t Рік тому
Очень спорно, особенно по поводу будущих инженеров. Осмелюсь предположить, что "ардуинщиков" мы получили сильно больше, но толку то от них? Также, осмелюсь предположить, что без ардуино библиотек инженеров было получено сильно больше. Короче, корелляции между количеством инженеров и существованием ардуины нет.
@sergey7dvd
@sergey7dvd 4 роки тому
Аж тронуло. Спасибо за видео. Кайфанул от просмотра))
@user--22
@user--22 3 роки тому
Зачёт! Благодарность! Респект!
@makoveliprod
@makoveliprod 6 років тому
Кстати, если на AVR переписать вывод данных типа i2c spi на ассемблер, то можно еще раз в 5 ускорить выполнение передачи 8 бит данных. В ассемблере AVR есть специальные команды, ускоряющие вывод отдельных битов в порт. Только вот компиляторы на это забили... Ну и время входа в прерывание тоже затягивается в пару раз из-за сохранения огромного количества регистров перед выполнением тела прерывания (потому что си).
@TheMorpheus017
@TheMorpheus017 6 років тому
Обычно использую avr-gcc, он без проблем оптимизирует установку/снятие бита через битовые операции с чтением в одну инструкцию sbr/cbr
@windy_sky
@windy_sky 5 років тому
Нормальное ПО стоит денег, а эта халява всегда боком выходит.
@kardanium
@kardanium 5 років тому
Почему забивают? Код: PORTx |= (1
@ktspn
@ktspn 3 роки тому
Очень круто! Желаю успехов, видео просто отличное
@markgajevskis8824
@markgajevskis8824 5 років тому
Как STM Microelectronics говорит: разработка Std peripheral library была прекращена. Взамен появились HAL и LL. Былобы интересно их быстродействие увидеть. 👍🏻
@vovan5341
@vovan5341 5 років тому
Скачайте и посмотрите. Потом тут напишете. :-)
@user-tt3pb2ry6w
@user-tt3pb2ry6w 5 років тому
Спасибо, было полезно
@electronicsashobby
@electronicsashobby 5 років тому
Видео познавательное. Еще интересно было бы взглянуть на скорости работы ОСРВ, например, FreeRTOS при выполнении тех же задач. Автору спасибо.
@BorisYutube
@BorisYutube 3 роки тому
Спасибо за видео!!!
@user-et2ce9nt4l
@user-et2ce9nt4l 5 років тому
Вот это я понимаю ролик! Класс!
@Legantmar
@Legantmar 6 років тому
спасибо. интересный обзор. очевидна плата за удобство программирования без изучения ассемблера и регистров. было бы интересно посмотреть на обзор esp8266 и ее "разгон"
@terrakottech417
@terrakottech417 6 років тому
Великолепное видео (да и весь канал), спасибо! В ответ тем, кто пишет, что Arduino это игрушка для детей и т.п. могу сказать, что всё зависит от поставленной задачи. Минусы Arduino известны (согласен со всем, что сказано в видео, в т.ч. в поле «фанатам Arduino не читать» :) ), но его плюсы это быстрота и простота реализации ряда задач. Притом человеку практически не нужно обладать никакими знаниями в области программирования и схемотехники. Если для реализации задачи достаточно быстродействия и функционала (самого дешёвого китайского) Arduino (и тех малых знаний человека), то не важно, во сколько там раз родной AVR, или STM будет быстрее. Можно сделать сравнение с тем, что нет смысла стрелять с пушки по воробьям, когда их можно поразить пневматической винтовкой. Ну и конечно для того чтобы заинтересовать детей (и не только) данной темой, Arduino, я думаю, подходит лучше чего-либо другого. P.S. Говорю всё это как человек, впервые познакомившийся с программированием AVR на ассемблере, а уже потом программировавший AVR на C в то время когда Arduino ещё не был таким популярным.
@AxGxP
@AxGxP 6 років тому
+TerraKOT Tech Все так, для тех кто не умеет программировать и не знает английский это вероятно единственный выход. Но мне странно то, что никто не хочет исправить элементарные ошибки во встроенных функциях. Да и в библиотеках ошибок хватает, так что надеятся на стабильность работы таких программ я бы не стал.
@terrakottech417
@terrakottech417 6 років тому
Полностью с этим согласен. Ситуация действительно странная. Когда есть ошибки в библиотеках и функциях (и вообще код не оптимизирован) это очень нехорошо. Похоже на то, что для разработчиков стало важнее рубить бабло на продажах, а не совершенствовать Arduino.
@user-yo1hz6et8f
@user-yo1hz6et8f 5 років тому
В свое время ВМ80 в HEX программировал, то еще удовольствие) Зато фундамент в понимании программирования просто железобетонный дает.
@FLomasterZ
@FLomasterZ 4 роки тому
@@terrakottech417 Нет ничего странного. Рубят бабло, экономят на программерах. Библиотеки явно кто-то бухой сонный и зеленый пишет. Во многих девайсах тырят опенсорс и не открывают код по лицензии, чтобы скрыть позор и подлог.
@Vlad_4572
@Vlad_4572 4 роки тому
@@AxGxP , они стали исправляться. Время выполнения некоторых команд сократили до адекватного.
@sergeyvp
@sergeyvp 5 років тому
Скорость выполнения программы это половина проблемы. Решил тут сделать один проект связанный с шаговыми двигателями, взял простейшую функцию управления шаговиком под ардуино, а затем ту же функцию переписал в студии, размер прошивки уменьшился в четыре раза. И это я ещё ничего не оптимизировал.
@AxGxP
@AxGxP 5 років тому
Достаточно часто программистам приходится искать компромисс, между скоростью выполнения и объемом использованной памяти. Но к ардуино это не относится)))
@user-tx8om1kg1q
@user-tx8om1kg1q 3 роки тому
Крутое видео. Спасибо.
@Drex_Andrey
@Drex_Andrey 5 років тому
Красиво и доходчиво. Но развязка настолько трагична, что аж слеза навернулась. Но тем не менее, лайк
@user-jr5wg1um6e
@user-jr5wg1um6e 4 роки тому
Очень хорошая тема, безукоризненная работа, шикарный видос!
@saturn9754
@saturn9754 5 років тому
Это должен знать каждый!!!И вообще,Ардуино -это просто материнская плата микроконтроллера,обвязка,питание и пины для подключения к портам...для начала можно работать в Ардуино,а потом перейти на AVRSTUDIO...для большинства задач автоматики возможностей этого контроллера вполне хватит...
@user-zi8kn9sl1g
@user-zi8kn9sl1g 3 роки тому
я БЫ ПЕРЕШОЛ ДАК ВЕДЬ НЕЗАДАЧА ПОД СТУДИО НУЖЕН РЕАЛЬЬНО ДОРОГОСТОЯЩИЙ КОМП
@user-mj7ry1ir5o
@user-mj7ry1ir5o 2 роки тому
@@user-zi8kn9sl1g что за бред? Любой комп подойдет.
@Popugaj4ik
@Popugaj4ik 4 роки тому
Так вот оно что Михалыч! А я то думал, почему микроконтроллеры такие медленные. А они на самом деле жесть какие быстрые.
@user-xp6xi2uw9e
@user-xp6xi2uw9e Рік тому
Респект!
@enisykin1299
@enisykin1299 4 роки тому
было интересно!
@user-qk1vf9cg9i
@user-qk1vf9cg9i 4 роки тому
Невероятно ценный и полезный эксперимент Вы провели, показав, что ардуино в помойку, индусские библиотеки STM тоже в помойку. Для Real-time программ ( например оцифровка звука внутренним АЦП и передача его по радиоканалу посредством СС1101) программа пишется, только путем жесткого "вкуривания" даташита и жесткого обращения к регистрам и битам. Только так.
@lekuriable
@lekuriable 5 років тому
Великолепно !!!
@user-qg8cs1yh4c
@user-qg8cs1yh4c 4 роки тому
Хороший ролик!
@user-cv7um1ds7m
@user-cv7um1ds7m 5 років тому
Обзор просто супер!
@user-cn6iv4xs4g
@user-cn6iv4xs4g Рік тому
О! Интересно было бы увидеть подобное сравнение stm с esp32...
@yehorpererva181
@yehorpererva181 5 років тому
Прекрасное сравнение. Хотя стоило бы добавить сюда же mbedOS
@PiFonCHEG
@PiFonCHEG 3 роки тому
Очень познавательно, спасибо за Ваш труд! На скольки МГц работает STM32 в этом тесте?
@AxGxP
@AxGxP 3 роки тому
На максималке, 72 MHz.
@Letivnebo
@Letivnebo 6 років тому
Супер
@viyacheslav.
@viyacheslav. 4 роки тому
Зачетное видео!
@ruslan.zhumabai
@ruslan.zhumabai 3 роки тому
грамотное видео. скажи плж где можно научиться программировать мк авр на си с нуля?
@AxGxP
@AxGxP 3 роки тому
Где - нет разницы. Главное желание и соответствующий склад ума. Поймите, где бы Вы не учились, никто вам свои мозги не поставит. 90% зависит от Вас, и только 10% от "учителей".
@Danshyn
@Danshyn 4 роки тому
прям блокбастер в мире микроконтроллеров ))) за работу респект
@KolyuhaKostylev
@KolyuhaKostylev 6 років тому
Я только начал знакомство с ардуино, а тут такое, мало чего понял, но скорости вычисления впечатляют! Сейчас почувствовал себя пятилетним ребёнком, что я фигнёй занимаюсь...
@andreikashin
@andreikashin 5 років тому
качество на высоте
@tarasn.6892
@tarasn.6892 3 роки тому
Ничего не понятно, но очень интересно. P.S. Лайк прставил 😂
@banzay989
@banzay989 5 років тому
Голос, подача материала, а сам метериал!) Браво!)
@user-vg9nq5rj3w
@user-vg9nq5rj3w 4 роки тому
Годный контент!
@81n90
@81n90 3 роки тому
Монтаж ролика збз, красава! По теме - чем ниже уровень и опытнее и внимательнее прогер, тем быстрее исполнение. На асме было бы ещё быстрее. Но в наше время, стоимость железа, несравнимо меньше по сравнению со стоимостью работы прогера. Мы тож кушать хотим и не только электроэнергию ) А ещё ведь может быть целая компания, со сроками и все хотят кушать. Поэтому много раз наблюдал наращивание кластеров в датацентрах, без допиливания оптимизации проектов. А вы тут про копеечные контроллеры.
@tutralex
@tutralex 5 років тому
Да, Arduino кривой, тут поддерживаю, но теория заговора в конце ролика - это просто смешно. То, что там наставляли проверок параметров - это нифига не заговор разработчиков (StdPeriph). Эти проверки по умолчанию не производятся, пока не раскомментировать или не поменять некоторые определения (USE_ASSERT_INFO/USE_FULL_ASSERT), так что никакой дополнительный код не генерируется. Конечно это не inline-функции и есть расходы на передачу параметров через регистры, переход и возврат из функции, но назвать это ошибкой, заговором или криворукостью разработчиков - бред!
@AxGxP
@AxGxP 5 років тому
Ну так и посмейтесь, youtube же развлекательный портал! А то, что по вашему "бред" - факт давно признанный производителем. Мне вот интересно, почему так StdPeriph защищаете, к MCD Application Team имеете отношение? Хотя нет, знали бы, что ST сами считают ошибкой создание STDPeriph, в связи с безнадежностью реализации, и даже создали специальную утилиту, для автоматической миграции с STDPeriph на LL.
@tutralex
@tutralex 5 років тому
Ссылок на пруфы конечно же не будет? Давайте вы не будете говорить за ST, а просто покажете где они сказали, что STDPeriph - ошибка (именно ST). Далее, возьмем любую функцию из STDPeriph, которую вы назвали кривой, например GPIO_SetBits: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Pin)); GPIOx->BSRRL = GPIO_Pin; } Код одной строкой, но разбирающийся программер поймет. И так, если там исключить проверку параметров (assert_param), а она по умолчанию выключена, я писал уже об этом, то остается GPIOx->BSRRL = GPIO_Pin; - это и есть прямое обращение к регистрам, просто завернутое в функцию GPIO_SetBits. Ну и в чем тут криворукость разработчика? Да, это не inline функция, но это ж библиотека!!! Они дали вам возможность легко включить ловушки возможных ошибок, при отладке, а вы называете это криворукость!ю? Посмотрите правильные примеры кода, как этим вообще пользоваться.
@tutralex
@tutralex 5 років тому
В целом же, мне ваше видео понравилось, так как заморочились, измерили, и показали на сколько медленный код компилирует Arduino. По поводу STDPeriph, может у вас каким-то образом не были выключены assert_param, поэтому получился на выходе медленный Debug код, а не оптимизированный Release?
@AxGxP
@AxGxP 5 років тому
Нет, дело не в assert_param, они не были включены. Задержка возникает именно из-за вызова функции. Если посмотреть листинг disasm, то разница небольшая, всего в две команды, но появляется 32-битная команда перехода, из-за неё и возникает большая задержка. Дело в том, что контроллер flash памяти(FLITF), в которой и находится программа, работает на частоте всего 8MHz (FLITFCLK всегда подключен к HSI). Чтоб обеспечить возможность выполнения программы на частоте ядра 72MHz на шине ICode существует 2х64-бит буфер (prefetch buffer), в который и читаются команды процессору с опережением. Но когда мы вызываем функцию линейное чтение памяти нарушается, и ядро вынуждено ждать пока медленный контроллер памяти считает команды по нужному адресу, а при возврате из функции эта ситуация повторяется. При написании программ нужно знать этот нюанс. В библиотеках LL это уже учтено! Все короткие функции имеют директиву inline, что в несколько раз повышает производительность и уменьшает код. По поводу того, где ST сказали, что это ошибка даже не стану искать, это на какой-то конференции было, естественно, что они не идиоты, и не напишут у себя на сайте что их продукт фуфло. Но косвенно об этом можно судить и на сайте. Попробуйте скачать STDPherip на официальном сайте, вам сразу предложат HAL, LL и даже утилиту SPL2LL для переделки вашего проекта с STDPeriph на LL.
@AxGxP
@AxGxP 5 років тому
Хоть я и продолжаю использовать SPL в своих проектах, уже учитывая многие ошибки, мое отношение к её разработчикам уже никогда не поменяется. Из-за ошибки в библиотеке I2C я когда-то потратил неделю или больше времени, чтоб запустить тогда еще засекреченный DMP (Digital Motion Processor) на MPU6050. Какие сложности были, чтоб получить хоть какую-то документацию, подписание всяких соглашений о неразглашении и т.д. а оно нихера не заработало. Я уже тогда начал думать, что IvenSense не все документы дали, или специально какую-то ошибку в них сделали. И даже посоветоваться не с кем, в инете инфы конечно тоже нет. Только после долгих колупаний с логическим анализатором, я обнаружил, что MPU5060 зависает именно после передачи трехбайтной последовательности. Все заработало, только после того, как я сам переписал эту библиотеку.
@Konoplj2010
@Konoplj2010 5 років тому
Молодец! Приятно осознавать что в нашем мире кроме "Упоратых Ардуинщиков" есть ещё и нормальные специалисты. Когда я пытался сделать такое же видео то меня так обплевали в комментах что я даже не рад был что я вообще принялся пояснять людям что кроме Ардуинки ещё есть на чём можно работать. Лайк.
@user-kn8xo9jd7l
@user-kn8xo9jd7l 2 роки тому
Я на всякий случай подпишусь =)
@tonyb7977
@tonyb7977 3 роки тому
Когда-то давно проводил похожий эксперимент, но с объёмом кода. Был небольшой проект, где хотел использовать оставшиеся залежи ATTiny2313a-SU с мизерным 2КБ ROM (но всё же больше чем на Tiny13). Код незамысловатый, но чуток длинноват. Arduino IDE хронически не переваривал с самого начала, но ради смеха попробовал и на нём. Получилось почти 5КБ скомпилированного бинаря, который ну никуда не годился.... В AVR Studio почти вписался, но "почти" не считается. Пожже получилось оптимизировать код до 900Б с хвостиком, но это уже пост-фактум. Почитал немного макулатуры по AVR assembly, покопошился по даташиту, перевёл прогу один-в-один из С в ассемблер, попил кофе, добавил пару мелких оптимизаций, и в итоге получил 500 с лишним байт делающих то же самое что и всё вышеупомянутое. Оставшееся место использовал под пару сабрутин самодиагностики получившегося девайса. Кстати, всем скептикам и пессимистам, когда речь идёт об ассемблере на AVR, то на практике всё пишется так же интуитивно и просто как и на С. Особенно если есть привычка не юзать чужие модули и сниппеты слепо скачанные из инета. Во многом даже интуитивнее чем С или С++ конкретно в этой ситуации.
@sergnova528
@sergnova528 2 роки тому
а я вот на авр пишу сам все без библиотек через регистры , а вот ассемблек никогда не пробовал . и хотел бы чтобы мне подсказали лучшую книжку для того чтобы ассемблер для авр именно научится
@tonyb7977
@tonyb7977 2 роки тому
@@sergnova528 Лучшая литература - это даташит микроконтроллера и application notes, а если с регистрами уже привычно работать, то переход вобще будет безболезненный. Я как бы и сам не спец в ассемблере, но AVRASM настолько простой что там не запутаешься. Там всего сотня с хвостиком инструкций из которых повседневно будут использоваться от силы полтинник. Главное попрактиковаться с branch инструкциями, прерываниями, периферией после этого разницы от С не ощущается. Даже AVR Studio использовал только для отладки если было лень разбираться где накосячил. По началу ещё заглядывал на avrfreaks и просматривал интересные проекты на хабре и радиокоте. На ARM до сих пор не рискнул на асме писать. Ознакомительный курс прошёл, книжку прочитал, но там всё настолько запутанно, что можно только охарактеризовать фразой "стопиццот методов сложить 2+2". Там лучше на С/С++, да и обилие ресурсов не требует такой оптимизации.
@IgorChudakov
@IgorChudakov 4 роки тому
А можно ещё сравнить STM32 CMSIS vs. оптимизированный HAL? Или уже было, всё-таки 2 года прошло?
@personamems
@personamems 4 роки тому
Отличная работа! Вы, гений! Хоть у кого-то голова работает. Ардуино превратило хорошее железо в игрушки
@dreinakh
@dreinakh 4 роки тому
Это, блин, и была задача ардуины - создать плату разработки понятную студенту 1го курса или даже школьнику. Код всего этого барахла открыт, но вместо того чтоб поправить косяк в либе народ ноет на ютубе.
@user-zo4gz1vc3m
@user-zo4gz1vc3m 5 років тому
Могу дать прогноз.... С появлением искусственного интеллекта в бытовом уровне отпадет необходимость в знании языков программирования. Мы будем иметь устройство в виде ящика с входными и выходными шинами данных, а любой человек просто будет формулировать голосом свойства на входе и выходе устройства. Код и алгоритм выполнения будет писать искусственный интеллект. Это упрощённый пример . Я думаю моё видение подтвердится.. )))
@AxGxP
@AxGxP 5 років тому
Ага, сейчас люди друг-другу объяснить не могут, чего хотят, а искуственный интелект будет уметь мысли читать?
@andrumosko687
@andrumosko687 Рік тому
Все так принялись ругать ардуинку... Хотя это же школьный конструктор для развития, хочешь чего то посерьёзнее вперёд обучайся. Не стоит обижаться на отвёртку за то что она медленнее шуруповерта, иногда она удобнее.
@user-gk3yk3br5h
@user-gk3yk3br5h Рік тому
красава
@isakneuman9995
@isakneuman9995 2 роки тому
Если ты все еще ведешь канал, можешь подсказать, что мне учить? Тоже хочу кодить микроконтроллеры. Сейчас изучаю С++ по Прате чтоб базу получить. До этого были попытки изучить сам Avr и кодить для атмега8, но все заканчивалось тем, что не понимал даже библиотеку. Может ты знаешь по каким книгам учить, и что учить avr или stm. Спасибо
@AxGxP
@AxGxP 2 роки тому
У него же вроде есть по Си, без плюсов, я считаю, что актуальнее. А по поводу микроконтроллеров, документации от производителей вполне достаточно. AVR наверное проще, зато с STM можно отладкой на лету пользоваться, без значительных дополнительных вложений. В любом случае рекомендую с 8-bit начинать. А 32 - STM мне намного больше нравится.
@isakneuman9995
@isakneuman9995 2 роки тому
@@AxGxP интересно ответишь или нет, но после последнего вопроса где то 3 месяца лета я поработал и подеградировал и только вот последние 3 месяца из которого первый месяц учил авр а потом последние два учу stm32. Как адекватный человек учу с cmsis с голыми регистрами чтоб понимать каждый такт и чих. Рекомендуют перейти на халл, но не хочу. Возможно в будущем когда я буду профи буду кое что брать с халла. Во время универа были проблемы с обучением, относительно меньше времени уделял. Но вот с начала декабря как вышли на зимние каникулы каждый день стараюсь по максимуму учиться. С голой документацией тоже проблематично. Я долго откладывал темы с таймерами в стм наивно полагая что они так же просты как у авр, но тут оказывается так много настроек и возможности. А в документации не сразу понятен алгоритм настройки шим или захвата импульса. Да кое что написано но по любому лезу по форумам. Можешь дать какой то совет по изучению? или как гуглить интересную тему. Ибо что б я не гуглил с стм всегда выходит халливар
@AxGxP
@AxGxP 2 роки тому
К сожалению, по поводу гугления много раз сталкивался с тем, что люди копипастят одни и те-же ошибки. Работа всего микроконтроллера и периферии описана в референс мануале. По нему и рекомендую ориентироваться. Если будут конкретные вопросы - задавай.
@isakneuman9995
@isakneuman9995 2 роки тому
@@AxGxP у вас есть телеграмм? Я обычно так и поступаю. Перехожу с переферии на переферию по рм. Но бывают моменты, когда из за большого количества регистров, просто не понятно алгоритм действий для настройки.
@irongarden8415
@irongarden8415 5 років тому
В свою защиту могу сказать, что купив ардуину и поработав с ней загорелся изучением мк, через пол года уже играюсь с tft экранчиком, и возникло несколько проблем, ну если не учитывать проблему подключения, то проблема скорости уж точно. Рисовать графики на экранчике или сложные последовательные цикличные анимации очень интересно, но ждать пока оно все прорисуется по пять минут полный отстой. Естественно я стал интересоваться поч? Так как я не программист и изучаю программирование и С в свободное время, обучение идет не быстро. Появилось желание интегрировать мк в свои проекты, задумки. Стало интересно потрогать больше памяти, более высокую скорость тех же Stm32 или даже fpga но это для меня пока дальняя цель, благодаря вашему видео я переосмыслю некоторые моменты своего путешествия в мир мк. Благодарю за внимание, лойс однозначно поставил!
@AxGxP
@AxGxP 5 років тому
Удачи! Обращайтесь, помогу, чем смогу.
@irongarden8415
@irongarden8415 5 років тому
Я правильно понял, любой скетч написанный в arduino IDE, в 28 раз медленней, чем скетч написанный в правильной среде разработки?
@AxGxP
@AxGxP 5 років тому
Нет, конечно не любой. В ардуино можно написать почти (ардуино блокирует доступ к некоторым ресурсам) нормальные программы, но это очень не удобно, так как есть множество более адекватных IDE. Но если писать так, как рекомендуют разработчики, то да - медленно и глючно.
@irongarden8415
@irongarden8415 5 років тому
скорость вычислений с плавающей точкой, можно увеличить? Строю различные двумерные фигуры, и приходится пользоваться такого рода вычислениями.
@AxGxP
@AxGxP 5 років тому
Наверное можно... Разные способы есть, надо смотреть код. Фигуры на дисплее или для чего используются?
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 6 років тому
Вы абсолютно правы - я в ардуинке заменял sbi(P_CS, B_CS); cbi(P_CS, B_CS); на PORT DDR библиотека UTFT и изображение на TFT начало летать.
@user-kv9cy3sq1e
@user-kv9cy3sq1e 6 років тому
Никола Пшоня *_Должно быть наоборот...._*
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 6 років тому
Работа с регистрами всегда работает быстрее. тест проходит на 9-10 сек быстрее.
@user-kv9cy3sq1e
@user-kv9cy3sq1e 6 років тому
Никола Пшоня *_Sbi и Cbi - старые DDR и PORT. _**_goo.gl/8FF1Y3_*
@user-kn8xo9jd7l
@user-kn8xo9jd7l 2 роки тому
Чётко чеканишь!
@user-fb9hx4gf1v
@user-fb9hx4gf1v 4 роки тому
Круто
@user-kv9cy3sq1e
@user-kv9cy3sq1e 5 років тому
*_Бро, хоть и ролик старый, может сохранился сурс для STM?_*
@AxGxP
@AxGxP 5 років тому
Неа, грохнул...
@MrASmitt
@MrASmitt 5 років тому
В ардуино ИДЕ можно писать на С++, а также использовать регистры. Это позволит добиться той скорости, которую АТМега показала при использовании АВР? Я тут к арудине подключил самый простенький экранчик для вывод цифр из цикла, так она в 5 раз медленнее стала работать)))
@AxGxP
@AxGxP 5 років тому
В ардуино только на Си и пишется, компилятор GCC. Если писать через регистры возможно удасться добиться почти той-же скорости. Но Arduino запрещает доступ к некоторым регистрам, а также не позволяет настроить режимы оптимизации компилятора. А самое главное неудобно, сложно и медленно писать что-то в ардуино.
@MrASmitt
@MrASmitt 5 років тому
@@AxGxP я пишу в Sublime с плагином, это чуточку удобнее)
@user-pl4gz8lm5t
@user-pl4gz8lm5t 3 роки тому
Всем в нашем чате (да, есть такой) говорю что Ардуино и ХАЛ для чайников и что-то серьезное делать на нем - ну такое себе. В ответ получаю лишь выпады, что мол тогда уж замени микросхемы транзиторами и пиши на АСМе. Вы один из немногих, кто видит реальную картину =))
@AxGxP
@AxGxP 3 роки тому
Радует, что ведущие производители наконец-то признали эти проблемы, можно сказать официально. Так что надеюсь увидим интересные реализации уже совсем скоро.
@kardanium
@kardanium 5 років тому
Я ардуиновскую среду использую только с одним МК. Это ESP8266, ибо разбираться в его родном SDK у меня нет желания. С ESP32 ситуация конечно в разы лучше. Среду - в смылсе окружение, библиотеки и систему сборки. Только саму IDE я взял чуть поодекватнее - Visual Studio Code + PlatformIO, ибо Arduino IDE в этом плане - как отвертка без ручки. Неужели они не могут сделать "Режим для продвинутых", где ихняя IDE превращается во что-то нормальное? Хотя бы, просто с возможностью нормального управления файлами проекта. Если они задумали Arduino как учебный проект, то могли бы и сделать что-нибудь такое, что познакомило бы новичков с настоящим процессом разработки. В остальном - IAR, Atmel Studio, MPLABx и другие нормальные среды и нормальное программирование. В боевых проектах на STM32 я не использую SPL\HAL. HAL используется только для проверки идеи, ибо проект генерится легко и быстро с помощью STM32CubeMX. Да и то не всегда. Например, средствами HAL и Cube в частности, невозможно использовать аппаратную работу DMA с двумя буферами на STM32F407 и других камнях, DMA которых умеет работать с двумя буферами. Еще HAL проверяет все флаги периферии при входе в прерывание и тем самым растрачивая время, когда реакция нужна незамедлительная. Особенно если это касается внешних прерываний. Потому и STMicroelectronics не рекомендует использовать их библиотеки в критичных проектах.
@yevhenukrainianer4781
@yevhenukrainianer4781 4 роки тому
У Espressif IDF SDK хорошо задокументирована.
@vadimzhikharev1243
@vadimzhikharev1243 5 років тому
Всё верно подмечено
@masterkit9517
@masterkit9517 4 роки тому
перешёл на STM32, ардуино действительно 80-90 годы по удобству и мощности. Каменный век, дорогой раритет.
@user-po9cn9og2g
@user-po9cn9og2g 5 років тому
бальзам на мою перфекционистскую душу. я люблю ассемблер.
@Al.Sy.
@Al.Sy. 5 років тому
Представьте, что Вам надо быстро получить каноэ из бревна. Вы его будете выдалбливать топором (Си) или вырезать скальпелем (ассемблер)? Каждый решает сам, как он будет достигать результата.
@916363
@916363 5 років тому
@@Al.Sy. , конечно вначале пишется основа на языке высокого уровня, а потом дорабатывается на низком, в углах, где есть проблемы и недоработки, но последнее занимает порой годы. Другое дело, когда попутно правятся библиотеки и в новых проектах уже используют более удобный и точный инструмент, но это уже наработка каждого разработчика под себя. Невозможно изучить какое-либо дело с нуля за пару дней, если делом не заниматься постоянно, ни о каких сверх результатах надеяться не приходится. За примером ходить далеко не надо, посмотрите историю создания проигрывателя WinAmp.
@vovan5341
@vovan5341 5 років тому
@Lada Timofeeva , была уже где-то на АВРе... :-)
@AxGxP
@AxGxP 5 років тому
Чтоб сделать программный USB на микроконтроллере с ограниченными возможностями конечно ассемблер. Проект MJoy называется, напиан в 2003-м году на ассемблере под микроконтроллер AVR. На то время ничего лучшего, за адекватные деньги не было... Сегодня есть дешёвые и мощные Cortex, но некоторые почему-то продолжают жить в прошлом.
@ua6em
@ua6em 3 роки тому
а в какой версии IDE компилировалось? Я об ошибке - attachInterrupt(Pin, ISR_prog, RISING);
@ua6em
@ua6em 3 роки тому
увидел 1.8.5 )))
@user-uu9gb6hj1m
@user-uu9gb6hj1m 3 роки тому
Ардуино для учащихся и новичков...там никто не питался писать чот особо производительное...а так за видео однорзначно лайк
@TDMLab
@TDMLab 5 років тому
Круто! Но странно сравнивать Ардуино ИДЕ и Атмел Студио если там пользуешься функциями, а там напрямую с регистрами работаешь это как-то нечестно, интересно было бы при равных условиях сравнить компиляторы.
@dima_dmitrenok
@dima_dmitrenok Рік тому
Компилятор один и тот же
@TDMLab
@TDMLab Рік тому
@@dima_dmitrenok У студии должна быть оптимизация только если на этом профит получить, может конечно и в ардуино можно через ключи это задать.
@KishovRasul
@KishovRasul 4 роки тому
А настройки компилятора в Keil какие? Как же можно про это умолчать? Максимальную оптимизацию выставить и сравнить не пробовали? А в IAR какой будет результат?
@AxGxP
@AxGxP 4 роки тому
Я не умолчал, а просто явно на этом не акцентировал. Сегодня опции оптимизации это обязательная фича любого компилятора. На 2:00 в тексте написал, что в Arduino IDE настроек оптимизации к удивлению нет (там всегда с -O3 GCC компилит). Конечно-же на всех примерах в этом видео одинаковые условия, включена оптимизация -O3.
@user-wb1ow1pk9v
@user-wb1ow1pk9v 3 роки тому
Привет. Мне интересен ИТ и не мало времени искал направление, которое будет мне по душе. Смотрел статьи, видосы о том какое направление выбрать. Все они похожие и я не находил в них то что мне нужно. Но в одном ролике автор в нескольких словах что то сказал про программирование устройства, типа умные дома, машины, домашнюю технику, но ничего больше об этом не рассказал, как это направление называется. Хочу чтоб вы мне подсказали в каком направление двигаться. Я гуглить и самые частые слова попалались это IoT, микроконтроллеры, embedded, Arduino, пайка плат. Я бы хотел программировать, но лезть в железо не очень интересно, но как я понял это нужно, нужно знать Си, физику, электросхемы и электронику. Повторюсь, меня это направление заинтересовало, но требования с физикой и железом пугает. В общем, в голове каша. Может чего лишнего начитался. А ещё, я начинал учить Java и он мне понравился, по сравнению с python и js. На одном сайте были курсы по этим языкам, я все начинал, но java зашёл более менее. Но как я понял в этом направлении нужен Си. Не знаю осилю ли я его. слышал что с/с++ сложные. В общем как то так.
@AxGxP
@AxGxP 3 роки тому
Насколько я понял, интересует именно embedded программирование. Если хочется делать качественные, крутые вещи, без знаний электроники, архитектурвы ЭВМ и строении конкретного микроконтроллера - никак. Так-же, с большой вероятностью понадобится знание физики, особенно если устройство работает с физическими устройствами (датчиками, приводами). Вместе с этим обычно появляется необходимость вычислений, матан, численные методы, теория автоматического управления. Помогают знания и в других областях, по теме разрабатываемого устройства. С точки зрения программирования, на сегодняшний день, обычно это Си. Знание ассемблера тоже приветствуется, и не редко выручает. Без английского - наверное никак, спецификации всяких протоколов и докуиментация на микросхемы обычно доступна на английском. При работе не обойтись, без навыков работы с осциллографом и логическим анализатором. P.S. Начните, с чего-то более простого, и постепенно переходите к чему-то более сложному. Не пугайтесь, если сразу не получилось, всё приходит с опытом. А учиться никогда не поздно. Это очень интересная отрасль, не во всех профессиях можно регулярно получать такие эмоции как тут. Мало что может сравнится, с радостью от вселения "жизни" в "железо". Так-же, как и чувство безысходности, после нескольких дней попыток устранить необычный, редкий глюк. Удачи!
@user-wb1ow1pk9v
@user-wb1ow1pk9v 3 роки тому
@@AxGxP благодарю вас за такой развернутый ответ. Я этот вопрос задал в нескольких местах, но от вас ждал ответа особенно. Так как из этого ролика удивил момент где вы исправляете код производителя. Меня это впечатлило.) Мне почти 32 года, в школе я можно сказать не учился, на знания мне было всё равно, а о математики и физике думаю можно и не говорить. Но в последние годы как то все изменилось. Есть сильное желание стать профессионалом в своём деле и я уверен, что это ИТ, мне оно очень интересно. Можете оценить мои перспективы? За сколько времени я бы мог стать джуном и пойти пробовать устроится на работу? Понимаю у каждого это индивидуально, но если взять среднее. Конечно если перспектива есть вообще с такими данными.
@AxGxP
@AxGxP 3 роки тому
@@user-wb1ow1pk9v тут очень много разных факторов, переменных... Не думаю, что на этот вопрос возможно достоверно ответить. Всё зависит от Вашего упорства, целей и способностей. Если это именно ради заработка, тогда не стоит заморачиваться... Чем Вы занималсь последние 5 лет? Что именно изменилось, кроме как переопределение ценностей?
@user-wb1ow1pk9v
@user-wb1ow1pk9v 3 роки тому
@@AxGxP да, ради денег, но зарабатывать я хочу на том, к чему у меня будет интерес. Последние 5 лет занимался сваркой, отделкой домов, в общем, ничего общего с ИТ. Был игроманом, но когда ценности изменились интерес к ПК остался. Свое знакомство с ИТ я начал с фронтенда. Более-менее научился вёрстке и понял, что долго продолжать не смогу, так как тут было желание только заработать и я обманывал себя, что мне это нравится. Потом хотел попробовать Андроид и тут тоже не было уверенности, что это моё. А теперь, когда есть уверенность во встраиваемых системах появилось препятствие, что это сложный уровень. Ещё, в этом году познакомился с Линукс, попутно читаю книжку про нее. Интересно понять её глубже.
@AzamatTimerbaev
@AzamatTimerbaev 2 роки тому
Препод по радиоэлектронике в 2007 году говорил те же слова, что контроллеры становятся мощнее, но программисты и разработчики не тратят время на оптимизацию кода
@user-oi1zl6de8i
@user-oi1zl6de8i 5 років тому
Подписка.
@yourobaz1376
@yourobaz1376 5 років тому
Такие же проблемы с софтом на смартфонах и даже просто веб страницами. Они занимают все больше памяти, работают все медленнее, переключение между задачами все дольше. Подгружаются миллион строк кода библиотек для простого вывода на экран текста и картинки. А все началось с компиляторов, использование которых уже увеличивало код в десятки раз по сравнению с ассемблером
@AxGxP
@AxGxP 5 років тому
На что на смартфонах, что на PC проблема есть, у вторых даже хуже. Если углубиться, то все началось с изобретения транзистора и внедрения интегральных схем))) Вряд ли кто-то поспорит с этим прогрессом, да и современные компиляторы прекрасно справляются, не многие вещи на ассемблере ещё можно сделать лучше, чем это сделает компилятор с правильными опциями оптимизации. Кодить стало быстрее и проще, поэтому многие программисты забыли (а некоторые даже и не знали) что на самом деле происходит при вызове функции, выполнении сравнения, даже банальном преобразовании типов, явном и неявном. Появилась целая пирамида вложенных функций и библиотек... Пошла мода не исправлять ошибки, устраняя их причину в корне, а делать заплатки, а потом заплатки на заплатки, и т.д. В итоге имеем то, что имеем - лохмотья, кучу дыр и множество заплаток.
@user-sb9kb9xb3f
@user-sb9kb9xb3f 5 років тому
может где-то на просторах инета или гитхаба есть улучшенные версии этих библиотек?
@AxGxP
@AxGxP 5 років тому
Маловероятно... Точнее, что-то может и можно найти, но там другие глюки вылезут. Подход у людей разный... Многие пишут программы с помощью копипаста (весь рунет завален однотипными ошибками), другие используют библиотеки (в большинстве из которых четко написано "распространяется как есть, автор не несет ответственности, и не гарантирует работоспособность"), но я рекомендую самый надежный способ - открыть документацию и написать согласно datasheet, хотя там тоже иногда ошибки попадаются, но это достаточно редкое и обычно относится к уникальным конфигурациям. Так вот, я когда первый раз взялся программировать на STM32 тоже думал, что все очень сложно, и неделю времени убил пытаясь заставить работать все, что мне надо с помощью библиотек всяких.... В основном безрезультатно, лучший случай был - работает 10-15 сек и зависает нафиг... Для того, чтоб поиграться - пожалуйста. Но если делать готовое устройство, никаких opensource библиотек, только хардкор))) Дешевле получается, не смотря на кажущуюся на первый взгляд сложность.
@HeavyHeavyvich
@HeavyHeavyvich 5 років тому
А почему бы не сравнить HAL vs STDPeriph vs CMSIS?
@RogovAB
@RogovAB 5 років тому
А смысл их сравнивать? Что одно, что другое мало чем отличаются от ардуино идейно. Теже грабли, и косяки в либах, избыточный код и прочий мусор.
@nixtonixto
@nixtonixto 4 роки тому
Однако у стм32 рефмануалы от 1000 страниц начинаются, поэтому даже опытные программисты в первый год знакомства боятся всю программу делать на регистрах а не на ХАЛовских абстракциях
@yevhenukrainianer4781
@yevhenukrainianer4781 4 роки тому
@@nixtonixto у NXP даже посложнее имхо
@porese
@porese 2 роки тому
Это прям про венду от мелкомягких. Кстати для ардуины есть и быстрые библиотеки, от гивера.
@a1ex_sk
@a1ex_sk 5 років тому
Хорошее виде, автору спасибо. Хочется при этом заметить, что минусы Ардуино во многих задачах компенсируются скоростью прототипирования и низким порогом вхождения. Я сам в программировании больше 15 лет, хотя и пишу по большей части на высокоуровневых языках, и микроконтроллерами на уровне хобби заинтересовался совсем недавно. При этом в первом работающем проекте на базе Ардуино на код потратил несколько часов, плюс несколько статей и десяток роликов суммарнй продолжительностью час-полтора. С stm32 разбирался несколько месяцев, что бы научиться делать элементарные вещи. Конечно только особо упоротые люди будут делать большой серьезный проект в среде Ардуино (notepad++ больше умеет), да и разработкой пролетных контроллеров или чего-то похожего на Ардуино разве что на спор можно заниматься. Но если задача тривиальная (простой ПИД-регулятор, контроллер полива, простейшее удаленное управление чем угодно через тот же GSM можем или по другим событиям и прочие ламповые самоделки без rocket science), то все же намного проще и быстрее сделать это на ардуинке
@AxGxP
@AxGxP 5 років тому
К сожалению, или может к счастью, из личного опыта скажу, во многих случаях сделать по нормального с нуля без всяких ардуино часто быстрее чем потом бороться с глюками ардуино. Случай из жизни, попросил чел помочь с проектом на ардуино. Задача: генератор сигнала квадрат/синус, с регулировкой амплитуды 0-100% и частоты 20-200 Гц, ЖК дисплей, несколько кнопок. На AVR единственный вариант осуществить вывод синуса - таймер, OutputCompare, и при каждом переполнении обновлять значение OCx. Выбрал несущую 8кГц, написал все за пол часа, для Timer0, кидаю ему, говорит не компилируется! Как выяснилось Timer0 ардуина зарезервировала для себя и юзать его не дает. Ладно, меняю все на Timer1, вроде работает. Но перестал работать дисплей, какую либу он использовал - не знаю, попросил поменять ногу. Переделываю ему с OCA на OCB. Ничего не поменялось. Взял он другую либу для дисплея, теперь ситуация наоборот, дисплей работает, а сигнал прерывается во время обновления картинки... Два дня он мудохался, пока опять ко мне не обратился, чтоб помог ему найти, в чем проблема. Оказалось не понятно для чего либа отключает на время все прерывания, убрали, все заработало.... Проект, который я сделал бы за пару часов на STM32, просто правильно сконфигурировав периферию, чел делал две недели! Да и меня несколько раз напрягал, "переделай на ту ногу", "переделай на другую", а оно все равно "не работает", "глючит"... Так что пока есть одна задача, используется одна библиотека на ардуино - все ОК. Но как только появляется немного больше задач, и необходимость обработки и выдачи сигналов в реальном времени, с ардуино начинаются напряги))) Удачи!
@a1ex_sk
@a1ex_sk 5 років тому
@@AxGxP ну такое возможно на любой платформе. И из своего опыта могу вспомнить пару десятков таких ситуаций. Баги есть везде, и чем большее сообщество пишет код для платформы, тем больше шансов наткнуться на что-то подобное на ровном месте. Но каково соотношение таких ситуаций к успешным проектам с минимумом затраченного времени? Я отнюдь не защищаю ардуинку, просто у нее есть не только минусы, но и плюсы... Каждой задаче свой инструмент: молотком удобно гвозди забивать, отвёрткой - шурупы заворачивать
@AxGxP
@AxGxP 5 років тому
@@a1ex_sk Видимо мне пока не повезло, с проектом, в котором с ардуиной получилось бы быстрее.... Простые вещи обычно делаю на attiny13(в целях экономии), ну а более сложные STM32. А вот с атмегами последнее время как-то некуда поставить, не то, что ещё и ардуино... Ибо как раз с точки зрения программирования, многие вещи на stm сделать проще, быстрее и удобнее, а по цене разницы нет. Хотел сделать прибор походный, радиация, давление, температура, уровень УФ, и т.д. В целях экономии батарейки думал PIC использовать, но вот сейчас смотрю, наверное на STM совсем не хуже получится, а только лучше.
@a1ex_sk
@a1ex_sk 5 років тому
@@AxGxP ну если хорошо владеешь инструментом, то логично, что им большинство задач решать будет удобнее. С ардуиной удобно с нуля начинать, когда нет знаний в этой области от слова совсем. Тот же анализатор температуры, влажности, давления и радиации вообще, мне кажется, без разницы на чем делать. Конечно если нужно низкое энергопотребление, то код в любом случае нужно будет оптимизировать, но основной потребитель тут будет дисплей и датчики (особенно счётчик Гейгера). А какой контроллер и где писать код - дело десятое, мне кажется. А по производительности, тут той же ардуины хватит за глаза и за уши
@AxGxP
@AxGxP 5 років тому
Ха-ха)))... По сравнению с потреблением ардуино (на которой стоит два микроконтроллера, второй для прошивки по USB), дисплей потребляет в 20 раз меньше, ну а счетчик гейгера даже при сильной радиации потребляет вообще несравнимо мало. На ардуино невозможно усыпить второй микроконтроллер, да и вообще у AVR мало возможностей при экономии энергии. В таком проекте как раз все зависит от используемого микроконтроллера, ведь он потребляет намного больше всего окружающего.
@sovchem1275
@sovchem1275 5 років тому
Ни разу не понимаю арДУРино.... AVR, хорошо, но есть же нормальная среда CAVR с виз. кодгенератором с человеческой отладкой и прошивкой !
@gogmagog6285
@gogmagog6285 4 роки тому
А детские кубики, конструкторы с большими элементами -понимаешь? Для начинающих.
@user-zi8kn9sl1g
@user-zi8kn9sl1g 3 роки тому
Все хорошо а ты попробуй подцепить i2C дисплей через Codevision
@lunokhodtoy
@lunokhodtoy 5 років тому
Но ведь через регистры можно из arduino IDE тоже запрограммировать. И stm32 можно из arduino IDE запрограммировать, хотелось бы увидеть и такие сравнения!
@AxGxP
@AxGxP 5 років тому
Можно и левое ухо правой рукой чесать. А STM32 в Arduino IDE программировать - то же самое, что гвозди отверткой забивать. Без элементарных инструментов отладки даже трудно это представить! По поводу скорости к сожалению (точнее к счастью), проверить не могу, нет у меня больше Arduino, сгорела нафиг. Могу только предположить, что значительной разницы быть не должно, ведь Arduino IDE использует компилятор GCC (но управлять его настройками невозможно). Еще точно знаю, что на AVR прерывание переполнению Timer0 будет 1000 раз в секунду срабатывать, и отключить его Arduino IDE не позволяет.
@user-sb9kb9xb3f
@user-sb9kb9xb3f 5 років тому
как вариант, делать патчи и отправлять через git pull reqiest в репозиторий ардуинки
@sergkaev6075
@sergkaev6075 3 роки тому
Жаль, что нет варианта управления портами через регистры в Arduino, то же ускорилось бы, но интересна разница в т.ч. с Atmel studio. Я так понял STM-ка работала на 72mhz, а если на той же частоте что и AVR, то AVR походу быстрее.
@AxGxP
@AxGxP 3 роки тому
Да, STM32 во всех тестах на 72 Mhz.
@user-xz2db2st6w
@user-xz2db2st6w Рік тому
Могу сказать что если писать код без компиляторов, то скорость выполнения будет ещё выше на avr с stm не знаю, там может быть затык по как раз разрядности, если её не использовать полностью, то думаю браться за stm может и нет смысла.
@AxGxP
@AxGxP Рік тому
На некоторых моментах, может быть заметно быстрее, какое-нибудь прерывание например написать, но в общем, в целом оно того не стоит, прироста в разы не будет, десятки процентов в лучшем случае. По поводу stm32, он выполняет операции с 32-битными значениями. Так что использование 8-битных переменных иногда наоборот замедляет выполнение программы. Тут уже выбирать, что нужно память экономить и преобразования типов проводить или скорость выполнения, но с большим расходом памяти.
@cdeblog
@cdeblog 5 років тому
Не может СТМ делить за 1 такт. А все сравнение это сравнение теплого с мягким. Если бы автор понимал как работает контроллер, то таких вопросов бы не возникало. Стдпериф работает медленнее как минимум из-за затрат на переходы в функцию и обратно, ещё и дополнительные проверки и манипуляции ос структурами, здесь не криворукость программистов СТМ. Нужно понимать, что чем-то приходится жертвовать, в данном случае скоростью выполнения и объемом занятой памяти в пользу скорости написания кода и его читаемости.
@MaiklTil
@MaiklTil 5 років тому
Он все правильно сказал в видео. Сам лично видел код и вывод где тех же самых нумов было полным полно, а они там не нужны. так что не гони
@vaskahulya
@vaskahulya 5 років тому
Читаемость кода , не смеши ! Тут не cms на php пишут 😅
@RogovAB
@RogovAB 5 років тому
Да как оно влияет на скорость написания кода, если эти библиотеки используются только для иницилазации и управления переферией? У вас вся программа только из этого состоит?
@dudanov
@dudanov 4 роки тому
Полностью поддерживаю! Можно таким образом было вообще писать на ассемблере и сделать автору ответное видео, что написание на Си, использование стандартных стартовых кодов и неэффективного компилятора это тоже ухищрения производителей, чтобы покупали более мощные МК. Нужно отделять одно от другого. Цели библиотек - абстракция от уровня, в данном случае железа. Почему attachInterrupt обязана сбросить флаги прерывания? Где это написано? Требования из даташита? Это все логика программиста! Просто автор немного разобрался в теме и решил "блеснуть умом", как можно оптимальнее написать программу. В замечание автору, насчёт "ошибок" в библиотеках. В основном, все эти библиотеки с открытым исходным кодом. Что мешает автору присоединиться к сообществу и исправить их? Не нужно себя возвышать над целыми сообществами людей и программистов, которые вложили свой труд в создание кода. Тщеславие - качество не из лучших.
@windy_sky
@windy_sky 5 років тому
Да всё правильно. Сам писал программы на всех этих контроллерах. И разными программами пользовался. Да и ещё все эти стандартные наборы занимают очень много места в памяти. Конечно самое быстрое это будет в асемблере, но ошибок можно сделать гораздо больше.
@AxGxP
@AxGxP 5 років тому
Выиграш от ассемблера не так велик, как многие думают. Современные компиляторы весьма не плохо справляются с оптимизацией. Современные процессоры имеют набор инструкций с учётом использования высокоуровневых языков (Си). Так что использование ассемблера в 99% случаев неоправданно. Значительного ускорения и уменьшения кода можно добиться правильным написанием кода на Си. Не применять лишних вызовов функций, избавится от преобразований типов, правильно использовать области видимости переменных, по возможности не применять float на контроллерах без FPU и т.д. Это значительно уменьшит код и повысит быстродействие.
@sculp_vetrov
@sculp_vetrov 6 років тому
Да не плохой канал.
@heresytech9668
@heresytech9668 3 роки тому
Работал с stm, raspberry pi , nodemcu, avr. Avr меня так зацепил! Больше всего мне нравится, что можно из си пробиться к регистрам и управлять ими. В stm тоже так можно делать, но эта фишка плохо документирована(на мой взгляд). Короче, avr крут
@AxGxP
@AxGxP 3 роки тому
Как это плохо документирована?! Как раз наоборот, полностью вся инфа по ним в открытом доступе. STM32 - очень крутая штука. Жаль только, что теперь их фиг купишь.
@user-vd1dg5fw3y
@user-vd1dg5fw3y Рік тому
А вы не пробовали функции LL или HAL, интересно насколько они тормазят работу
@AxGxP
@AxGxP Рік тому
Конечно пробовал) LL в этом смысле очень не плохо работает, там большинство функций инлайнятся и в них нет ничего лишнего, просто можно сказать более понятная запись чем через CMSIS. Только вот CubeIDE часто генерирует код LL с ошибками, что затрудняет разработку. С HAL в этом смысле лучше, автогенерация обычно исправно работает. Но в HAL есть много всякого лишнего, поэтому и скорость программы страдает, и ROM и RAM нужно заметно больше.
@vovan5341
@vovan5341 5 років тому
Отсюда мораль: библиотеки - зло! :-)
@Vlad_4572
@Vlad_4572 4 роки тому
Нет, не зло. Это удобный вход для начинающих, крайне удобный!!! Я несколько лет не хотел заниматься МК, из-за их сложности, (поэтому работал на логике), но на базовом знании ардуино собрал работающие(уже несколько лет,) устройства. Стало тесно и вот я уже изучаю stm))
@user-fs7ml9ql9q
@user-fs7ml9ql9q 4 роки тому
По большей части библиотеки на МК в продакшене - это попросту недопустимо
@Vlad_4572
@Vlad_4572 4 роки тому
@@user-fs7ml9ql9q , что такое продакшен? Типа массовое производство?
@user-fs7ml9ql9q
@user-fs7ml9ql9q 4 роки тому
Да, имелся ввиду этап перехода от прототипа к проектированию серийного образца
@EXEgg
@EXEgg 5 років тому
Я уже очень долго собираю информацию чтобы прояснить для себя некоторые моменты по поводу работы с микроконтроллерами. Порядка трёх дней. У вас в комментах я наблюдаю наиболее интересный срач по этой тематике так что может быть мне кто нибудь ответит. Сам я ни коем образом не программист и даже не технарь. Иначе наверное задавал бы такие вопросы не в ютубе а на хабре. Про ардуинку слышал краем уха что это такая маленькая платка со слабеньким контроллером внутри, для домашних поделок. Так вот, я пытаюсь понять в чем кардинальное отличие этой отладочной платы от других. Пока что, насколько я понял это отличие - Arduino IDE. Оно позволило писать хоть и херовенькие но работающие программы тем, кто до этого вообще не умел кодить. В следствии этого ардуина обросла огромным сообществом. И от этого огромного сообщества бомбит у всех трушных программистов изучивших 2000 страниц талмуда по работе с каким нибудь ARM. То есть хоть Arduino IDE снизило порог вхождения, оно не заставило ардуинщиков переключиться со временем на более трушные, низкие уровни программирования и новые микроконтроллеры. Хотя как я понимаю CMSIS это тоже уровень абстракции и если уж совсем по хардкору то нужно обходится и без него? В итоге Arduiono IDE в области микроконтроллеров стало чем то вроде Unity3d для геймдева. Позволяющей на уровне профана делать продукты жертвуя ресурсами и в последствии перспективой улучшить свой скилл, в пользу низкого порога вхождения и готовых решений от комьюнити. Там, где задача могла израсходовать в десять раз меньше ресурсов, умей автор выполнять её на более низком уровне абстракции, приходится использовать хоть и удобный но громоздкий Arduino IDE. И последнее. Как я понимаю усугубляет положение дел ардуины устаревший микроконтроллер AVR. Можно ли хоть как то компенсировать потерю ресурсов на ардуиновской платформе используя более мощные платы, например Arduino Due или Esp32? Или "скетчи" на атмеге уже не будут работать на других контроллерах?
@AxGxP
@AxGxP 5 років тому
Конечно, по современным меркам микроконтроллер AVR ATMega328 (на самой распространенной ардуине) не кажется мощным, но для многих задач его хватает с головой, я не редко применяю даже ATTiny13, в целях экономии средств и места. CMSIS это просто представление понятными (для человека) словами непонятных цифр, адресов памяти, регистров периферии. Обходится смысла нет, во время прероцессинга всё это будет заменено цифрами-адресами, и компилятор получит ту-же самую программу. Назвать Arduino IDE удобной язык не повернется, ничего удобного в ней нет, если писать что-то самому, а не использовать чужую программу. Какую цель вы преследуете, есть конкретный проект который хотите осуществить, или просто-так интересуетесь? У разных микроконтроллеров разные достоинства и недостатки. Конечно если взять более мощную плату будет работать быстрее. Но есть специфические задачи, и специфические микроконтроллеры, которые справляются с этими задачами лучше других.
@EXEgg
@EXEgg 5 років тому
В том то и дело что пока я не могу точно определить спектр задач. Пока что всё видится как "помигать светодиодиками" и возможно как то применить в быту. Хочется что то с низким порогом вхождения и готовой базой проектов (как у ардуины) но в то же время с перспективой на будущее.
@AxGxP
@AxGxP 5 років тому
@@EXEgg вот и купите ардуину, самую дешевую. Надоест убогая среда, если до того момента не закинете, перейдете на AtmelStudio, тогда и придет понимание как микроконтроллер работает и какой вам нужен. Если в общем посмотреть принцип работы всех микроконтроллеров одинаковый, все они электронные, на двоичной логике, во всех процессор выполняет написанную и скомпилированную программу. Научившись программировать один, перейти на другой большого труда не составит (не относится например к ESP32, где производители намеренно скрыли внутренние регистры, и все работает через прослойку API от разработчиков). Начинать с Cortex думаю все-же не стоит, там слишком много фишек и наворотов, AVR намного проще особенно для начала и понимания. В любом случае нужно сначала разобраться с языком программирования (СИ), можно это делать и на компьютере, а уже потом к микроконтроллерам переходить.
@dred77780
@dred77780 5 років тому
жизненно
@Rin_Media
@Rin_Media 4 роки тому
Классно. Спасибо тебе. Почему бы тебе неотредактировать код библиотек на увеличение скорости ардуино? Пользователи тебя бы боготворили...
@AxGxP
@AxGxP 4 роки тому
Не люблю я ардуинщиков. Или точнее это они меня не любят... Я даже начал думать, что существует какая-то генетическая предрасположенность у некоторых индивидов писать и гадости, и скетчи ардуино... А вообще не имею желания иметь отношение к ардуине, тем более, что проблема не только в библиотеках... Те АВР-ы это прошлый день, к тому-же в среде ардуины никак не приближающий понимания... Учитесь писать сами, это не сложно, нужно всего-лишь этого захотеть. Сегодня есть интернет, куча документации и даже на русском. Соц.сети, форумы, ютуб, где можно задать свои вопросы, если что-то не получается. Удачи!
@user-ev5zy3ql9m
@user-ev5zy3ql9m Рік тому
Я только олного не понял: на какой частоте работала STMка, на 16 или 72 МГц?
@AxGxP
@AxGxP Рік тому
На 72.
The World's Fastest Cleaners
00:35
MrBeast
Переглядів 100 млн
Спектакль для окупантів та ждунів 🤯
00:47
Радіо Байрактар
Переглядів 550 тис.
skibidi toilet 73 (part 2)
04:15
DaFuq!?Boom!
Переглядів 22 млн
Изучаю STM32!
20:26
Лёша Кластер
Переглядів 186 тис.
#345 ESP32 vs STM32: Which one is better (Bluepill)?
15:37
Andreas Spiess
Переглядів 231 тис.
Фишки Arduino, о которых ты не знал!
13:37
Заметки Ардуинщика
Переглядів 104 тис.
🖥️Играю в Cyberpunk на Ардуино!
18:22
AlexGyver
Переглядів 1,2 млн
Arduino против STM32
37:19
Konoplj2010
Переглядів 78 тис.
Оптимизация кода Ардуино и ускорение работы Ардуино проекты.
15:18
We accelerate Arduino more than 20 times!
28:18
Home Made
Переглядів 69 тис.
Компьютерная мышь за 50 рублей
0:28
Как должен стоять ПК?
1:00
CompShop Shorts
Переглядів 734 тис.
I shouldn’t have kept the $1,000,000 computer
28:05
Linus Tech Tips
Переглядів 988 тис.
Клавиатура vs геймпад vs руль
0:47
Balance
Переглядів 568 тис.