Что будет с AVR-ками

А вот:

Мы (компания Rainbow), как официальный дистрибьютор Atmel в России хотим дать некоторые свои комментарии по поводу данной сделки и её влияния на российский рынок разработки электроники.

Мы специально обратились к Atmel и получили гарантийное письмо о том, что срок поддержки семейств SAM7x, SAM7S (ARM 7), SAM G51, SAM G54, QTouch 42QT составит не менее 5-ти лет (до июня 2020 года). Остальные семейства (в том числе AVR) будут доступны как минимум 10 лет (до июня 2025 года).

http://geektimes.ru/company/rainbow/blog/263130/

Про цены ничего не сказано. Ну и ладно!

В конце концов, народ уже подсел на STM32. А для мелких приложений типа «кофемолок» есть STM8, которые по цене уделывают аналогичные по параметрам AVR-ки. Иные же разработчики направляют свои лыжи в сторону красивого ядра MSP430. Да-да, вы не ослышались! Я так и сказал — «красивого». Кто, уже распробовал, тот понимает, о чем я. Ну а людям, не умеющим плавать/кататься на велике/летать на самолете, ну как объяснить — на сколько это обалденно. Никак. К стати, MSP430 тоже стали соизмеримы по цене с AVR.

Тут намедни на electronix-е аж страниц флуда подняли на тему AVR vs. others и assembler vs. C.

Ну что сказать, народ отчасти прав — когда AVR завоевывали себе место под солнцем, их «вкусность» состояла еще и в том, что писать программы для них можно было на ассемблере. Так многие разработчики, подсев на ассемблер в те времена, так на нём и продолжают клепать свои произведения искусства. Это не плохо и не хорошо. Это просто факт. В конце концов, знание архитектуры процессора и системы команд — это всегда считалось необходим для статуса настоящего инженера. Иначе, будет не инженер-разработчик, а студент — где-то что-то слышал, а как оно на самом деле — не знает.

Так вот, Гарвардская архитектура AVR предлагает разработчику три адресных пространства: память программ, память данных, и EEPROM. На последнюю можно не обращать внимания, так как она нам особо не мешает. А вот память программ и память данных — это два «чуда», которые желательно как-то объединить в одно, что бы непринуждённо работать с ними на языке C/C++.

Я специально выделил слово «непринуждённо». Я имею в виду, не прибегая к костылям или каким-то хитрым уловкам.

Вот, смотрите! Возьмём для примера MSP430 — единое адресное пространство. В нём располагаются и память программ (flash), и память данных (RAM), и все регистры периферийных устройств.

Всё находится в одном адресном пространстве, и C/C++-программисту не надо пускаться в танец с бубном вокруг костра. Обращение к оперативной памяти, обращение к постоянной памяти, обращение к регистрам периферии выглядят абсолютно одинаково. Адреса, конечно, разные. Но код, который пишет программист — он одинаковый для всех объектов в памяти. Поэтому писать на C/C++ для этой архитектуры очень даже легко и приятно.

Теперь посмотрим, что нам предлагает делать AVR при написании программ на C/C++. Поскольку, у процессора разные адресные пространства, то способ доступа к данным, лежащие в этих пространствах, получается разный. Более того, AVR не предусматривает логических и арифметических операций с данными, которые находятся в программной памяти. Единственная операция — это считать из flash-памяти байт по указанному адресу.

Представьте себе, что в нашей программе используется число ¶ (3.14159). Это константа. Нет никакого смысла размещать её в оперативной памяти. Однако, AVR может работать только с данными, которые размещены в оперативной памяти. Хорошо! Что делает кросс-компилятор C/C++ — он тупо переносит четыре байта, которые есть число ¶, из flash-памяти в оперативную.

А поскольку это делается еще до вызова функции main(), то неискушенный программист-студент даже не заметит, что у него автоматически уменьшился доступный объем оперативной памяти. И в самом деле — что такое четыре байта!

Осознание проблем архитектуры AVR начинается на средних и больших проектах, когда уже начинается использование ЖКИ-индикаторов, общения с компом и так далее.

Все символьные строки  — сообщения об ошибках, предупреждения, приветствия, всякие разные названия параметров и режимов и так далее — всё, что вы выводите на экран ЖКИ или отравляете во вне, — это всё константные строки. И они неизбежно будут перенесены компилятором из flash-памяти в оперативную. И сожрут они её прилично — так, что незамеченным этот факт не останется.

Вот тут и наступает первая ступень взросления AVR-программиста. Что-то надо делать, ведь оперативная память не резиновая и её, как правило, с гулькин нос!

И вот тогда AVR C/C++ программист начинает изучать PROGMEM и всё, что с этим связано. И вроде бы «лекарство» найдено, но какой-то неприятный осадочек остается. Особенно весело тогда, когда приходится заниматься с массивами констант. Кто плавал в эти морях, то понимает, о чём я!

После осознания того факта, что это всё как-то неправильно, как говориться — наступает просветление в мозгах программиста, и он начинает смотреть на другие архитектуры — а как там реализовано? И к своему ужасу замечает, что MSP430 таких проблем нет — архитектура другая — Фон-Неймановская.

А когда программист узнает об архитектуре Cortex, которая — на минуточку! — тоже считается Гарвардской, то у бедного программиста мансарду сносит напрочь!

У кортексов, хоть и Гарвардская архитектура, но тоже ЕДИНОЕ АДРЕСНОЕ ПРОСТРАНСТВО. А это значит, что AVR-проблем нет и в помине!

Вот и получается, что AVR-ки не предназначены для создания средних и больших проектов. Всякие кофемолки и светодиодоморгали — это условный предел для этой архитектуры. Всё, что более «тяжелое», лучше и легче создавать на MSP430 или на STM32.

Однако, не всё так просто. На деле же оказывается, что даже сектор простых кофеварок и светодиодоморгалок для AVR оказывается «недружественным». Почему? Да, просто AVR по цене проигрывают тем же Cortex-M0.

И правда что — писать на ассемблере в наши дни — это какое-то «не комильфо», товарищи! Это жуткая привязка своих проектов к архитектуре. А ну как проект разрастется и его придётся переносить на более правильное ядро? Ну-ка перенесите проект с ассемблера AVR на ассемблер MSP430? А вот Си-шный прект перенесётся намного легче!

Вопрос — какой смысл писать в наши дни на ассемблере? А ведь, ассемблер AVR — это был один из основных коньков. И сейчас его, можно считать, уже нет.

Достоинством AVR-ок были программаторы «из пяти проводков», которые подключались к параллельному порту компа.

— Эй, алё? Там, на барже! Покажите мне параллельный порт на современных компах!

Единственное, что еще остается в арсенале у AVR — это корпуса с крупным шагом ножек. Радиолюбителю их любят, но заводной народ не сидит без дела и уже освоил ЛУТ на технологии 0.2/0.3 мм.

И что, чем сейчас «крыть» ATMEL-у? Рынок стремительно уходит, а AVR-архитектуру не изменить.

Я так понимаю, что AVR скатывается туда же, где сейчас находится 51-е ядро.

В заключение я хотел бы сказать следующее:

Если технология уже исчерпала себя, не тревожьте её, не делайте ей больно! Позвольте ей уйти достойно. Мы знали AVR, мы работали с этой архитектурой рука об руку. Мы понимаем, какой вклад она привнесла в наше понимание о том, какой должен быть микроконтроллер. И это было замечательно! Мы помним только хорошее.

Покойся с миром, AVR!

Реклама

8 responses to “Что будет с AVR-ками

  1. А что 51 ядро? Вроде оно популярнее и применимее чем AVR до сих пор, всякие silabs…

    • Я так не думаю. Мне кажется, нужно просто «полистать» форумы, и посмотреть какую архитектуру более всего «обсасывают» разработчики?

      А так, получается, Вы сказали своё мнение, я сказал своё мне6ние, но ведь объективности нет. Мы каждый видим мир со свой колокольни.

      И да! Мой панегирик по AVR отнюдь не означает, что я полностью отказался от разработок на этой архитектуре. Так, например, неделю назад для реализации одного маленького и очень простого девайса, размеры которого очень критичны, я выбрал ATTINY10-TSHR в корпусе SOT23-6. Но если не смогу купить, то буду поднимать проект на MSP430F2001 или STM32F030F4 в TSSOP.

      То есть, AVR-ка выиграла конкурс только по наличию крохотного корпуса, которого нет у других архитектур. (Есть еще PIC10, но я не знаком с этой архитектурой.)

  2. Подскажите, а выпускают ли другие производители микроконтроллеры с аппаратной поддержкой USB и со встроенном на заводе USB загрузчиком, как это сделано в AT90USB162?

    • Загрузчик (имеется в виду заливка кода во флешь-память МК) встроен во всех STM32. Причем, все модели STM32 имеют UART, через него и производится «заливка» кода. Более старшие модели, которые имеют USB (и CAN) на борту, позволяют заливать код и через эти интерфейсы. Например, к STM32F103 достаточно подключить только DP и DM (разумеется и землю, и питание!). То есть даже резисторы не требуются!

      К стати, цена STM32F103 — 130-150 рублей, цена AT90USB162 — 180-220 рэ. Аргумент? И это при том, что STM32 не нагрузит вас проблемами с переносом констант и константных строк из флеша в оперативу, то есть писать программный код будет несравненно легче и проще.

  3. Атмел это не только АВР, справедливости ради. У них есть все те-же кортексы. Причем, если по ценам на М3 просто провал, то по M0 и особенно по М4 ценник весьма конкурентный. Правда засада в том, что это справедливо для проектных оптовых цен для серьезных контор. А вот на российских любителей Атмел (и его дилеры) забили и купить в розницу в России атмеловские кортексы проблеммно (хотя и возможно…только кому нужен этот геморрой). И мое мнение — это неправильно и не дальновидно.

    П.С.: что бы не «раскусили» меня как атмельского бота, сразу признаюсь, что это я автор статьи, ссылка на которую дана вначале:)

    • Ух, ты! Приятно осознавать, что меня читают авторы с Хабра.

      А вот чтобы Вас, Денис, как Вы говорите — «не раскусили», я думаю, нужно «раскусывальщикам» чётко различать понятия «личная неприязнь к…»и «рыночные отношения».

      Другими словами, рынок более объективен, чем личное отношение к AVR-кам. И влияние рынка на исход (на судьбу AVR) несоизмеримо больше, чем мнение какого-нибудь радиолюбителя Васи Пупкина о убогости или, наоборот, — крутости XMega.

      А за каммент — спасибо!

      • Я по долгу службы, обладаю достаточно точной информацией и вижу, что АВР постепенно умирает. В новых разработках виден четкий тренд к миграции на кортексы и это, вероятно, уже не остановить.

        А вот Вася Пупкин может влиять на рынок сильнее чем кажется… точнее сообщество таких Вась: разработчики в «серьезных» компаниях тоже люди, они читают интернет, им важно наличие большого количества информации и примеров. Вася Пупкин, с большим удовольствием, в интернете её генерит, влияя таким образом на местный рынок.
        Аналогично, сегодняшний молодой разработчик это вчерашний студент. А львиную долю информации он часто получал не в институте, а в интернете.

  4. Ну про 51-е я касательно силабса часто видел проекты с их использованием. Не в интернете…новички наверное 51-е ядро не особо уважают потому по нему нет особо вопросов. Да и ардуино на нём нету.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s