Comments 218
Что вы так носитесь с этой защитой кода? В 95% девайсов прошивка производителя нужна только для демонстрации возможностей и proof of concept. А дальше надо открывать спеки на железо и давать это сообществу. Они напишут такой код, что будет работать и обновляеться, когда уже самой компании не станет.
На самом деле не столько я ношусь, сколько заказчики. Многие относятся к этому вопросу просто маниакально.
Вообще необходимость в защите кода сильно зависит от разрабатываемого устройства. Хочу также заметить, что обновляемое ПО не обязательно является незащищённым. Если речь идёт, например, о медицинском приборе, то оставлять его содержание в открытом доступе во многих случаях просто опасно. Даже в секторе IoT можно получить много сюрпризов, оставив ПО открытым.
В 95% девайсов прошивка производителя нужна только для демонстрации возможностей
я бы не рискнул высказываться так однозначно, возможно в вашем сегменте это так, но обобщать не стоит.
На флеши могут быть ключики, коэффициенты цифровых фильтров, таблицы переключений, калибровки под заказчика, да просто огромная куча всего, что не желательно для раскрытия примитивными средствами. Это помимо, собственно, защиты кода, который тоже может иметь наибольший вклад в стоимость девайса, ибо PCB-шки реверсятся и воспроизводятся некоторыми друзьями просто на ура.
Остановить копирование изделия конечно не получится путём защиты кода, но значительно его затормозить вполне.
В серийный устройствах, изготовляемых китайцами я вообще рекомендую клиентам исключительно функциональные тесты прошивать. Для устройств, имеющих беспроводные интерфейсы, ещё бутлоадер для перепрошивки, причём привязанный к номеру устройства.
В большинстве случаев, для более-менее сложных дивайсов всё равно окончательную сборку, прошивку и тестирование клиенты уже в России делают. Ну а скажем такие вещи как автомобильные сигнализации, часто имеют универсальную плату в которую шьётся ПО для различных моделей.
Даже в секторе IoT можно получить много сюрпризов, оставив ПО открытым.
Про security through obscurity слышали?
Оно порицается для универсального применения (а-ля залепить жвачкой текущий радиатор), но может иметь ограниченный положительный эффект в частностях. Например, просто зная версии ядра/библиотек можно уже получить в руки хорошую отправную точку, даже не имея физического доступа к устройству (в т.ч. удалённого). А, вот девайс, залитый правильным компаундом может повысить не только информационную безопасность, чем не security through obscurity))
В далёкие советские годы, когда генсеки ещё не начали гонки на лафетах, мы были очень наивными. Верили что Японские Телевизоры плоские и вешаются на стены как картины, а их видеомагнитофоны имеют идеальную защиту от взлома — при попытке вскрыть заднюю крышку просто разваливаются на части.
Сегодня телевизоры действительно висят на стенах и в принципе можно делать очень совершенные датчики проникновения, при наличии резервной батареи они могут заставить программу самоуничтожиться.
Различные медицинские приборы и прочая узкосегментая девайсщина не считается — там делайте, что хотите. Я говорю о массмаркете. Посмотрите, например, во что развилась возможно прошивать роутеры. И как стагнирует экосистема IP-камер на чисетах Hi 35xx, на которых (у всех вендоров) стоит одна и та же китайская убогая, кривая и косая прошивка ужасного качества. Конечно, на Linksys WRT54G в своё время спеки никто не открывал, но помогла «стандартность» железа. А вот с IP-камерами немного сложнее, так как интерфейс с матрицей и с хардварными кодеками вообще негде посмотреть. Открой спеки на это железо и сообщество бы в миг написало нормальную прошивку и камеры бы разлетались как горячии пирожки. Аналогично дело обстоит со всяким IoT'ов для умного дома. Сплошной vendor lock in и довольно недолгий цикл поддержки. И ведь умный дом никто из потребителей не хочет делать так, чтобы каждые два года его выкидывать и ставить новый.
Собственно вы только подтвердили мои слова.
Всё зависит от сегмента и в описанном вами случае это вполне может быть разумным ходом.
В описанном вами сегменте я к сожалению или к счастью не работаю.
Согласитесь, есть разница между выкладыванием кода под свободной лицензией и предоставлением возможности установить свою прошивку на устройство. С теми же медицинскими (да и многими лабораторными) приборами типичная ситуация — это управляющее ПО, написанное под Windows XP, и которое для запуска под современной Windows требует костылей.
Знаете, по опыту работы с ПО под меданализаторы — там не то, что костыли требуются, там весьма примитивные утилиты, которые, по сути, вообще редко когда прибиты к каким-либо особенностям винды.
Просто производителю нет смысла даже тестировать ПО начала нулевых, когда можно просто под современную ОС запустить вмварю и в ней win2000. Просто из принципа, что под новую ОС могут быть какие-то редкие баги. Ну или она могла хранить данные в папке своей установки, который в программ файлз, и путь этот забит внутри программы, а сейчас это запрещено.
Вообще это интересно. На самом деле это не запрещено а просто является плохой практикой, решается это изменением прав доступа к папке с программой. И пиши — не хочу.
Но этим никто не хочет заморачиваться, ведь это надо будет учитывать при установке софта, развертывании в домене(например). А там как обычно поменяют что-то незначительно и установка прав не сработает, надо другой набор атрибутов прописывать а для этого нужно выяснить какие именно… с точки зрения затрат на решение проблемы, развертывание виртуальной среды дешевле и даёт стабильный результат.
Как интересно идёт голосование! Не ожидал что 8 битники получат перевес. Правда с учётом того, что я сильно сегментировал ARM по ядрам, они всё таки пока впереди, но с минимальным перевесом.
8 битники получат перевес

Не в последнюю очередь благодаря приятным для DIY корпусам (включая тот самый).

С корпусами как раз проблем нет с появлением переходников QFP-DIP и аналогичных. Плюсом, на этих переходниках есть вся необходимая комплектуха. Популярность 8-битных МК вызва Ардуино сообществом, где они и применяются, в основном.

Для того чтобы эти переходники использовать надо ещё LQFP паять научиться. Некоторых это пугает. Зачем напрягаться.
Тем не менее думаю фактор Ардуино таки перевешивает. Правда большинство любителей этой платформы оперирует на уровне плат и редко что-то самостоятельно на микронтроллерах собирает.
LQFP все-таки не BGA, не так страшен черт как его малюют. Относительно легко управиться почти любым паяльником и хорошим флюсом/припоем.
Абсолютно правда, главное иметь хороший, как вы отметили флюс, точно спозиционировать чип, тогда он при некоторых навыках паяется широким жалом по нескольку ножек за один провод паяльника. Но ведь сначала этот навык надо наработать! Умельцы в ларьках по ремонту сотовых телефонов с помощью фена и простейшей печки и BGA корпуса с мелким шагом достаточно легко заменяют!
Если стремление к совершению подвига в душе неистребимо, можно и канифолью и даже тупо.
Свои первые поделки в кружке радиолюбителей в конце концов я так паял и ничего, работало. Правда микросхем в них не было никаких, даже в DIP корпусах.
Ну почти любой флюс состоит из канифоли, растворителя и активаторов. Если плата луженая (а не золото, скажем), то активаторы не нужны — с обычной чистой канифолью очень хорошо запаяется. Главное чтобы плата с маской была. Ну и жало только толстое и можно использовать — ровность пайк в этом случае обеспечивается поверхностным натяжением, а не точностью попадания.
Ардуины там выделены в отдельный пункт :)
А переходники — так какая разница паять QFP на переходник или сразу на плату?
Разница в том что переходник делается на производстве с более тонкими технологическими нормами, а плата куда вставляется контроллер делается в домашних условиях где проблемы начинаются уже с дорожек 0.4мм и провести дорожку между выводом контроллера с шагом 2.54мм/1.27мм и 0.5мм огромная разница.
Проблема не впаять контроллер в плату, а изготовить ту самую плату в домашних условиях.
Да вроде дорожки 0.3 мм с промежутком 0.2 мм давно уже не проблема даже при лазерно-утюжном изготовлении, не говоря уж о фоторезистивном :)
А проводить дорожки между выводами QFP не каждое производство позволит. И если вдруг возникает такая необходимость, то явно имеются какие-то проблемы с проектированием платы в целом, а не с ограничениями домашнего изготовления.
Вот смотрите. Рекомендованная ширина площадки для LQFP 0.3 мм, шаг 0.5 мм. Чтобы провести дорожку не уложимся даже в нормы 0.1 мм ширина, 0.1, расстояние между дорожкой и контактной площадкой, поскольку поскольку у нас всего 0.2 мм остаются. А там ещё вопрос маски вылезет на поверхность.
Китайцы конечно сделать смогут, а вот тот же Резонит уже вряд ли. В таких ситуациях гораздо лучше перейти на четырёх слойку и она обойдётся дешевле чем двухслойка, которая позволяет творить такие чудеса! При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
В последнем проекте очень хотелось поставить BGA чипы с шагом 0.5 мм, но крепко подумал отказался. Вручную сэмплы спаять сложно, проверить качество пайки невозможно, отлаживать плату крайне неудобно. Скрипя сердцем установил таки LQFP 64 и перекинул несколько компонентов на вторую сторону платы. Зато плату без проблем сделали в Резоните. Это был прототип, если дойдёт до серии ещё подумаю…
Кстати, что легко можно делать даже в утюжной технологии — пускать проводники по углам LQFP, для 64 нового корпуса и более легко проходит по три проводника.

Так это Вы не меня уговаривайте, а того, кому я отвечал :) Я-то написал то же самое — и что между выводов QFP дорожки не стоит пускать даже при нормальном производстве плат, и что утюжная технология позволяет QFP без особых трудностей :)
Резонит спокойно делает 0.1мм зазоры.
При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
В Резоните при прочих равных цена пропорциональна числу слоев.
0.1 он делает не спокойно, но с существенной надбавкой «за сложность» — это раз.
Потом ты узнаёшь от них что твой заказ с такими допусками настолько индивидуален, что придётся делать его на отдельной заготовке, площадь которой придётся оплатить полностью, причём по завышенному тарифу.
В результате у меня бывали случаи что переплачивать приходилось в 3-5 раз при заказе маленьких по площади плат в небольших количествах, а другие у меня редко бывают.
Коэффициент 1.5. Ни каких требований к выкупанию всей закотовки нет (но могут быть при толстой фольге, нестандартнома материале и тд).
К кому как, а для меня почему то эти требования были и платить приходилось по полной. Возможно если поскандалить то можно было бы их избежать, ценой задержки заказа на неделю другую, но тогда это уже не срочное производство.
Ну я не знаю деталей вашего заказа. Пока не очевидно, что дело в допусках.

Кроме того, если вы знаете допуски и введете их при создании заявки, калькулятор все это учтет. А еще там можно не ставить галочку «запускать без оплаты» и тогда это «придется» уже будет зависеть от ваших приоритетов.
Последний заказ мне без всякой кнопочки запустили без оплаты, поскольку он менее чем в 5000 уложился и вопросов технологов к нему не было.
Но дальше начался ад. Сначала они подняли визг, что я не указал реквизиты плательщика, хотя совершенно не понятно какого чёрта им они нужны, если это частное лицо. Я никогда ранее их не указывал и всё работало. Потом они не включили в стоимость заказа стоимость доставки, хотя раньше всегда по умолчанию включали. Потом они зачем-то заменили лицо, указанное мной в адресе доставки на ФИО плательщика, причём без предупреждения. В итоге, в место того, чтобы доставить в ближайший постомат заказ в Самаре, его доставили почему — то в деревню под Самарой, хотя адрес был указан точно и полно вплоть до индекса! Пришлось названивать ругаться и в результате заплатить более 1000 рублей за доставку платок, общей площадью менее двух квадратных дециметров! Процесс логистики в России разваливается буквально на глазах, даже у ранее уважаемых мной компаний. Резонит не единственная в этом списке.
Если не сделать отметку, то сначала выставят счет, хоть там на тыщу у вас, а потом только запустят. Возможно, вам попался косячный менеджер или что-то такое, я не знаю. но с 2013 я делаю по 5-10 заказов в год, и ни разу не было ни каких проблем.
По поводу старта без предоплаты у меня никаких претензий нет, сумма маленькая, видно я у них в списке постоянных клиентов, они и раньше так делали.
Что касается остальной жести — у меня такое в первый раз. Кстати, они совсем недавно сменили партнёра, который занимался доставкой, видимо это сыграло свою роль.
Ну. Раньше галочка «запускать без оплаты» стояла по дефолту в срочном. Сейчас, вроде, снята.

После смены партнера мне стали привозить за 1 день, чему я очень рад.
А мне за одну неделю, с огромной кучей потраченных нервов и в два раза дороже
Проблема на производстве разрешается многослойностью, с ЛУТ-ом в домашних условиях уже двухслойная это лишний напряг, а там ещё переходные отверстия добавляют.
Сейчас снова схлопочу минусов от фанатов, но правда есть правда: с переходником цена контроллера оказывается уже не такой красивой, как ее малюют. Плюс переходники эти очень хреново совместимы с панельками, т.е. проблему перепрошивки решают весьма посредственно. Ну и выглядит схема с переходником как колхоз «красное дышло».
У китайцев stm32f103 «bluepill» стоит копейки.Считай, готовый DIP-модуль. Хочешь — впаивай в плату, хочешь — через гнезда/штыри подключай.
Поколонники STM32 постоянно напирают на его низкую цену. Сколько такая панелька добавит к стоимости контроллера? А к размеру на плате?

Иногда создается впечатление, что некоторые даже многослойную плату готовы утюжить дома, лишь бы не использовать ненавистный DIP.
DIP дороже, DIP съедает больше места. У DIP нет преимуществ кроме легкости монтажа, а это не актуально для нормального разработчика.
Панельки по ссылке выше, разумеется, не для серийного устройства, а, например, для прошивальщика или для прототипа.
Лёгкость монтажа(да и то когда не имеешь навыка) — только для ручного монтажа, даже на вручную расставляя корпуса, а потом паяя их феном или ещё лучше в печке SMD корпуса уже проще монтировать
Конечно для ручного. Даже больше — для очень неопытного ручного :)
ещё лучше в печке

Чего мелочиться, давайте сразу волной паять. Делов-то на пять копеек.

Поймите же, речь про DIY, а это, если немного утрировать, — паяльник на 40 ватт, припой ПОС-61 прутком и сосновая канифоль в баночке. Какие печки, о чем вы вообще?
Даже к DIY люди совершенно по разному подходят. Некоторые вообще в результате превращают хобби в конце концов в бизнес.
речь про DIY, а это, если немного утрировать, — паяльник на 40 ватт, припой ПОС-61 прутком и сосновая канифоль в баночке

Это уже какой-то случайный DIY и речь уже будет идти не о разработке, а о повторении — взять ардуину, припаять к ней на проводках остальное как показано в ролике на Ютубе :) Тогда и панельки не востребованы и статья эта не для таких людей.
Эээ… почему DIY не может быть на более-менее современном оборудовании? В конце концов, паяльник нормальный на картридже T12 в китае стоит 30$ и 5$ за жало для пайки волной(кстати и при обычной пайке тоже здорово помогает!). Кстати у таких паяльников и нагреватель даже мощнее… как-то пришлось попользоваться старым 60 ваттным паяльником… я уже отвык что они нагреваются бесконечно долго, сперва подумал «а он вообще рабочий?».
Сейчас наверно эти советские раритетные паяльники остались у очень немногих, а в основном если хочешь заняться DIY сейчас очень хороший выбор для старта в том числе и жала для пайки волной по цене ничем не отличающиеся от обычных а стало быть нет причин чтобы не иметь их в арсенале.
Вот что сейчас кусается ценой для DIY так это инфракрасные паяльники, но думаю в итоге и они тоже пойдут в дело. Ведь это почти как фен только не сдувает компоненты с платы.
Панельки по ссылке выше, разумеется, не для серийного устройства, а, например, для прошивальщика или для прототипа.

Вот именно поэтому восьмибитники и лидируют в опросе.

В DIY обычно нет такого понятия как «прототип» (если не считать поделки на беспаечных экспериментальных платах), есть первое и часто единственное устройство, которое должно поддаваться легкой перепрошивке без геморроя с разводкой ISP-интерфейса и подбора пинов для несовместимых с ним нагрузок.

Я не говорил о серийном производстве, в своем посте я имел в виду исключительно домашние кустарные поделки. Но многими движет культ карго, им единственную девайсину обязательно нужно сделать по массовым технологиям, пусть в ущерб почти по всем статьям, зато «как у людей».

DIP дороже

Переходник гоооораздо дороже выйдет.

DIP съедает больше места

Тот же аргумент.

У DIP нет преимуществ кроме легкости монтажа

Неправда. Панельки для DIP никоим образом не влияют на размер платы, не требуют изменения разводки, но позволяют вынуть контроллер и залить в него новую прошивку за две минуты. Это гигантское преимущество.
В DIY обычно нет такого понятия как «прототип»

У меня — есть. Сначала слепить прототип с кучей проводков, из остатков каких-то плат, просто чтобы проверить что все заработает, ничего не забыто и не перепутано, написать ядро будущей прошивки. А потом уже с учетом полученного опыта сделать нормальную плату в нужных размерах со всеми компонентами на ней.
Но у кого-то может все так на проводках и останется припаянным к такой панельке.
Переходник гоооораздо дороже выйдет.

Он просто не нужен.
Панельки для DIP никоим образом не влияют на размер платы

Посмотрите на плату на КДПВ этой статьи и представьте на ней корпус DIP на 40 ног. Влазит? И это на 40 ног, а не на 64, как у микроконтроллера на фото.
позволяют вынуть контроллер и залить в него новую прошивку за две минуты

Вот прямо сейчас у меня рядом лежит отлаживаемая плата, на которую я заливаю прошивку за 3 секунды вообще не прикасаясь к ней. И отлаживаюсь в рилтайме, выполняя по шагам, останавливая программу на нужных строках, видя вживую все переменные и регистры. Вот это — гигантское преимущество. В панельки (обычные для DIP) — это костыль, когда ничего другого не остается.
А такие панельки как по ссылке выше… Вы в курсе цен на такие панельки для QFP? Они совершенно не для DIY.
Да в общем то развести свою плату в бесплатном проектировщике и заказать у китайцев стоит чуть ли не дешевел чем лутом травить. Ну да подождать придётся пока пришлют немного, зато смотреться будет отлично, можно нормально сделать разводку для цифроаналоговых цепей, сложную форму заказать, точно по корпусу сделать… DIY не обязательно копна отваливающихся проводов, некоторые такие вещи делают, что профи позавидуют!
Конечно ничто не мешает :) Я так и делаю. Но перед заказом все же собираю прототип, на котором проверяю основной функционал. Иногда это, как я и писал, куски старых плат с кучей проводов.
А иногда чуть аккуратнее:

Не обращайте внимания на состояние меди — этот отладочный прототип уже с год валяется в ящике :)

Хватит плодить байку про легкость монтажа в дырки. Я сам на несколько лет откладывал переход на SMD из-за этого заблуждения. Но как показала практика это посильно даже 10-летнему ребенку. Даже со спиртоканифолью и паяльником ЭПСН SMD паяются быстрее и проще этих нескончаемых ножек.
А мне-то Вы зачем это пишете? :)
Я наоборот за поверхностный монтаж — QFP, QFN. Обычным паяльником я запаиваю десяток TQFP-64 минут за 8, раза, наверное в два-три быстрее, чем паять DIP в пересчете на один вывод :)
Ну так это сразу десять плат в одной панели, не нужно тратить время на переворот каждой платы отдельно :) Больше всего времени занимает прицеливание с прихваткой одного угла. А потом сама пайка — секунды по 3-4 на сторону.
Ну вот именно с прихваткой у меня и проблемы. Установил точно, но когда начинаешь «прихватывать» одну сторону чип съезжает. Не хватает твёрдости рук.
Я не паяю сразу всю первую сторону. Сначала прихватываю только пару выводов одной стороны в углу, который выровнял, а потом уже паяю всю противоположную сторону, слегка подправив ее при необходимости.
Хотя уже с пол-года не занимался этим в таких объемах, после того как купил PnP-станок и трафаретный принтер :)
Я в принципе тоже стараюсь сначала с двух сторон прихватывать Про станки интересно интересно. В Китае брали? Ссылками не поделитесь?
Да, брал в Китае, вот тут — item.taobao.com/item.htm?id=525680982287
Взял самый дорогой вариант TVM802BX из-за встроенного компьютера, то есть не нужно искать где-то отдельный комп, занимать им место. Ну и в дальнейшем выяснилось еще одно его преимущество — у него шаговые сервоприводы, а не просто моторы. То есть с энкодерами на валах для обратной связи по положению. В более младших моделях стоят двигатели без энкодеров.
Я делал на него обзор, если интересно — mysku.ru/blog/taobao/66376.html
Такие панельки исключительно для макетных плат, которые делаются дома кустарным методом. А для таких изделий вопрос цены глубоко вторичный. Это для прототипов и проектов, которые делаются для души.

P.S. Вот вам ARM Cortex-M0 в DIP-корпусе.
И вообще, много интересного есть.
акие панельки исключительно для макетных плат

Существование ZIF-панелек совсем не тайна, но никто про макетные платы не говорил. Я про готовое кустарное устройство, где прошивку допиливать хочется/приходится уже после сборки и ввода в эксплуатацию. ISP создает проблемы в разводке, да и с подключенными цепями совместим далеко не всегда, вынуть микросхему из панельки и проще и надежнее.

Вот вам ARM Cortex-M0 в DIP-корпусе

Так это же не STM, пацаны не поймут.
ISP создает проблемы в разводке, да и с подключенными цепями совместим далеко не всегда

А какие проблемы у Вас с разводкой двух линий? И зачем совмещать их с какими-то цепями?
Как показывает практика, проще ISP развести чем дергать чип из панельки. ISP занимает не так много выводов и представляет проблему только если выводов у контроллера ну прям совсем впритык и даже на выводах ISP висит силовая нагрузка.
Дёргать контроллер из панельки для очередной отладочной прошивки… и сколько раз ты его так сдёрнешь до первого обломанного вывода? Панелька… это от силы десяток-другой выдёргиваний, если надо больше это уже крайне неудобно.
Жалко, что можно выбрать только 1 устройство, потому как я бы выбрал половину указанных пунктов. И это реальное положение моих дел.
Очень хорошо, понимаю вас, коллега. Надеюсь в ближайшее время написать статью, посвящённую выбору микроконтроллера. Мне в последнее время тоже приходится часто мигрировать и диву даёшься к каким хитростям прибегают маркетологи, чтобы заставить нас вложить в проект более дорогой чип! В результате, когда выбираешь камень для серийной разработки, приходится просматривать нескольких производителей, очень внимательно вчитываться в даташиты на предмет наличия тех или иных функций ИМЕННО В ЭТОМ ЧИПЕ и выбирать между разными семействами Cortex. Иногда бывает дешевле перейти в более старшее семейство, потому что в младшем нужная тебе функция вроде бы и есть, но только в топовых дорогих чипах с большим количеством выводов…

Не возьмусь судить о том, насколько статья понятна человеку, далекому от эмбеда, поэтому лучше придерусь :)


Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.

Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже.

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


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

При отключенном отладочном интерфейсе и включенной защитой от чтения взлом становится достаточно затруднительным делом. По третьей ссылке описан вообще какой-то редкостно удачный случай :)
Согласен. 100% защиты не бывает: один человек сделал а второй сломает. Вопрос стоит в том, чтобы повысить трудоёмкость и стоимость взлома настолько, чтобы покупать оригинал стало заметно выгоднее для хотя-бы 80% потенциальных покупателей. Потому как тот, кто оплатит дорогой взлом вряд-ли будет сильно демпинговать, а пока этот взлом будет длиться рынок наш.
Потому как тот, кто оплатит дорогой взлом вряд-ли будет сильно демпинговать, а пока этот взлом будет длиться рынок наш.

Бывают варианты — зачастую сам процесс вывода на рынок изделия настолько затратен, что контрафакт имеет мало смысла. Исключение пожалуй составляют очень массовые изделия, которые клонируют китайцы, либо просто часть тиража продают налево.
Именно так. Защита должна быть такой, чтобы стоимость ее взлома приближалась к стоимости разработки аналогичной прошивки. Или к выгоде от получения при взломе каких-то данных типа паролей или ключей.
Если честно, я бы не принимал на веру всех статей с хакерских форумов. ещё лет 20, возможно 15 назад существовал бизнес «по взлому» микроконтроллеров. Сегодня я про это не слышал. Взломать можно всё что угодно, но в большинстве случаев в наши дни дешевле нанять программиста чтобы написать программу заново.
Что касается программных методов взлома — зачастую они становятся возможными по одной простой причине — программист не уделил достаточно много внимания защите кода, особенно это характерно для устройств с бутлоадерами. Можно пролезть в «дырку», изменить часть кода «внедрив» в программу «демона», который перехватит управление и сольёт содержание программы через один из внешних интерфейсов.
Однако это путь «настоящих джидаев». Даже «чёрные кассы» — кассовые аппараты с закладками для обнуления — создавали в своё время разработчики ПО для тех же касс с целью дополнительного заработка.
Бизнесы по взлому микроконтроллеров вполне себе существуют и сегодня. Не всегда написать программу дешевле. Иногда надо не взломать программу, а обеспечить совместимость контрафакта с «родными» изделиями. Разное бывает.
Возможно вы и правы, особенно если речь идёт о давно устаревших 8 битных моделях.
Вскрытие прошивки STM32F1 стоит в пределах пары тысяч евро. Вроде бы не давно устаревшие)
За три можно несложный проект заказать целиком. Смысл? Если только чтобы ключи своровать.
Ничего не знаю про смысл, не имею отношения к такого рода бизнесу. Знаю, что компании, предлагающие такого рода услуги существуют — видимо, это означает и наличие спроса сегодня, а не пятнадцать лет назад.
Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).

Недавно тут была статья, в которой советовалось неиспользуемые выводы переводить в режим аналоговых входов. Тогда внутренний триггер Шмитта отключается и не молотит от всех этих наводок.
Ну да, перед сном. В активном режиме эти дополнительные единицы микроампер большой роли не играют.
Корректная подготовка к глубокому сну и выход из него — вообще боольшая отдельная тема.
Сейчас работаю над программой для одного устройства на STM32L151 с автономным питанием, уделил довольно много внимания энергопотреблению. Правда, я кладу контроллер в спячку в режим STANDBY, когда и без моих усилий выводы оказываются «подвешенными», а периферия отключенной. Потребление в итоге получается около 65 мкА с внешней периферией — аппаратным контроллером питания, солнечной панели и заряда аккумулятора, цифровым барометром, SPI-флеш, счетчиком (PCF8583 в режиме подсчета импульсов) и OLED-экранчиком. Из них около 35 мкА жрет китайский экранчик и около 28 мкА жрет менеджер питания на «рассыпухе».
На мой взгляд — хороший результат, отлично поработали коллега. Я много работаю с беспроводными решениями в последнее время, BLE в основном кстати до последнего времени как раз STM32L151 юзали. Пришлось даже специально купить во такого монстра, для остеживания уровней энергопотребления в динамике
хороший результат, отлично поработали коллега

Спасибо, но тут основная заслуга у железа, а оно по большей части не мое :) Я в нем только несколько моментов исправил (типа отсутствия подтяжки на затворах ключей, включающих питание, делители и т.д.). Ну и по дисплею предложил добавить ключ на его питание, сейчас это решается.
Я много работаю с беспроводными решениями в последнее время, BLE в основном

У меня тоже в некотором смысле беспроводное решение — с использованием GSM-модема. Но с потреблением модема решается просто — ему рубится питание когда он не нужен :) У девайса задача просыпаться через заданные промежутки времени для сбора данных с кучки датчиков, а через более длительные промежутки времени просыпаться и отправлять собранные данные через модем. Если не получилось отправить — сохранить и передать в следующем сеансе связи вместе с новыми данными, терять накопленные данные недопустимо.
до последнего времени как раз STM32L151 юзали

А на что перешли и по каким причинам?
купить во такого монстра

Помню статью о нем :) Если не секрет — сколько такая штука стоит? :)
Называется NRF6707, как ни странно брал на алиэкспрессе где то в районе 110 долларов, поскольку на маусере в Россию поставлять не захотели, не знаю уж как сейчас с этим. А китайцы прислали без проблем.
от STM32L151 отказываться не собираемся, но в последнем проекте потребовался аппаратный интерфейс к SD карте, SPI медленно работает и не со всеми картами. А иногда наоборот что-то надо бывает попроще и подешевле — был эксперимент с STM32L031
SPI медленно работает и не со всеми картами.

А можно вот тут поподробнее? С какими не заработало?
Сорри, данная информация со слов, чьих не помню, но читал в форумах неоднократно, я лично только через специальный интерфейс запускал, который квадро SPI. Несколько карт пробовал от 4 до 16 гиг — работало нормально.
Насчёт карт не могу сказать, но по скорости передачи SPI допускает тактирование до 20 МГц, I2С около 1.5 МГц, кроме того необходимо обслуживать протокол, которого у SPI просто нет, так как невозможны коллизии.
А разве карты работают по I2C протоколу? Помоему ни одной такой не видел. Отдельные EEPROM бывают, но там не ставится требование максимальной скорости.
Обычно карточки вроде SD/TF или MMC работают по упрощённому SPI интерфейсу или 4*SPI с тактовой частотой до 45Мгц.
Для режима single-SPI скорость тактовая ограничена, поэтому кроме того что карта работает всего лишь в один поток из 4-х так ещё и медленней в итоге реальная скорость обмена не больше 1-2мб/сек.
Не представляю как такие карты обеспечивают режим работы класса U3? 30Мбайт/сек на запись гарантированно, скорость интерфейса должна быть минимум 60Мгц на 4 канала, или там >30Мгц но защёлка срабатывает и по фронту и спаду тактового сигнала? или многофазный тактовый сигнал? Дальше только SATA интерфейс встраивать прямо в карту или USB3.1 но это новый виток войн интерфейсов…
SD-карты работают по своему протоколу, который конечно похож на SPI но ни разу не SPI. SPI поддерживается по стандарту, если карте послать спецкоманду в начале инициализации. При этом в режиме SPI нет проверки CRC на переданные данные ну и скорость ниже. Ещё есть особенность, что вообще любое начало работы с SD-картой должно происходить на очень низкой частоте (что-то вроде 500кгц), и только после начальной инициализации можно поднимать.

Собственно и мой вопрос насчёт 'какие-то карты не работают с SPI' был вызван именно этим — может, из-за того, что не подали низкую частоту вначале инициализации. Ну а может, у китайцев появились 'чюдесные' нестандартные карты, которые «SPI-illiterate» :)
У меня был случай, когда использовали внешний генератор тактовой частоты вместо резонатора ради малого джиттера. Естественно, в глубокой спячке этот генератор «генерировал» почти 60% тока.
Вообще-то я серьезно. Переводим контроллер на внутренний генератор, отключаем питание внешнему, засыпаем. Проснулись (на внутреннем генераторе), включили питание внешнего генератора, дождались его стабилизации, переключились на него.
Хотя если микроконтроллер не умеет управлять своими клоками, тогда шутка, да :)
У меня был случай, когда мне принесли простой электросчётчик на основе простенького MSP, который не проходил тест на ЭМС. После долгих разбирательств и оптимизации трассировки удалось выяснить что дело было в висящей в воздухе ножке. Высоковольтный импульс приводил к сбросу устройства, причём только тогда, когда оно находилось в режиме низкого энергопотребления. Замкнул вывод на корпус и «вылечил».
Как-то не согласен, что среди Cortex-M7 лидирует не STM. А как же замечательнейший stm32h750 ?? И это чудо на 400 МГц и, конечно, с непревзойденным фаршем от STM (в том числе с HRTIM!) всего за $2.5! Ну просто сказочно дешево… Причем 1024 RAM! Как говорится, ну что еще-то надо? Кстати, и jpeg-кодек есть и… да что я пишу, читайте даташит.
Не знал про этот вариант, надо будет присмотреться.
Возможно причина моих пробелов в этом:

весьма характерная строчка сегодня для региона России, но редкая для Евросоза, где я сейчас нахожусь
STMH7 есть в двух вариантах. Подороже — 1 мег ОЗУ, 2 мега flash. Сильно подешевле — 1 мег ОЗУ, 128К flash. Основное достоинство H7 (и F7) даже не ОЗУ, а аппаратный FPU двойной точности. У нас GNSS (GPS), расчет больших матриц. И аппаратный FPU двойной точности для нас — обязательная вещь.

Я бы сказал, что F7/H7 — это такой особый класс SoC — замена Linux-систем. То есть Вместо 3х чипов для linux — ставим один для FreeRTOS. Мы, лично, получили большой кайф при избавлении от linux.

Поэтому мой совет — если у вас linux, но сама задача в H7 влезает — подумайте, нужен ли вам этот огромный монстр?
И аппаратный FPU двойной точности для нас — обязательная вещь.

А работа с двумя флоатами на одно число вот как-то так не спасала?
Мы пробовали на STM32F4 (правда не по этой статье) — скорость практически такая же, как при эмуляции. Понятно, что это зависит от отношения скоростей FPU и CPU.
А по какой статье? Если брать тот метод, что по моей ссылке, вроде как там сложение и умножение раз в 5 дольше всего лишь получаются, чем с single precision.
А какая разница? Метод не даст выигрыша в разы, всего лишь десяток процентов. Итоговый вывод — при одинаковой тактовой 32битный FPU не быстрее CPU для обработки double. Ниже уже привели ссылку с ровно тем же выводом. Иными словами — если вам нужно ускорение в разы, то 32битный FPU вам не поможет.

Откопал в почте наши измерения
С оптимизацией "-Os":
— Cholesky using float pair
Cnt=10000 Neg=0 SumTime=10.9s AveTime=1.0ms

Cholesky using double
Cnt=10000 Neg=0 SumTime=6.5s AveTime=657.5mks

Gauss_TT using float
Cnt=10000 Neg=0 SumTime=34.2s AveTime=3.4ms

Gauss_TT using double
Cnt=10000 Neg=0 SumTime=19.8s AveTime=1.9ms
max err Cholesky = 0.000000077
max err Gauss_TT = 0.000000000
— С оптимизацией "-O3":
— Cholesky using float pair
Cnt=10000 Neg=0 SumTime=6.2s AveTime=629.1mks

Cholesky using double
Cnt=10000 Neg=0 SumTime=6.5s AveTime=656.5mks

Gauss_TT using float
Cnt=10000 Neg=0 SumTime=19.5s AveTime=1.9ms

Gauss_TT using double
Cnt=10000 Neg=0 SumTime=19.5s AveTime=1.9ms
max err Cholesky = 0.000000077
max err Gauss_TT = 0.000000000


float- арифметика через float pair на 32битном FPU, double — soft FPU. Видно, что обращение матрицы все равно занимает 1.9мс, то есть больше 500 обращений в секунду не сделать.

Кстати и 64битный FPU дает ускорение где-то на полпорядка (в 3-6 раз, если не путаю). Матрицы довольно большие, при обращении все в кэш не лезет.

Ну и чтобы два раза не вставать. Расчет sqrt полиномом обычно настолько эффективен, что может даже обгонять FPU. Помню как 35 лет назад мы очень этому факту удивлялись. Проверьте на любом доступном вам проце — думаю, что тоже удивитесь.
Какие-то странные тесты, не приведён код (в т.ч. дизасм того, что нагенерил компилятор). Иногда кажется, что тупо неправильно настроен компилятор или либы — например sqrt похоже что шёл в эмулирующую библиотеку, вместо использования команды процессора. Что, впрочем, неудивительно, если для корня использовалась sqrt(), которая берёт и выдаёт даблы, в то время как для single->single надо использовать sqrtf()

Ну и ещё совершенно ясно, что на m4f даблы будут эмулироваться, смысл их тестировать? Double-word arithmetic даёт максимальную точность, равную кол-ву бит мантиссы в двух флоатах, т.е. 23*2=46 бит, в то время как точность даблов — 53 бита, откуда следует, что эмулировать даблы при помощи double-word arithmetic нельзя.
Отмотайте пару выпусков назад, там условия теста вроде были. Я правда особо не вчитывался, в текущих моих проектах нет ни одного стма с FPU.
У нас задачи проще, но требуют быстрого реагирования часто, максимум RTOS применяем
esp8266 имеет 80 кил оперативы, 160 мегагерц и прекрасно справляется с mp3 jpg и имеет вайфай на борту а стоит доллар в рознице на плате с антеннкой и флешкой на 4 мегабайта для кода. Почему вы её забыли а этого монстра нет? для иота esp более чем достаточная вешь… правда если бы было на неё полное описание и открытый SDK… ну и gpio мало но впринципе для многих задач решается внешним расширителем.
Я же плотно засел на атмеги. Да они сейчас на китае в основном контрафакт но имея арсенал из 15 устройств в разработку которых потрачено много времени сил и денег — переход на армы пока не планируется даже просто потому что под арм уже двусторонняя плата нужна а это стоимость и проблема в том что и атмеги 328 нам хватает не то что за глаза — а просто выше крыши.
правда если бы было на неё полное описание и открытый SDK

Вот поэтому, наверное, его и не все любят :)
правда если бы было на неё полное описание и открытый SDK… ну и gpio мало

То-то и оно :)
под арм уже двусторонняя плата нужна

Не совсем понял — как это внутренняя архитектура микроконтроллера влияет на количество слоев платы? :)
атмеги 328 нам хватает не то что за глаза — а просто выше крыши

Только стоит она как очень неплохой такой ARM, особенно в DIP-корпусе :)
мега в qfn у нас разведена в один слой, покупали партией в 1000 штук(для когото слезы а нам огопартия :) и тогда она вышла в районе 0.9 долара за штуку. армы на такой ценник только большими партиями, у популярных из них много ног и питания расположены так вырвиглазно что в один слой развести очень сложно.
тогда она вышла в районе 0.9 долара за штуку. армы на такой ценник только большими партиями, у популярных из них много ног

STM32F030C8T6 — 0.73$ за штуку в партии от 750 штук (в Компэле), 64/8 кб флэш/оперативка, LQFP-48 :)
STM32F030K6T6TR — 0.48$ за штуку в партии от 960 штук (в Компэле), 32/4 кб флэш/оперативка, LQFP-32 :)
Если честно я не понимаю зачем упираться в однослойку? Неужели при партиях в 1000 штук вы применяете утюжную технологию? Закажите двухслойки в Китае, на такой партии разницы с однослойками вы практически не почувствуете, но мучаться не придётся. Мы применяем ЛУТ только когда надо очень быстро проверить какую нибудь спорную мысль на концепте. На двухслойных платах хотя бы землю с питанием можно нормально развести. На однослойках сильно упираться надо, особенно в случае если используете цифро-аналоговые цепи.
жоская конкуренция — очень нишевое решение. Лишний кварц с кондерами не могу позволить — калибрую частоту атмеги по внешнему сигналу каждый раз при включении :) двуслойка выходит реально дороже т.к. ни маски ни шелкографии на эту плату не применяем — пытаемся конкурировать по цене с китаем.
0,9 это с доставкой — нас устраивает. Переход на принципиально другой камень на 3.3 вольта это сложно технически и программно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь. Дада в 2019 году есть устройства которые не понимают 3.3/3.6 на входе на частоте 100 герц всего :) опять же цена.
Конечно же когда встанет вопрос разработки нового устройства следующего в серии мы попытаемся прикинуть и впихнуть в арм какойто но это очень сложно на текущий момент не смотря на то что атмеги не производятся официально — атмель умер
Переход на принципиально другой камень на 3.3 вольта это сложно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь.

Если это однонаправленные линии, то преобразователь — это транзистор с парой резисторов — это меньше одного рубля :)
Решение хорошее, но не для оптимизации энергопотребления. Правда, делитель мне попадался в плате, на примере которой человек хвастался сроком жизни на батарейке.
Большинство микроконтроллеров ARM от ST толерантны к 5 вольтовому напряжения при питании от 3.3 вольт. Тоесть на вход можно соединять напрямую, на выход тоже, но если 5 вольтовому входу в вашем устройстве 3,3 вольта на входе недостаточно, можете выход ST в виде открытого коллектора сконфигурировать и к 5 вольтам подтянуть. И да, забыл написать для совсем экономных есть ещё клон ST, вроде вполне официальный
можете посмотреть вот здесь
По моим оценкам они стоят где то в два раза дешевле чем аналогичные производства STM, но простейших Cortex-M0 они не производят, только старенькие копируют.
Если важно низкое энергопотребление то не подойдут.
А вот эти гигадевайсы это полный клон? В смысле инструментарий разработки и прошивки ровно тот же, что и у STM32?
Я натолкнулся на них совсем недавно, искал дешёвые микроконтроллеры для проекта «умной розетки». После месяца переговоров менее чем за сутки до момента заключения договора заказчик выставил невыполнимые условия и получил нахаляву ТЗ растворился. Весьма частая история.
В результате девайсы я так и не опробовал в действии. На сайте написано что они аналоги за исключением совсем мелких деталей в конфигурации. Я так понял все отладочные средства должны действовать, но не проверял.
Ясно. Я тоже на днях буквально их впервые увидел, глянул даташит, понял, что не для батареек и пока забыл.
Да, видно у них старая технология производства, чипы с пониженным энергопотреблением ещё не освоили
Andy_Big, лишний транзистор это лишняя номенклатура на складе, это лишние точки пайки, это лишняя точка отказа, это собственно деньги на этот элемент, логистика его доставки. Оно то вроде как и мелочь но мы не в россии находимся — есть некоторые проблемы с некоторыми поставщиками, ещё нет доступа к автоматической сборке — малые обьемы а потому паяем руками оттуда стоимость точки пайки. Кроме того наше производство ещё и сезонностью обладает и в зимний период обьемы сильно сокращаются а к весне наоборот бум происходит спроса и соответственно производства. Типичный обьем — 600 штук в год одной модели. Всего в производстве 5 моделей. потому между ними максимлаьная унификация. собственно да — платка очень маленькая и потому даже на маске экономим — для ручной запайки это не проблема а потом плата всеравно покрывается лаком.

progchip666, Опять же мы не из России и потому есть проблемы определенные с логистикой.
Брак попадался и попадается… у нас есть уарт 38400 с другим кварцованным устройством. раньше никогда проблем небыло в том что атмега работает на внутреннем генератора. тест 0..+50 оно выдерживало. С конца прошлого года пошли приколы — партия с заниженной частотой, купили ещё партию — пришли все с завышенной частотой — сделал на этапе прошивки калибровку — проблема ушла… третья партия этого года мало того что в перемешку завышенные и заниженные так ещё и уход на полтора мегагерца(с 8ми) уже при +5 на корпусе вместо +25 а на +40 вообще мегагерц в плюс… тоесть дажде уарт уже ломался. Пришлось сделать онлайн-калибровку частоты по вот этому уарту — меряю програмно длину стартбита и подгоняю частоту OSCCAL под соответствие измеренной длины стартбита реальному значению. Костыль да но в общем-то и изящное решение — ноль внешних компонентов, ноль нагрузки на проц(раз в секунду промер 10 мсек в моменты простоя) и обьем кода мизерный. и никаких апаратных модулей дополнительно не используется — меряю уартом же на скорость 921600 без стартбита — тупо смотрю сколько бит в нуле до первого в единице — точности более чем хватает. опыты показывают что прекрасно теперь работает и при -20 и при +120 — никаких рассинхронов.
Ещё были приколы с собственно кварцевым генератором на другом устройстве — кварцы не стартовали ни в какую ни с обычными кварцами ни с гарантированно рабочими. решили эти процы пустить на другие платы без кварца.
Сложный у вас бизнес.
Не хочется пытаться вас учить, но может всё таки попробовать разорвать шаблоны. Мой опыт показывает что сам этот процесс бывает крайне болезненным, но в конечном случае перемены выводят тебя на более высокий уровень.
Конечно трудно тут что-то советовать, но у меня цифры вызывают сомнения. При общих объёмах 5 тысяч штук в год и такой маленькой прибыли что 5 центов на изделие играют роль не совсем понятно зачем подобным бизнесом, который сопровождается такими проблемами заниматься. Возможно всё таки стоит сделать более технологичное изделие, пайку отдать на автоматы, немного пожертвовать прибылью, освободив часть своего времени и использовать это время на запуск новых моделей.
Удачи в вашем деле!
Если они годами обходятся всего 5-ю моделями, на новые вероятно нет спроса. Скорей освободившееся время тратить уже на совсем другой продукт — выпечку булочек например.
А более технологичное изделие может потребовать оборудования которое окупится при таких объёмах лет через 100.
Супер жесть…
Но ведь если уартом подстраиваться под стартовый бит, первая порция данных уйдёт в мусор… после этого ждать следующего кадра по метке.
по другому сделал — впереди пакета посылается одиночный импульс, по нему делается калибровка, а потом уже идёт информационный сигнал.
в уарт шлется каждую секунду 4 посылки и потерять одну раз в 30 секунд при старте — не критично вообще. посылки шлет не наше устройство так что заставить его слать чтото другое — не вариант.

progchip666 эти платы это маленькая часть огромного обьема работ что мы делаем помимо собственно плат. На производстве пластика мы отыгрываемся но постоянно нужно менять формы этого пластика совершенствоваться и так далее при этом плата — не меняется ни физически ни програмно. Вот на эти эксперименты + содержание кружка юнного техника авиа и судомоделирования на бесплатных началах — вынуждает ужиматься с расходами по максимуму + по прибыли ну года два назад это был очень прибыльный бизнес, потом про это пронюхал китай и сейчас у нас каждые пару месяцев происходит прикол что наш прошлый кораблик уже выпускается китайцами и нам собственно надо уже чтото новее лучше бустрее делать. платы не меняются — есть 5 «категорий» если так можно сказать с разными платами и программами. а внутри категорий собственно очень много разных вариантов корабликов. Иногда выходит что новая модель пол года держится до подделок иногда и месяца не проходит а уже надо новые пресформы :)
лишний транзистор это лишняя номенклатура на складе, это лишние точки пайки, это лишняя точка отказа, это собственно деньги на этот элемент, логистика его доставки

Я, конечно, не знаю Ваших условий, но чтобы на складе у компании, занимающейся разработкой и производством электронных устройств, не было самых ширпотребных копеечных транзисторов — как-то с трудом укладывается в голове. Я же не экзотику предлагаю ставить, которую еще поискать и доставить надо :) Про лишнюю точку отказа, если честно, вообще улыбнуло после того как прочел какого качества микроконтроллеры Вы ставите в серийные устройства. Вы не обижайтесь, я без наездов это, просто у меня действительно в голове не укладывается как можно на таких комплектующих делать коммерческую продукцию. Вот уж где не точка отказа, а жирное пятно, на фоне которого обычный транзистор даже в микроскоп не увидеть :)
они не бракованные :) просто с особенностями, проходят жесткие испытания в обязательном порядке
У нас это плавающая штука… там вода конденсат и прочее внутри гермокорпуса — милое дело. но по причине отказа проца ещё ни одной платы за 6 лет работы не вернулось ;) при производстве проблемы да… бывало но… то что ушло наружу обычно возвращается после утопления или наезда на него машины. хотя нет… был один кадр — он катал устройство в багажнике велика без амортизаторов и там тупо все выводные компоненты и штыревые соединения поотламывало(не поотсоединялись а именно поломало штыри у основания платы) так что нет — проблем с процами не бывает а вот с лишними точками пайки которые окисляются — бывает ещё и как.
С одной стороны понятно, но мне кажется конкурировать с китайцами вообще не самый правильный бизнес. В общем если он налажен, то ваша стратегия понятно, вопрос стоит скорее о новых разработках.
Но если идёт речь об экономии в несколько центов на плату… Шелкографией ясное дело можно пожертвовать. Маской — тут большой вопрос. Если ваши платы малы по размеру, а судя по косвенным признаком это так, то за счёт такой экономии выиграете вы меньше чем 5 центов за плату.
Кстати, покупая у китайцев неофициально произведённые микроконтроллеры на брак не нарывались? Если нарывались, компенсацию удавалось вырвать?
Ещё хочу заметить, если у вас постоянная потребность в одних и тех же чипах, в размере нескольких тысяч в год хотя бы, то можете обратиться к российским дистрибьюторам, реально защитить проект, сэкономить на этом 10 — 30 процентов, да ещё и товарный кредит получить!
В прошлой жизни я работал пару лет Бренд Менеджером, знаю эту кухню не по наслышке. Так что переход на простейшие АРМы в новых изделиях может даже снизить издержки. ПО у вас не сложное как я понял, модификация вряд ли отнимет много сил и времени.
ATSAMC — можно питать от 5 Вольт, ядро — Cortex-M0+. Плюс крайне разумное распределение пинов в корпусе 5 на 5 мм. Из 32 пинов 22 можно использовать как GPIO даже при подключении кварца и отладки. Сами поставили по именно этой причине из-за экономии места на плате, сунуть преобразователи уровней было реально некуда, а вот CAN был нужен позарез, так что хотя бы уже по этой причине все Меги пролетают.
Я сейчас к ней присматриваюсь, но тут согласен полностью с мнением mpa4b. Вроде бы документации на неё много, но как то всё не слишком прозрачно выглядит, нужно подстраиваться под их экосистему…
Вычислительная мощность большая, но выводов на корпусе и периферии маловато. Всё сильно заточено под программирование на скриптах.
В общем очень непривычная хотя и крайне любопытная штука.
Камушек довольно противоречивый, хоть и тактовая частота у него 160Мгц реально добиться этого быстродействия невозможно в виду того что из разных сегментов памяти команды выбираются разное время, и толку от 160Мгц если ядро вынуждено ждать 10 тактов для выборки из медленной памяти? А быстрой памяти там кот наплакал и обычно она сильно занята. Можно многое, но с неочевидными ограничениями и приходится тасовать что где лучше всего держать или даже подгружать код по мере необходимости в SRAM.
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?

USB научился работать в режиме HOST

Да что вы говорите? usb host появился ещё в f105 и f205.

Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции

в два раза увеличилась максимальная тактовая частота
с 2 до 1.7 вольт понизилось минимальное напряжение питания
АЦП способно работать в два с половиной раза быстрее



И какая связь между набором периферии (о котором как раз речь) и применённым в контроллере ядром процессора?

По факту, очень похоже по стилю изложения на маркетолуха.
Да что вы говорите? usb host появился ещё в f105 и f205.

Не буду спорить, но я сравнивал конкретные модели, ОТG появился в тех же LPC вообще в незапамятные времена.
И какая связь между набором периферии (о котором как раз речь) и применённым в контроллере ядром процессора?

Вот тут как раз очень большая связь. Расширенную периферию в маркетинговых целях производители очень любят ставить в серии с высокопроизводительными ядрами, чтобы стимулировать их покупку, а не потому? что с ней скажем? тот же Cortex M0 не может справиться.
В этом отношении очень большой плюс, что появились малопотребляющие серии с богатой периферией. По крайней мере для меня, поскольку часто приходится делать проекты с автономным питанием.
Вот я это и пытаюсь сказать — что именно маркетолухи любят такие трюки и такой стиль изложения. А на самом деле никакой связи между 'кр00тым' ядром и богатой периферией нет, кроме искусственно заложенной маркетолухами при почёсывании в затылке 'а давайте новую серию замутим!'. Ну и к тому же проц M0+ не то чтобы прям уж сильно отличается от M0 без плюса.
Ну вот в этом году ST выпустит STM32L5 серию со многими вкусняшками для защиты IP и anti-tamper фичами
Нельзя объять необъятное, особенно в одной статье, она и так чересчур длинная получилась. Будем изучать… В принципе уровни защиты даже десяток лет назад разработанным микроконтроллеров меня более чем устраивает. А вот появление плеяды АРМов со сверхнизким потреблением очень радует. Пока только до L4 успели ручки дотянуться…
Такого количество заблуждений и откровенной дезинформации, как в этой статье, я никогда еще не встречал. Это же надо уметь — с настолько уверенным в себе видом распространять ошибочную информацию и более того, писать про это статью на сайте с довольно продвинутой аудиторией.
1. Переходы от семейства к семейству мотивируются вещами, которых в природе нет, причем даже для очень полюбившихся автору STM32. Внимательнее нужно читать даташиты. Ну и о других производителях не забывать, а то смешно было местами.
2. В описании периферии полно неточностей.
3. Выводы о сравнении потребления 8-битников и 32-битников крайне спорные. Да, когда куча вычислений в int32 или с плавающей точкой, то да, есть смысл, когда же идет работа с периферией или просто дрыганье ногами, то эффективность ARM гораздо ниже заявленной, так что ни о каком преимуществе речи нет.
И да, я работал и работаю как с 8-битниками, так и с АРМами, причем не от одного-двух производителей.
Переходы от семейства к семейству мотивируются вещами, которых в природе нет

1. Да, этот момент слишком обобщен и размыт, но не так категорично.
2. Вижу только неточности, привнесенные в угоду краткости статьи и ее доходчивости для тех, кто не знаком с микроконтроллерами.
3. Даже в работе с периферией ARM способен быть гораздо эффективнее большинства 8-битников за счет наличия DMA. Плюс умение управлять своей тактовой частотой во многих случаях очень хорошо помогает сэкономить энергию. Так что тоже не все однозначно и уж точно нельзя безапелляционно утверждать про «заблуждений и откровенной дезинформации».
DMA не для всех возможных режимов работы периферии доступна, а уж в плане работы с битами ARM всегда проигрывает мелким контроллерам. Я не говорю, что это плохо, это особенность архитектуры, она есть, и ее нужно учитывать, а не пытаться все упаковать в красивые графики.
DMA не для всех возможных режимов работы периферии доступна

Да я и не говорил про все режимы. Даже более того — не для всех случаев он даст преимущество в скорости. Но «в среднем по больнице» наличие DMA все же способно значительно сократить время активности микроконтроллера.
а уж в плане работы с битами ARM всегда проигрывает мелким контроллерам

Можно конкретный пример? А то у ARM, например, есть даже команда BFI среди битовых операций, остальные битовые операции как-то вроде не сильно беднее, чем у тех же AVR.
Можно конкретный пример? А то у ARM, например, есть даже команда BFI среди битовых операций, остальные битовые операции как-то вроде не сильно беднее, чем у тех же AVR.

И у Cortex-M0 тоже есть?
А теперь сравните их по мощности с командами SBI/SBIC/SBIS из набора команд AVR. Там для операций с периферией мне не нужно ее читать, изменять и записывать, причем команды чтения и записи в ARM (LDR/STR), насколько я помню, не читают по адресу, нужно еще загрузить его сначала.
Я не к тому, что AVR рвет ARM в клочья, упаси боже, просто это две разные архитектуры, и для достаточно большого класса приложений AVR может работать даже быстрее, особенно если речь идет о Cortex-M0 с невысокой тактовой частотой, которая еще и не используется полностью по причине медленно работающей флэши. Вот я сейчас ковыряю nRF51822 и понимаю, что он со своими 16 МГц работает медленнее даже банальной Mega128, потому как DMA де-факто почти и нет, а каждая операция с периферией требует гораздо больше телодвижений. Каждой задаче свой инструмент, а автор как-то очень свободно подменяет факты своими домыслами.
И у Cortex-M0 тоже есть?

Нету, но Вы ведь без всяких оговорок объединили все ядра под одной аббревиатурой — «в плане работы с битами ARM всегда проигрывает мелким контроллерам» :)
Каждой задаче свой инструмент, а автор как-то очень свободно подменяет факты своими домыслами.

Ну, Вы-то со своими категоричными утверждениями еще более свободно подменяете понятие «в некоторых случаях» на «всегда» :)
Да что Вы уперлись в эти битовые операции над выводами? Ручная работа с выводами — вообще достаточно редкая операция на фоне всего остального. Если, конечно, не эмулировать программно какой-то аппаратный интерфейс из-за убогости аппаратных возможностей 8-битника :)
Резюме:
* битовые операции есть, но не у всех кортексов и только для регистров общего назначения
* DMA помогает не всегда и есть не у всех
* богатство периферии с одной стороны приводит к большему оверхеду с настройками
Вопрос:
Мы точно о преимуществах в работе с низким потреблением говорим?
Другое резюме:
* бедность периферии заставляет дергать I/O, руками, хотя битовые операции с I/O чуть-чуть помогают
* DMA не помогает нигде и никогда
* отсутствие необходимости настройки периферии экономит сотню тактов, но передача пары-тройки байт по софтовому SPI съедает напрочь эту экономию
* необходимость провести какие-то вычисления с числами больше байта (например, произвести расчет реального атмосферного давления из полученных от датчика BMP180 данных) приводит к большому оверхеду
У AVR нет хардварного SPI? Вот это сюрприз!
Кстати, а Вы в курсе, что даже у 8-битников бывает DMA? Вот у того же CC2540 с 8051 ядром есть для передачи по SPI. А у nRF51822 с ядром Cortex-M0, сюрприз-сюрприз, нету! Как с этим быть?
У AVR нет хардварного SPI?

У AVR нет двух хардварных SPI, как и нет назначения разных выводов для него. Но можно взять для примера более жизненный случай — ШИМ. Аппаратные возможности вывода ШИМ сильно ограничены в 8-битниках ввиду ограниченности числа таймеров.
Кстати, а Вы в курсе, что даже у 8-битников бывает DMA?

В курсе. Так же в курсе, что бывают 8-битники с сотнями МГц тактовой.
Как с этим быть?

А как быть с тем, что у CC2540 нет команд SBI/SBIC/SBIS? И как это увязать с Вашим утверждением «в плане работы с битами ARM всегда проигрывает мелким контроллерам»?
Будто Вы никогда не использовали счётчик переполнения счётчика переполнений таймера :)
Это да, я так с input capture баловался, а начало ветки невнимательно прочёл.
У AVR нет двух хардварных SPI

Зато иногда в режиме SPI может работать UART (или как он там уже начинает называться).
На мелких камнях у них везде USI, который конфигурируется как spi/twi/uart и тд.
Так это собственно всё один и тот же модуль. Два и больше USART модулей встречаются только в старших моделях контроллеров.
Согласен со всем, кроме одного, бывают таки случаи, когда DMA полезно, ну во всяком случае в ARMaх
Вообще, я это резюме писал на 8-битники, у которых DMA попросту нет :)
А при его наличии — да, DMA очень часто дает большой выигрыш.
Сравните bit banding, который есть в M3 (и наверное M4, не уверен), доступен для большей части периферии и ПАМЯТИ, и периферию в АВРках, вылезшую за предел диапазона SBI/CBI/SBIC/SBIS (всего 32 байта тот диапазон).
Если в авр вылезет на пределы тех 32 байтов — то будет read-modify-write, никуда не деться.

bitbanding сам по себе в gcc не поддерживается, но можно написать простейшую функцию c __attribute__((always_inline)) и тогда всё хорошо. Номера битов в инклудах есть, покрмере для stm32
Спасибо за статью, всё буквально на пальцах, в качестве мотивационной отлична.
Лично меня в разработке электроники больше всего смутило и удивило, что корпус и/или продажная упаковка часто стоят дороже самой электронной компоненты.
Спасибо.
Лично меня в разработке электроники больше всего смутило и удивило, что корпус и/или продажная упаковка часто стоят дороже самой электронной компоненты.

Это наверно потому, что вы ещё не интересовались сколько стоит молд, или другими словами прессформа, для изготовления кастомного корпуса. Вот это действительно адские деньги! Уложиться в 10K гринов — большая удача!
Интересовался, правда, уже после первой собственной метеостанции :)
Молд — это всё-таки крупная серия, если единицы-десятки штука корпуса ещё дороже, хотя серия суммарно и дешевле. С большим удовольствием читаю, как уродуются пытаются сэкономить на изготовлении ребята из проекта по автономному сборщику мячей для гольфа, используя разные технологии. Да и статьи Milfgard про производство тоже оказались полезными, теперь я знаю, сколько может стоить правильная картонная коробка…
Лично я бы при не слишком больших сериях присмотрелся бы к плоскостным технологиям. Корпус из нескольких вырезанных из оргстекла слоёв. Ребята делают ещё и из цветных, весьма симпатично получается. Само стекло и его резка лазером в России очень дёшево обходится.
Так тоже удобно, а если не клеить, а гнуть, то ещё красиво и оригинально. Особенно удобно, если девайс получается большим, больше коробки для обуви. Но ещё больше мне нравится фанера вместо оргстекла, по деньгам и горючести примерно так же, зато попрочнее, получше со статикой и ультрафиолета не боится (мне важно), а чтобы можно было мыть — оклеить тонировочной плёнкой или полиэтиленовую феном наварить.
Путь настоящих джидаев! По белому завидую. Давно тянет меня ПЛИС, но так пока и не сделал на них ни одного проекта.
А как компилируете, отлаживаетесь? gcc, openocd или проприетарный vendor lock?
Всё в комплекте от производителя. Но там Eclipse-based система для софта. Так что всё вполне стандартно.
Не подскажете, где поискать DC-DC преобразователи с внутренним потреблением в единицы-десятки микроампер? Это реальная проблема — потребление МК понятно, как уменьшать, а вот найти понижайку пока получилось только с собственными запросами на 160мкА. Нужно получить 3.2В от входных 3.6...6В.
Тут надо считать энергопотребление во включенном состоянии. Если ваш прибор подавляющее время спит, а работает совсем короткий по времени участок, то выгоднее может быть заменить на LDO с потреблением в 3 микроампера и не парится и это получится выгоднее. В одном из своих устройств я так и сделал, тут выбор большой мне очень нравятся такие
Из импульсников вот такие использовал
TPS6205x 800-mA Synchronous Step-Down Converter
12-µA Quiescent Current (Typical)
А что-то вроде TPS62745 чем вас не устраивает? У него собственный ток меньше 1 мкА при максимальном выходном токе в 300 мА.
И про LDO выше дело написано.
Уникальный серийный номер Каждый микроконтроллер имеет свой уникальный серийный номер, присвоенный ему на производстве. Очень удобная особенность, которую можно использовать при организации серийного производства ваших изделий.

Пришлось лезть в гугл… Ну нет не Атмегах серийника, только в версиях с USB он бывает.
А когда это атмега успела попасть в категорию «простейшего ARM микроконтроллера за пол бакса… одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03»? :)
Его можно самому генерировать из Wafer_ID и прочих параметров. Хотя, возможно, они только в иксмегах
Я про меги ничего не писал. Последний проект на AVR сделал боле 10 лет назад. Это касалось ARM от ST
Этот график какой-то менеджер по продажам рисовал?
график энергопотребления
image

Именно так и если покопаться то можно найти условия при которых эти показания сняты. В реальном приложении подобные цифры труднодостижимы, но если потребление вашего устройства отличается от них в разы, то вместо того, чтобы со знанием дела рассуждать о конях следует проверить схемотехнику и программный код своего проекта — это красной нитью было отмечено в моей статье. Легче всего вешать собак на производителей, но если их обещания слишком сильно расходятся с полученными вами результатами, то чаще виноваты совсем не они.
я про соотношение длин столбцов гистограммы со значениями, указанными на них
Аналогичный пример из церкви макаронного монстра
image
UFO landed and left these words here
Спасибо за лестный отзыв.
bt-приёмник — имеется виду Bluetooth или что то другое?
UFO landed and left these words here
В данном случае возможно будет лучше линейный стабилизатор применить, самому на макетке спаять, но это зависит от того каким напряжением собираетесь запитывать. Надеюсь магнитола не настолько древняя что ламповая? Если транзисторная, то там найдёте напряжения питания от 6 до 12 вольт. BLE модули потребляют обычно не более 50 мА и для них вполне подойдёт линейный стабилизатор с подходящим выходным напряжением. Какой именно — надо выбирать исходя от величины напряжения, которое вы возьмёте из магнитолы для питания.
UFO landed and left these words here
Должно и лишних 20 — 50 мА не должно быть проблемой для штатного источника питания.
Не парьтесь. Импульсник туда подходит, если с блютуз-модуля брать сигнал сразу с диф.выхода, а преобразовывать в обычный непосредственно возле магнитолы и со своим стабильным питанием. Но если взять в китае сразу модуль+платку-основу то там всё это уже сделано и универсальное питание организовано. Обычно там используют HX-MINI-360 преобразователь.
BLE модуль может кратковременно в режиме коннекта взять 300мА да и те же 50мА уже достаточно много чтобы применять злой(вроде LM7805) линейный стабилизатор уже с радиатором, стабилизаторы в корпусе TO92 или меньше хоть и могут обеспечить требуемый ток но они не пройдут по тепловому режиму — греться будут как черти. При этом не надо забывать о том что для автомобильной бортсети в требованиях к потребителям прописано выдерживать кратковременные всплески до 200В, а линейный стабилизатор обычно до 30В входного и не больше, нужна защита на входе + ВЧ фильтр не будет лишним. Многие почему-то об этом забывают.
Тут поможет только практика. Считать в уме? ну да, легко… там формул-то с две всего. Надо только учителя или наставника толкового чтобы объяснил работу транзистора сотней разных способов, на одном из них у вас и «щёлкнет». Ну и естественно развивать абстрактное мышление и математические способности. Если за каждым расчетом лезть к калькулятору… дела не будет. Там собственно и точных расчетов не нужно, их потом может сделать калькулятор при необходимости. Вот кстати это ещё одна из вещей которая является препятствием для начинающих. Очень редко где нужны точные расчёты — детали имеют допуски на погрешность, транзисторы плывут от температуры и т.д. в схеме в таких случаях всегда будет предусмотрена возможность подстройки, автоматической калибровки или схемотехническое решение компенсирующее дестабилизирующие факторы.
У блютуз-приемника выходы обычно дифференциальные, помехи питания для них побоку если около магнитолы с её стабильным питанием(или организованным отдельно) будет правильная схема преобразования диф.сигнала в single-ended(как оно правильно переводится?) или в магнитоле изначально предусмотрен дифференциальный вход — его задействовать без каких-либо проблем.
UFO landed and left these words here
Изнутри будет сложнее сигналу пробиваться, модуль всеравно нужен снаружи а длинные провода питания пользы не добавят. Хотя если панелька передняя пластиковая полностью, то модуль будет светить через неё как направленной антенной, правда я сомневаюсь что это придет на пользу внутренностям магнитолы, могут возникнуть паразитные наводки на усилитель и слаботочные цепи внутри магнитолы, которые никак не ожидают радиочастотного сигнала в 2.4ГГц внутри магнитолы на мощности до 100мВт. Попробовать то можно, но что-то мне подсказывает… будет щёлкать в колонках в моменты активности. Вот платку преобразования дифференциального сигнала с модуля в магнитолу встроить можно и подключить параллельно линейному входу.
UFO landed and left these words here
Неоднократно пытался таки перейти на 32бита. Ну вот в одном только проекте показалось удобно использовать ОС и соответственно STM32. Для всего остального за глаза хватает разных атмег. Кстати относительно энергопотребления, вот прямо сейчас нужно спроектировать прототипчик с батарейным питанием. Нужны SPI, I2C, UART. По сути просто перегонять байтики между ними периодически, никакой математики. Перерыл гору даташитов разных производителей. Как не странно самыми симпатичными выглядят PIC16F.
Скажу по секрету что и на STM в большинстве случаев мы используем старый добрый суперцикл. RTOS окупают себя далеко не всегда, когда уж очень много не слишком срочных задач. Для бюджетного проекта, когда подешевле камень выбираешь приходи RTOS не лучший вариант слишком много оперативки жрут его процессы.

АЦП на stm32 все же не очень. Только оверсемплинг, медиана и фильтрация помогут. ЦАП — много лучше, 13 бит и более выжимаются почти без хлопот.


Атмелы — 300МГц — это хорошо, но давно же есть STM32H7 — 400МГц

Есть и они более крутые, но они обойдутся почти в два раза дороже.
АЦП на микроконтроллерах вообще сложно реализовать хорошо, как и сделать дизайн оптимальный дизайн платы когда рядом такой источник импульсных помех как микроконтроллер с тактовой в сотни мегагерц. Но поскольку получаешь очень дешёвое решение, по сравнению с отдельным АЦП в отдельном корпусе, приходится мириться.
Атмел выкрутились, можно было стопорнуть процессорное ядро на время измерений. Да и у dsPIC все было не так печально. Правда ЦАП выдавал черти что. Нулевая точка плавала от экземпляра к экземпляру.
USART — асинхронный последовательный порт, часто использующийся для связи с компьютером там он называется COM или RS232, модемами и другими устройствами

A universal synchronous and asynchronous receiver-transmitter (USART) is a type of a serial interface device that can be programmed to communicate asynchronously or synchronously. See universal asynchronous receiver-transmitter (UART) for a discussion of the asynchronous capabilities of these devices.

См. например
www.edn.com/electronics-blogs/embedded-basics/4440395/USART-vs-UART--Know-the-difference
Only those users with full accounts are able to leave comments. Log in, please.