Да, такую инструкция вижу, но не вижу что именно для неё нам обещают выполнение за один такт. Маркетологи такие маркетологи, вполне возможно что только 32x32->32 за 1 такт успевает.
сравнивать мипсы 8- и 32-битных контроллеров некорректно. например у AVR нет аппаратного умножения (в тини13 точно), так что умножение занимает несколько десятков тактов, а в Cortex — есть и выполняется за 1-2. плюс за один такт можно обработать не 8, а в 4 раза больше — 32 бита данных.
как-то раз я ради интереса сравнил один и тот же алгоритм (XTEA) на ATmega8 и LPC1786. Даже при одинаковой частоте ARM был в 3-4 раза быстрее
А меня в ARM'ах пока что останавливают корпуса. Я еще не достиг того уровня ЛУТ'а, чтобы влегкую делать платы для LQFP48 и прочих малюток. Поскольку серийным производством я не занимаюсь, делаю все для себя, то заказывать платы на производстве для меня слишком дорого. А PIC'и и Atmeg'и есть в дип-корпусах, что очень радует.
Я знаю :) Я много всяких вариаций ЛУТ'а перепробовал. Но тут без опыта никуда, а его у меня пока маловато. Вершина миниатюризации для меня сейчас — SOIC8 (это часики DS1307 были).
Я тоже малоопытный, но недавно попробовал ЛУТ с фольгой вместо бумаги — был приятно удивлен тем что всё получилось с первого раза, никакой мороки с размачиванием и отдиранием бумаги.
Тут надо разбираться с чем конкретно у вас проблемы — у ЛУТа проблемы начинаются только от 0.15мм.
Мастерства не нужно, просто правильная температура, правильный журнал, и гладить через ровную тряпочку равномерно :-)
Попробуйте пленочный фоторезист — оно только из описания кажется что сложно и муторно. В реале получается удивительно стабильный и повторяемый результат. Как-то из спортивного интереса провел дорожку между ногами TQFP44 (0.8мм шаг) толщиной 0,1мм — она вполне вышла :)
keil или IAR. у IAR IDE так себе, у кейла повеселее. в принципе можно к той же вижуал студии прикрутить соответствующий компилятор. я сейчас Netbeans + gcc + CMake пользуюсь
А как cmake для arm'ов прикрутить, скажем cortex'ов m0 m3?
Может поделитесь примерчиком?
А то вот недавно познакомился с этим cmake'ом, весьма понравилось, особенно то, что не надо редактировать его даже когда пере собираешь под embeded linux.
с cmake я только начал разбираться, вот пример для AVR, для ARM будет в целом аналогично, только имена компиляторов/пути поиска заголовков/флаги поменять pastebin.com/CnHZBguM
запускать как
cmake -G «Unix Makefiles» -D(дополнительные дефайны переменных)
make
Во, благодарю! Буду разбираться на досуге.
Ну для AVR пока все таки решает обычный makefile. Так как он ничем не отличается, вне зависимости от платформы (если написан по феншую =), у меня он кочует из проекта в проект).
А вот с помощью cmake хочется интеграции для ARM, чтоб прописал cmake && make в директории и проект собрался на любой машине (linux/windows) с установленными тулчейнами. А еще лучше прописать все это на хоткеи среды. Меня очень прет, что для очистки, сборки и заливки в камень avr, у меня настроено в среде три кнопки F4, F5, и F6 соответственно, которые выполняют make clean, make all и make program. Что либо подобное хочется и под ARM с cmake.
ну этот пример — самая элементарщина, чтобы собралось для конкретно моей машины. для меня он поначалу оказался не совсем очевидным. понятно, что можно и нужно добавить кучу разных проверок, разные компиляторы, разные системы… в перспективе эта штука должна будет собирать проект для разных архитектур — в том числе стм8 и арм
ИМХО куда больше имеет смысл ставить туда дотнет микрофреймворк.
Он в целом выполняет ту же функцию, несмотря на то что, разумеется, не является ОС — он дает абстракцию от оборудования и возможность использовать более удобный подход в написании приложений.
При этом на многие кортексы он должен встать (судя по требованиям) без дополнительных аппаратных затрат.
Ну дотнет то влезет и в обычную СТМку, цена которой существенно ниже. Во всяком случае, в серии STM32F103xx есть модели с подходящим размером Flash и RAM на борту — не знаю, портирован он туда уже, или нет, но по требованиям подходит.
Опционален там MPU, а это далеко не MMU по функционалу. Он не поддерживает виртуальные адреса и может использоваться только для установки прав доступа к участкам адресного пространства.
На недавнем форуме «Время электроники» в Питере представители STM и ARM говорили о том, что полноценный линукс на микроконтроллерах Cortex M запустить вряд ли удастся — для этого есть Cortex A0
Жесть — уже хочу. А то для идеализации идей смотрел на конструктор типа Arduino, а здесь все в куче да и еще с экраном.
ЗЫ. Кто через этот сайт заказывал отпишетесь плз.
относительно недавно теже STMicroelectronics, что делают STM32F10х, выпустили очень дешевые, но не менее производительные 8-битные контроллеры серии STM8S103Fx и STM8S101Fx. при частоте до 16МГц, Flash-памяти до 8кило и полным фаршем периферии(АЦПушки, куча таймеров, SPI, UART и прочие плюшки) вы получаете его не более чем за 20-30р в зависимости от объема партии и памяти: STM8S103F2P3, STM8L101F2P6.
В STM8 какой-то очень урезанный и неортогональный RISC (мне напомнило 6502). Там есть интересные фишки, но за счет компиляторов и огромного количества документации Atmel выигрывает среди 8-биток.
вообще соответствуя документации на эти контроллеры у них CISC-архитектура и явный доступ к памяти минуя регистры (их, кстати, вообще почти нет). ничего урезанного и, как вы выразились, неортогонального. просто архитектура другая. компиляторов тоже хватает. тот же IAR уже 3 версии настряпали. документации валом. их оф.сайт напичкан ею по полной. может вы просто не правильно их готовите?)
Про компиляторы и документацию я имел в виду не совсем это. Во-первых, открытых компиляторов нифига нету, а извращаться с IAR под Linux-ом мне как-то не хочется. Во-вторых, кроме документации на офсайте еще очень ценны наработки сообщества, а их как-то маловато.
вроде для ARM-ов не всегда нужен программатор, там на большом количестве кристаллов еще и бутлоадер сериальный вшитый есть. Не знаю как у STM32F100, но у STM32F103 точно есть.
Помимо АЦП туда напихивают еще столько, что это опять не под наши задачи :(
Надо бы быстрое ядро для математики + АЦП+ЦАП+UART+I2C+SPI + ножки желательно >=0.5.
А! Самая главная проблема, по которой пролетают кортексы — нужна совместимость с ТТЛ уровнями.
А у них максимум — 5V-tolerant.
Так что рано еще списывать старые добрые 8битники со счетов.
я что-то не понял смысла статьи, у вас сравнение идет *только* по стоимости?
а то что разработать pcb будет стоить в 25 раз дороже мы забываем? а заказать и сделать шестислойку еще больше.
а то что одним jtag дело не ограничивается, и в итоге все равно нужно будет брать какую-нибудь борду с разведенными интерфейсами мы тоже забываем?
а то что экран вы просто так не подключите, мы тоже забываем? :)
войти в ымбеддед с 60 баксов в кармане невозможно, забудьте про это. копите деньги на плату с выводом всех интерфейсов проца, одним модулем lcd и jtag все не ограничивается.
самым оптимальным вариантом, имхо, для начала является эта плата: mini6410 Продается тут
Ей много лет, она на стареньком проце, но зато её легко превратить во все что нужно.
Далее, есть большое количество плат от StarterKit, но, как и любой порядочный селлер в РФ, они ломят цены. Кстати там как раз есть продукция на основе STM32
а вот хорошая плата с Кортексом будет стоить дороже, с кортексом способным обработать видео — так вообще под 200 евро (см PandaBoard). и тем более, зачем кортекс-то?
не сочтите за занудство — но тема совсем не раскрыта, просто какие-то статистические данные. один быстрее другого, ну хорошо, и что из этого? для хорошей разработки нужен проц в первую очередь *с саппортом и готовыми решениями*, а не самый быстрый или маложрущий. нужен проц для которого есть хорошие девборды, разработаные не китайцами на выходных. и вот от этого стоит уже отталкиваться, что бы потом не попасть в такую ситуацию, когда programming manual на проц либо стоит бешеных денег, либо вообще лежит под NDA.
Вот эта плата стоит 300 рублей. Ее вполне хватает чтобы перейти с 8-битных контроллеров на 32-битные. Не все эмбеддед-устройства требуют многослойных плат, здоровых графических дисплеев и иже с ними.
А подключение всем набивших оскомину знакосинтезирующих дисплеев и LCD от Nokia к плате на стм32 ничем не будет отличаться от подключения к той же аврке, учитывая количество мануалов, я думаю, с этим справится любой начинающий.
Такие платы в начале пути только будут мешать — если человеку после АВР дать плату на АРМ9, с его ММУ, с внешним DRAM и прочим это только замедлит процесс обучения. Если же обучать последовательно, по нарастающей, то до монструозных Cortex A0 и иже с ними вполне можно обойтись без плат за 300 баксов.
<сноб mode on>
но это еще не самое интересное из не понимаемого, самое интересное — текущие несогласные со мной комментаторы не понимают сути различия между arm, avr и pic, вообще, в принципе не понимают.
не важно arm7, 9, 11 или 100500, важно то, что упор в 32-битных контроллерах, которые контроллерами то язык не поворачивается назвать, идет на работу с операционными системами и программами, записанными во внешней памяти, без которой они не работают вообще. тогда как простые 8/16 предназначены для легкой обработки и не более и могут быть прошиваемыми. да, 32-битные процессоры хранят бутлоадер и мелкие сервисные вещи, но не более. и теперь мы наконец приходим к необходимости продуманной и провереной борды или схемы распайки. отсюда мы опять таки выходим на цену этого продумывания и приходим к тому что я выше описал.
дополнительные пачки инструкций это, кстати, вообще другая тематика, и поверьте, даже если вы знаете что они есть — возможно вы их не сможете использовать т.к. а) у вас тупо не будет мануалов б) мануалы будут под ценником ц) инструкции будут безбожно бесполезными или какую-то операцию все равно придется выворачивать через обычный набор. </сноб mode off>
на самом деле есть довольно простенькие мк от Analog Devices на ядре арм7, которые они сами даже микроконтроллерами не называют, а зовут «микроконвертер», потому что там основной упор на аналоговую часть.
с них я и начинал, довольно дружественные и даташит совсем маленький, простой.
не надо бояться 32-биток, они совсем разные. есть монстры, есть простые. арм7 и контексы с индексом М — микроконтроллеры именно потому, что программа, да и операционка (если используется, ведь часто обходится и без нее) хранится во внутренней памяти.
но вы правы: различия между 8 и 32-бит архитектурами слошком велики, чтобы их вообще сравнивать
Вы хоть один кортекс в руках держали? M0 тот же? Не работают без внешней памяти, говорите? Очевидно поэтому у них даже не выведена шина для ее подключения, ага.
У вас какие-то вывернутые наизнанку представления, которые, похоже, базируются на знаниях о здоровенных АРМах трехлетней давности. «Продуманная и проверенная схема распайки» для кортекса м3 это тот же резонатор и два кондера что и в вашей горячо любимой ардуине.
Про дополнительные пачки инструкций — вы, конечно, можете взывать к моей вере, но увы, я вам верить не буду. Потому что воочию видел реализованные DSP-библиотеки, использующие эти инструкции, и сам их использовал. Возможно, вам следует более тщательно гуглить мануалы?
Если вы используете кортекс чтобы мигать светодиодами то да, инструкции умножения с накоплением будут для вам безбожно бесполезными, в это я верю. Однако, так как мне приходится иметь дело с цифровой обработкой сигналов, MAC — это как раз одна из тех инструкций, которую больше всего дергает процессор во время своей работы.
В общем, подводя итог — вы, конечно можете продолжать утверждать, что заявление самих АРМов и производителей контроллеров по их лицензии о том что «кортекс М0-М3 созданы для замены 8/16-битных микроконтроллеров и обеспечивают производительность 32-битного процессора при простоте использования 8-битного» — это все маркетинговые ходы, тайный заговор правительства и массонов, но, вообще говоря, факт остается фактом.
Там где городят этажерки ардуин т.к. не хватает одной или пытаются запихнуть в них обработку сигнала и матерятся на нехватку производительности, самое время применить кортексы М0 — М3.
В целом верно, хотя не так все сложно 48LQFN вполне разводится по двум сторонам и можно уже делать девайс. Также не везде нужен экран.
Но в целом, изготовить девайс на STM32 ободйется ощутимо дороже чем сделать то же на AVR тем более в подавляющем большинстве моща стмок будет простаивать.
Там и одной стороны может быть достаточно, ничем не отличается от AVR-ок в таком же корпусе :-)
Само собой DIP проще, но мне он всегда казался анахронизмом который вот-вот исчезнет…
Дип я даже не рассматривают. LQFP мало того, что мелкий, так еще и питалово у него с четырех сторон, да в таком виде что без пересечений его хрен раскидаешь. А все домены питания надо запитывать, иначе камень может сдохнуть внезапно. Плюс выводы столь тонкие, что рядом с ними никакой кондер или переходную дырку не сделаешь — банально не влезет. Вот и получается что на однослойке LQFP занимает места едва ли не больше чем PLCC или даже DIP т.к. в центре стоит чип, от него во все стороны уходят дорожки плотняком, а как только расползутся на более менее вменяемое расстояние начинают ветвиться уже и что либо к ним подключаться.
Были бы они в корпусах аля атмега128 или хотя бы soic/ssop с двухрядным расположением выводов было бы куда приятней все это разводить.
Цена на 8ми битки аля PIC и AVR зависит от их популярности. Они популярны, востребованы потому и дорогие. Хочешь быстро склепать проект? Берешь AVR и хреначишь, собирай код из готовых кусков кои за 10 лет наклепали на все что угодно. Качество печатной платы опять же не столь высокое. В 90% можно обойтись односторонкой с дорожками 0.3 минимум.
Если хочешь сделать что то на Cortex то мануал в зубы и изучай все с нуля. Плата куда более сложная и геморойная в изготовлении, обязательно двусторонка. И с дорогами 0.2мм. Что намного повышает трудоемкость изготовления прототипа в домашних условиях.
Так что если я что то делаю то делаю на AVR — привычней, дешевле в общем зачете (ощутимо дешевле). И быстрей, намного быстрей.
А STM32 лениво так изучаю, чтобы не отстать от технологий.
Да тут все тоже не так однозначно. Даже имея опыт разработки на разных семействах я все равно охреневал с того обьема инфы, что на меня свалися в связи с изучением кортексов. Там просто нереально всего дохрена. И если, потенциально уже зная где что искать и на что смотреть в даташите, адски торможу и туплю, то каково будет тому кто в это с нуля полезет.
Имхо идеальный МК для изучения МК это АТ89С51 накосячить и затупить там негде, а вот разобраться и проникнуться можно будет очень быстро :)
Но все же в потолок АВР рано или поздно упрешься.
Конечно, зависит от реализуемых задач, но вот обработка сигнала довольно быстро показывает пределы АВР. Не спорю, при желании туда можно много чего запихнуть (сам эксперементировал, пихал преобразования, корреляции и иже с ними) но быстро приходит осознание что это не нужно. В смысле, чем биться за каждый такт в АВР и жертвовать разрядностью, можно за те же деньги взять СТМку и получить полноценную 32-битную платформу за те же деньги.
Поплатившись, правда, несколько более труднопроизводимой в домашних условиях платой.
Мое мнение такое — начинать-то можно и с АВР, а дальше, когда достигаешь потолка — уже смотреть в сторону младших АРМов.
Просто мне лично кажется неправильным, когда люди совершенно дуреют от ардуино — в том плане что они пытаются ВСЕ на нем сделать. А когда не влезает — делают этажерки из модулей.
Это ИМХО неоправдано, всю эту этажерку из 2-3 модулей можно заменить на один кортекс, будет и дешевле и компактнее.
Всему приходит предел. Но вообще если упираешься в потоковую обработку, то тут прямая дорога на DSP или ПЛИС. Т.к. по быстродействию кортексы конечно пошустрей аврок, но не то чтобы уж сильно радикально.
ардуионо, особенно в каноничном варианте, с использованием родной среды и вайринга как основного языка это вообще клиника, т.к. тупейшие скетчи могут занимать просто невероятное количество места и никого это не смущает.
Ну вот не всегда требуется мощь «тяжелых» ДСП, вроде тех что предлагают AD и TI, а АВРок уже не хватает)
Поэтому появление на рынке процессоров с кортекс М3 на борту меня лично очень обрадовало — это как раз та идеальная середина для меня (по крайней мере, пока).
У них есть ДСП-инструкции, типа MAC, 32-битного умножения и деления, при этом они в целом не намного монструознее больших АВРок (имея в виду трудозатраты на железку)
Те же КИХ-фильтры на них вообще со свистом считаются. К тому же к STMкам и LPCшкам идет уже готовая DSP-библиотека, для тех кто не хочет это ручками реализовывать — тоже очень неплохо.
Сейчас с дипломом волокита пройдет, может быть, сподоблюсь написать статейку про обработку сигналов на STM32, заодно сам в них получше вникну.
P.S.
Спасибо за статьи, кстати) Я познакомился с Cortex M3 именно после твои статей на easyelectronix)
как вариант можно посмотреть в сторону М4 — это тоже ядро М3 + дополнительные DSP инструкции, для обработки сигналов значительно быстрее М3, в остальном почти не отличаются
А навскидку не назовете модельку-другую с ядром М4? Самую младшую, не монструозную)
Дело в том, что часто бывают задачи для обработке не очень быстро изменяющегося сигнала, звукового, допустим, или с датчиков.
В этом случае на АВР/ПИК дискомфортно все така из за отсутствия аппаратного multiply-accumulate и низкой разрядности, а большие тяжелые ДСП избыточны — тогда М3 в самый раз подходит)
Да уж, даже после твоих курсов ARM все равно весьма непросто разобраться, пришлось читать AVR курс, он попроще написан. А в связи с популярностью Arduino считаю самым удобным для изучения Atmega168 — он умеет практически все то же что и Atmega16, компактнее, дешев, мало ест, полностью совместим с той же Arduino, по позволяет поначалу купить Arduino и тренироваться на ней, а потом самому сделать платку, не меняя кода, то есть развиваться постепенно. При этом код и Arduino проектов и под AVR gcc будет отлично работать. Раздолье. А стало мало памяти — переходи на Atmega328p, 1280, 2560.
Камеру и к STM32F103VET6 не подключить — 72 МГц не хватит для обработки видео. вообще на мой взгляд хорошо иметь разделение — для 5В периферии и управления механикой Atmega в самый раз, а для WiFi, экранов 240х320 (если нужен) и обработки данных посложнее — STM32. Я вот купил такой девайсик для изучения:
В качестве бортового компьютера для миниробота на мой взгляд самое то
В целом все более или менее так, как и написано. У AVR только 3 заметних плюса: корпуса, относительно маленький и простой набор комманд(все же для 1к памяти часто удобнее писать на ассемблере), доступность и простота программаторов и отладчиков + очень неплохая IDE в лице AVR Studio.
+ для указанных двух армов нет никаких упоминаний о usb интерфейсе.
В таком ценовом диапазоне(до 50р) USB нам пока не видать ) В моделях чуть постарше есть.
А насчет памяти/ассемблера — мне было бы приятнее писать на C в 16кб памяти, чем на асме в 1 за те же деньги :-)
Выбирать микросхему по вкусу и читать на неё DataSheet, гуглить в инете по названию как с ней работать, примеры там, программатор… Например если это stm32 — то его и гуглить )
Здравствуйте. Есть желание сделать носимое устройство (повязка на лбу с некоторым функционалом). Нужен bluetooth,вот такой датчик, вибромоторчик. Соответственно возникает вопрос: на какой плате (достаточно плоской чтобы абсолютно не ощущалась на лбу) это можно было бы сделать. Подскажите хотя бы направление в котором копать. Спасибо. (Я в этом нуб совершенный, так что буду признателен за любые полезные советы.)
Сравниваем микроконтроллеры до 50 рублей: ARM жаждет крови