LINUX.ORG.RU

И снова AVR vs ARM. Что разумнее выбрать?

 , ,


1

1

Всем доброго времени суток. Давайте поговорим. Находил кучу холиваров по поводу того, что же лучше: AVR или ARM (STM32, например). Бросания говен в этих холиварах совершенно не интересны, поэтому, может ли кто-то внятно и адекватно выразить свое личное мнение по поводу того, какое семейство МК лучше. Я пишу на Си под arm-ы, embedded linux, поэтому, наверное, мне было бы проще использовать мой тулчейн gcc и скорее всего, я выбрал бы ARM-контроллеры, но что-то не замечал особой гибкости в их периферии и объемах памяти. Мне нравится, когда в МК есть только то, что мне нужно, а того, чего мне совершенно не нужно, там нет. Например, если стоит задача: снимать показания датчика света и отправлять по i2c, мне бы не хотелось использовать STM32 для такой простой задачи, ведь для этого нужен слабенький, маложрущий, маленький и дешевый МК, какой-нибудь AtTiny. (Ок, они все относительно дешевы, если штучно). Не хотелось бы углубиться и изучить что-либо, а потом, матерясь, забывать это и изучать другое. Каково ваше мнение, какие МК лучше? (И, по возможности, аргументацию). Спасибо.



Последнее исправление: G-virus (всего исправлений: 1)

Ответ на: комментарий от batya

Ну, одна из задач: управление 4-мя устройствами с помощью ШИМ. Нужен контроллер, который умеет аппаратный шим на 4 ноги + i2c для связи с хостом. Я пробовал применить для этого Atmega168PA, который припаян к клону Ардуино Про Мини 5v, но, не разобравшись, как заставить ногу быть ШИМом, (До этого пробовал Atmega32, там все работает, но не нужна ведь Atmega32 для такой задачи, правда?) задумался, а нужен ли мне AVR.

G-virus
() автор топика
Ответ на: комментарий от G-virus

Значит, не нужен, да и программировать под него сложнее имхо.

batya
()

arm. Никто не заставляет включать неиспользуемую периферию (stm32). В небольших проектах avr может конкурировать с arm. Но в целях унификации кода проще всё делать на arm.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Ну да, это понятно, что можно вырубить неиспользуемое. Но все равно выходит так, что покупаешь базуку, чтобы ее корпусом бить мух, хотя хватило бы мухобойки. Правда, я натыкался, что есть STM8, но совсем не в курсе, насколько он базука.

G-virus
() автор топика
Ответ на: комментарий от G-virus

Да. У stm32 и avr состав, возможности и способ конфигурирования периферии кардинально различаются. Миграция кода практически невозможна.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Но, я так понимаю, stm32 не бывает в DIP-корпусе? А это явно минус для тех, кто не умеет в микропайку, и кому для задачи не нужна Discovery

G-virus
() автор топика
Ответ на: комментарий от G-virus

QFP паяются элементарно самым обычным паяльником. А DIP'ы монструозные нафиг не нужны!

Если кому-то влом паять, но хочется поиграться, можно девборду купить — рублей 300-600 будет стоить.

anonymous
()
Ответ на: комментарий от anonymous

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

G-virus
() автор топика
Ответ на: комментарий от G-virus

Вот когда наиграешься, разведешь в кикаде схемку заЛУТишь и спаяешь. Вроде такой (правда, я под промышленное изготовление разводил; судя по скорости, быстрей будет еще 1 развести под односторонний ЛУТ и забульбенить).

anonymous
()

Вас такие странные мысли гложут... Что вам удобнее, то и используйте. У меня сейчас есть проекты, которые запущены на avr, а есть на arm. Только потому что есть более подходящие наработки и легче немного переделать. Насчет экономичных arm - пожалуйста, stm8l вам в помощь. И в дипе армы бывают, хотя и редко ))

vaddd ★☆
()
Ответ на: комментарий от vaddd

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

G-virus
() автор топика
Ответ на: комментарий от G-virus

Вы разработчик, вам и видней. Не впутывайте в это грязное дело ЛОР )

vaddd ★☆
()

Бери arm. У тех же stm есть линейки как для совсем микроприменений, так и развесистые монстры, которые только что mmu не умеют. При этом более-менее одинаковая инициализация, чёткое понимание что может что не может линейка ядер m0/m3/m4, цены на те же stm уже не отличаются от avr, потребление уже может быть меньше. При этом плоское адресное пространство в которое всё замаплено и не надо извращаться с теми же far/near переходами.

Тем более, что с покупкой атмела микрочипом, будущее avr туманно.

Dark_SavanT ★★★★★
()

arm. Оверкилл для простых задач перевешивает цена младших stm'ок. Стандартная либа переферии ужасна как я 24/7, но есть божественная libopencm3. Хотя и в ней не всё гладко, но пользоваться ей гораздо приятнее чем HAL'ом.

Pentium02 ★★
()
Ответ на: комментарий от anonymous

Инкрементирую. В моем представлении авр только и живы за счёт того, что на них куча всего уже сделано. Но начинать новые проекты на avr, да нафиг надо.

Pentium02 ★★
()

AVR однозначно, он работает в отличии от.

Армы - полный пздц, требуют дофига нормальной разводки платы и дико глючат от ЭМИ. stm32 в управлении сварочным аппаратом перезагружался раз в 10 секунд (рвя при этом и дугу), воткнутая мега тупо работала без плясок с экранированием.

timdorohin ★★★★
()
Ответ на: комментарий от Dark_SavanT

arm - оверкилл практически везде, да и если нужна автономная работа - 8-битные мк все еще рулят.

Думать - не думать, а stm глючила от лишних 5 мм до емкости по питанию...

timdorohin ★★★★
()
Ответ на: комментарий от Dark_SavanT

Головой думать не надо. Инженер, разрабатывающий мк - это не красноглазый линуксоид. Он должен сделать быстро, дешево, и чтобы работало вечно. И браться за следующий проект

vaddd ★☆
()

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от timdorohin

arm - оверкилл практически везде, да и если нужна автономная работа - 8-битные мк все еще рулят.

arm давно уже не оверкилл, а добиться как минимум сравнимого потребления, как максимум ещё и меньшего можно на stm32L0 и ему подобных.

Думать - не думать, а stm глючила от лишних 5 мм до емкости по питанию...

Не схемотехник, но всегда считал, что ёмкости по питанию вкатываются у самых ног, чем ближе тем лучше.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

В рамках топика вопрос о том, кого выбрать разработчиком не ставился. Это данность ) А все остальное - вкусовщина.

vaddd ★☆
()
Ответ на: комментарий от aiqu6Ait

stm8 гораздо больше похож на stm32, чем на avr ) Практическому разработчику, особенно для задач, где 32-й кажется слишком тяжелым, важнее особенности периферии, а не ядра. А периферия там та же.

vaddd ★☆
()
Ответ на: комментарий от vaddd

Там и периферия совсем другая, и набор инструкций. И компилятор не gcc, а sdcc. Зато даташит в разы тоньше, нет такого гемора, как с STM32. И никаких внешних либ не нужно (я про CMSIS), только самописный заголовочный файл с регистрами!

Я себе под STM8 уже прилично сниппетов наделал, под STM32 же только на F0, до F1 все руки не дошли, чтобы соскочить с говна под названием opencm3 на чистый CMSIS.

anonymous
()
Ответ на: комментарий от vaddd

да чем же она другая?

Нет DMA (есть в L-серии, но там цена намного выше), зато есть EEPROM; меньше объем flash; 8-битная архитектура; меньшие возможности таймеров и меньшее их количество; вместо CAN на борту его какая-то жалкая пародия; меньшее количество UART'ов; I2C плохо продуман (без errata не заведешь); ну и многое другое.

Не надо сравнивать 8-битные мелкоконтроллеры с почти процессорами (особенно это касается всяких STM32F429 и более крутых).

Круг задач, где я бы вместо STM32F0xx взял STM8, крайне узок. А разница в цене совсем уж смешная для единичных экземпляров и трах в разработке ее никак не компенсирует.

как насчет космика?

Зачем, если есть sdcc? И да, если что, я — Eddy_Em, мне не надо задавать глупых вопросов «почему вместо свободного софта ты не пользуешься проприетарщиной».

anonymous
()
Ответ на: комментарий от Dark_SavanT

blue pill кстати очень привлекательно выглядит, возможно для опытов как раз ее и возьму. Просто, насколько я понимаю, под 8-битные stm не получится компилить gcc под arm? а это уже дополнительные тулчейны нужны, отладчики... ну разве что сидеть на stm32

G-virus
() автор топика
Ответ на: комментарий от anonymous

Да, не могу не отметить, что сам не люблю использовать какие-либо сторонние либы, если это возможно и не слишком долго. Ну кому интересен проект мигания светодиодом в 11Кб.

G-virus
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Приведите примеры контроллеров, которые лично вам нравятся.

G-virus
() автор топика
Ответ на: комментарий от anonymous

Нет DMA (есть в L-серии, но там цена намного выше), зато есть EEPROM; меньше объем flash; 8-битная архитектура; меньшие возможности таймеров и меньшее их количество;

Смешно. Если так сравнивать, то разница между старшими и младшими avr куда больше, чем разница между stm8 и 32. На то это и устройства для совершенно различных применений.

И да, если что, я — Eddy_Em, мне не надо задавать глупых вопросов «почему вместо свободного софта ты не пользуешься проприетарщиной».

Я не знаю кто такой Eddy_Em, но к религиозным убеждениям отношусь терпимо :)

vaddd ★☆
()
Ответ на: комментарий от vaddd

Даже между STM32 разница такая, что между сериями код портируем только с матюками и молитвами. Да что там говорить: даже внутри одной серии на разных МК код нужно тщательно проверять, чтобы периферия совпадала и регистрами не ошибиться. С этой точки зрения, как ни странно, аврки проще: вот я сейчас код под 8535 отлаживаю на абдурине с 328p. Конечно, кое-какие #define'ы втыкать приходится, но это не сравнить с попыткой отладить код под STM32F107 на STM32F103!

anonymous
()
Ответ на: комментарий от G-virus

Никогда не понимал эстетической тяги к навороченным проектам под завязку возможностей процессора. Получать удовольствие от отладки неотлаживаемого и впихивания невпихуемого.... В таких случаях эффективнее, быстрее и надежнее работает распределенная мультипроцессорная структура. Почти всегда навороченный проект на старшем мк в сотни килобайт кода можно разбить на несколько младших, в каждом из которых будет, как вы говорите, «мигание светодиода в 11кб», а лучше в 1кб.

vaddd ★☆
()
Ответ на: комментарий от vaddd

А ты попробуй.

Лично мне доставляет удовольствие реализовывать аппаратно вещи, которые абдуринщики тупым ногодрыгом на 100500 абдуринах делают.

Вон, скажем, тот же 1-wire: я реализовал на таймере с DMA, у кого-то встречал реализацию на UART с DMA. А в абдурино-IDE какой-то осел это сделал ногодрыгом. И пользуются же!

И много подобного ужаса встречал. Скажем, для работы с термометрами tsys01 посмотрел сначала, что там в абдурине сделали. А там, опять же какой-то осел, забульбенил ФЛОАТЫ! Флоаты на восьмибитном мелкоконтроллере — это ж финиш! А достаточно было просто передавать голые цифры на комп, а тот уж пусть считает по формулам...

anonymous
()
Ответ на: комментарий от vaddd

А вот у меня она как раз и есть - эстетическая тяга к впихиванию невпихуемого. По моему мнению, в этом кроется профессионализм. Да и это просто круто. Каков толк в том, чтобы выпускать новые процессоры с миллионом ядер, чтобы там запускались какие-нибудь тяжелые программы без тормозов, если можно просто взять, выровнять руки киянкой, и написать ту же самую программу, которая так же хорошо работала на более слабом процессоре. Тяга к быстроте разработки, к «удобству» приводит к тому, что в истории появлялись вещи, как Windows Vista, например. Ну зачем?

G-virus
() автор топика
Ответ на: комментарий от G-virus

для stm8 - sdcc, а там своя атмосфера.

Для stm32 нормальный gcc или даже llvm

Dark_SavanT ★★★★★
()
Ответ на: комментарий от G-virus

Пока ты развлекаешься для себя - сколько угодно и это даже хорошо. Как только за деньги, то сразу понимаешь, что поставить контроллер пожирнее, зачастую, не всегда, дешевле чем потратить неделю времени разработчика на впихивание невпихуемого. Nothing personal, just business.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от G-virus

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

И неважно, как пишет анонимус выше, это сделано - ногодрыгом или аппаратно. Работает? Кому-то было так _проще_ и _быстрее_. Только это может называться профессонализмом.

vaddd ★☆
()
Ответ на: комментарий от Dark_SavanT

Ну. Вот это похоже на взгляд профессионала )

vaddd ★☆
()
Ответ на: комментарий от vaddd

Нет, это называется профессиональной незрелостью. Не может быть быстро и надежно. Не может. Просто не может. Надежно - это продуманно. Продуманно - это время, или наработки (что, кстати, не всегда работает в новых проектах). А получить деньги - это вообще не относится к понятия профессионализма. То, как это сделано - это единственная важная вещь. Зачем производить говно, если можно производить качественные, хорошие вещи, софт, железо. А проще и быстрее - это для студентов-джунов-фрилансеров.

G-virus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.