1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как перестать писать прошивки для микроконтроллеров и начать жить

Работа с микроконтроллерами: прошивка программатором и чистый «Си»

В этой статье я расскажу о том, как программировать микроконтроллеры без использования Arduino. Мы будем использовать программатор AvrISP STK500 для программирования контроллера ATtiny84.

Нам понадобится

Подключаем питание

Arduino мы не используем, поэтому обо всем нам придется думать самостоятельно. И первое, с чем необходимо разобраться — питание. Мы будем использовать преобразователь L7805, обладающей следующими характеристиками:

Теперь нам надо узнать схему подключения этого преобразователя. Ее мы найдем на странице 3 даташита.

Помимо самого преобразователя, мы видим еще 2 конденсатора — входной Сi и выходной Сo. Входной конденсатор необходим для того, чтобы сгладить пульсации на входе в случае удаленности L7805 от источника. В нашем случае длина соединительных проводов не будет превышать 15 см, поэтому входного конденсатора у нас не будет. Зато будет выходной, поскольку мы хотим «кормить» наш контроллер стабильным питанием.

Распиновка

Необходимо знать назначение ножек преобразователя. Это описано на 2-й странице даташита.

Схема

С учетом всего вышеописанного, получается схема для организации питания.

Программатор

В качестве программатора мы использовали AvrISP STK500 от Seeed Studio. Для его работы под Windows и Mac OS необходимы драйверы. Их можно скачать с официального сайта. Пользователям Linux устанавливать ничего не нужно — программатор будет сразу готов к работе.

Подключение к контроллеру

Распиновка разъема программатора такова:

Важно! Это распиновка разъема программатора, если смотреть на него сверху (отверстиями от себя). Не перепутайте!

Разъем программатора необходимо подключить к микроконтроллеру. Можно использовать как 10-пиновый разъём, так и 6-пиновый. Без разницы. Соединим проводами соответствующие пины, т.е:

10-пиновый ICSPATtiny84
Reset54
MOSI17
MISO98
SCK79

Прошивка

Напишем код прошивки на чистом «C», которая заставит светодиод мигать. Использование ШИМ-сигналов и считывание аналоговых сигналов на чистом «C» не так тривиальна, и может являться темой отдельной статьи, поэтому остановимся пока на простейшем примере.

После скетчей Arduino, код малопонятен, правда? Ничего, сейчас я объясню, что да как. В первых двух строчках мы подключаем необходимые библиотеки, чтобы воспользоваться такими штуками, как DDRA , PORTA , _delay_ms .

Что же такое DDRA ? Это регистр микроконтроллера, управляющий направлением работы порта А. Он содержит в себе 8 бит. Если установить какой-то бит в 1, то пин с соответствующим номером станет выходом.

PORTA — тоже регистр, но он содержит в себе данные порта А. Если мы хотим на вывод номер 2 записать логическую единицу, то мы должны поместить 1 в соответсвующий бит регистра.

А _delay_ms — функция задержки. Исходя из этого можно составить таблицу соответствия:

ArduinoC
НаправлениеpinMode(led, OUTPUT);DDRA = 1
ЗначениеdigitalWrite(led, HIGH);PORTA = 1
Задержкаdelay(1000);_delay_ms(50);

Однако, самым важным различием кода является то, что в программе на С нет разделений функций setup и loop . За все это отвечает функция int main(void) . И она выполняется всего 1 раз! А мы хотим, чтобы наш светодиод моргал не один раз, а постоянно. Как раз для этого и используется бесконечный цикл while (1==1) .

Поэтому легко сделать вывод, что этот цикл и есть аналог функции loop() в Arduino. А то, что до него — аналог функции setup() .

Далее начинается самое интересное. Нам нужно скомпилировать и загрузить прошивку. Однако, в зависимости от вашей операционной системы, методика будет различаться.

Mac OS X

Первым делом необходимо скачать и установить CrossPack for AVR Development. Это даст нам все необходимые инструменты. CrossPack состоит из двух частей.

Первая нам нужна для написания кода и создания файла прошивки, а вторая — для заливки прошивки в контроллер.

Проект создается в три шага.

В результате будет создано следующее дерево файлов.

На данном этапе нас интересует содержимое файла Makefile . В нем содержится информация о том, что вообще мы используем: какой контроллер, программатор. Это все описывается в строках с 20 по 24:

Пройдемся по строкам:

Это автосгенерированный make-файл, поэтому нам необходимо вручную его подправить. Править будем строку DEVICE у нас же микроконтроллер attiny84 и строку FUSES . А вот с ней все сложнее. Fuse-биты, или просто «фьюзы» — два (иногда три) особых байта, в которых содержится фундаментальая конфигурация работы контроллера. Очень важно правильно их задать.

Внимание! Задание неверных fuse-битов может привезти к тому, что микроконтроллер перестанет работать и вернуть его к нормальной жизни может быть либо очень сложно либо невозможно! Воспользеумся сайтом AVR Fuse Calcuator.

Сначала из выпадающего списка выберем нужный нам контроллер (ATtiny84).

И затем укажем необходимые опции, которые нам нужны. Сейчас для нас важны 2 вещи: сохранение возможности прошивать контроллер через SPI и сохранение его работоспособности без внешнего резонатора, поэтому выбираем соответствующие пункты, а остальные оставляем по умолчанию.

Видим, как поменялись сгенерированные значения.

Внесем изменения в Makefile.

Прошивка

Она происходит в 2 этапа.

Сначала необходимо перейти в папку firmware и выполнить команду make . Если ошибок нет, то результат выполнения команды будет таким:

Эта команда сделает из нашего исходника main.c файл, пригодный для заливки в контроллер — main.hex .

Второй этап — как раз заливка прошивки. Делается это с помощью команды make flash . Ее нормальный вывод выглядит следующим образом:

Все, прошивка контроллера завершена.

Windows

Здесь все проще.

Первым делом необходимо скачать и уствновить среду разработки для AVR — Atmel AVR Studio 4. А вторым — Atmel AVR Toolchain.

После запуска среды, необходимо создать новый проект.

Затем указать имя, расположение и то, что мы хотим использовать С ( GCC ).

Третий шаг — настройка отладчика.

На этом все, проект готов к использованию. Теперь необходимо написать и сохранить исходник, который мы уже обсудили.

В результате общий вид среды разработки выглядит вот так:

Теперь необходимо подключиться к программатору. Делается это с помощью нажатия на кнопку con .

В качестве Platform выбираем STK500 , а в Port — Auto . Затем нажимаем Connect.

Если все правильно, то в открывшемся окне выбираем вкладку Main и нажимаем в ней на кнопку Read Signature .

Строка Reading signature from device .. 0x1E, 0x93, 0x0C .. OK! говорит о том, что все хорошо и сигнатура успешно прочиталась. Сигнатура — это своего рода позывной микроконтроллера, которым он сообщает собственную модель.

Это окно нельзя закрывать, иначе соединение с программатором будет потеряно. Просто сверните его.

Теперь нажмем Build → Build . Это заставит программу скомпилироваться. Прошьем контроллер с помощью кнопки Write Flash Memory Using Current Settings — это заставит скомпилированную программу загрузиться в память микроконтроллера.

Заключение

Мы собрали простейшее устройство мигалку, но сделали это на низком уровне. С использованием программатора и «продвинутой» среды разработки, а не Arduino.

Разобравшись в премудростях программирования микроконтроллеров на чистом «Си», вы сможете выжимать из них максимум возможности, затрачивая при этом минимум места и денег.

Фанат науки

  • Главная
  • Визуальное программирование на LabVIEW
    • Первая программа вида 1+1
    • Набираем формулы
    • Вставить код на С++ в блок-диаграмму
    • Мои старые программы на LabVIEW
  • Микроконтроллеры
    • Организационные вопросы
      • Обзор. Типы корпусов
      • ATmega8515. Назначение выводов, Покупной USB-программатор
      • Подключаем USB-программатор и нагрузку
      • Программа, управляющая напряжением на выводах. Запись её в память мк (прошивка)
      • Если нет USB-программатора, прошиваем через LPT-порт
      • Готовые стартовые (отладочные) наборы
    • Прерывания
      • Внешние прерывания (практика ч.1)
      • Внешние прерывания (практика ч.2)
    • Манипуляции отдельными битами
      • Битовые маски. Обнуление, Инвертирование, Установка бита.
      • Считывание отдельного бита.
      • Сшивка (упаковка) и разделение битовых полей.
      • Сборка числа из отдельных битов. Переобозначение пинов директивой #define. Сборка маски. Заголовочные файлы.
  • Статьи по микроконтроллерам. Программы.
    • Восстановление работоспособности микроконтроллера при случайной прошивке фьюзов.
    • Ввод информации в порт. Детектор фронта. Срабатывание по внешнему сигналу. PULL-DOWN резистор.
    • Таймеры. Управление несколькими пинами порта.
    • Обработка программных флажков с помощью прерываний.
    • Управление частотой импульсов по int0 и int1
    • Разработки наших читателей
  • Советские учебные фильмы
    • Советские учебные фильмы.
  • Математика (анимации)

Если Вы работали на встроенном тактовом генераторе и случайно прошили фьюзы (например нажали кнопку Program All , забыв при этом снять галочку «запрограммировать фьюзы» Program Fuse Bit(s) — микроконтроллер может отключить встроенный тактовый генератор и переключиться на работу с внешним кварцем (естественно перестав при этом работать).

При попытке прошить кристалл, CodeVision выдаёт подобные ошибки:

или так:

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

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

Сейчас фьюзы многоразовые (это просто вспомогательная ячейка памяти) , но пережиток тех времён остался в обозначении запрограммированных фьюзов:
• Запрограммированный
фьюз обозначают дыркой (лог.0, непроводящий участок );
Незапрограммированный — галочкой (лог.1, проводящий участок );

Таким образом, фьюзы программируются «дырками», а не галочками.
__________________________________________________________________________________________________

Для восстановления работоспособности микроконтроллера, найдите в окошке
ProgramFuseBit(s) биты:
CKSEL0
CKSEL1
CKSEL2
CKSEL3
SUT0
SUT1
CKOPT
. и сравните с табличкой. Определите, на какой режим работы вы только что прошили свой микроконтроллер :

Чаще всего, все вышеуказанные биты — это дырки (по умолчанию в CVAVR не стоит ни одна галочка), т. е. все эти биты запрограммированы. Что соответствует подключению внешнего кварца с частотой от трёх до 8 МГц:


1. Купите кварц на частоту от трёх до 8 МГЦ или выпаяйте из компьютерного лома (частота кварца написана на его корпусе). И два конденсатора от 12 до 36 пф.

2. Найдите на микроконтроллере выводы XTAL1 и XTAL2, воткните между ними кварц. С этих же выводов бросьте на общий провод конденсаторы (хотя можете и без них попробовать).


3.
В конфигурации проекта поменяйте частоту чипа на 8000000 (или другую, на которую рассчитан Ваш кварц). Можно не менять, но тогда функция delay будет неправильно рассчитывать задержки (если вы, конечно, будете её использовать).

4. На всякий случай перепрошейте фьюзы (теперь уже CVAVR должна нормально распознавать микроконтроллер):
Tools >> Chip programmer >> Program >> Fuse Bit(s)

5. Почистите чип и ещё раз залейте прогу (естественно не забудьте откомпилировать её перед этим).
Если будут вылезать ошибки, попробуйте просто закрыть окошко с ошибкой и прошить ещё разок. Протоколы для программаторов разрабатывались ещё во времена Windows95 и для старых моделей компов. На некоторых современных, особенно многоядерных компьютерах с Windows XP (Windows Vista, Windows 7) иногда бывает только со второго-третьего раза нормально прошивается (во всяком случае у меня).

6. Когда снова получите «власть» над микроконтроллером, тут уж как хотите — можете его обратно на встроенный генератор переключить, а можете и на кварце продолжать работать, на высокой частоте.

PS. Прочитать значения фьюзов из CodeVisionAVR (и записать их перед тем, как что-либо проделывать с микроконтроллером, чтобы восстановить потом можно было) можно так: Tools >> Chip Programmer >> Read >> Fuse Bit(s)

Как перестать писать прошивки для микроконтроллеров и начать жить

_________________
Создать электронный мир проще,чем его понять.

_________________
Кто не пил ни разу водки-тот не знает вкус воды!

JLCPCB, всего $2 за прототип печатной платы! Цвет — любой!

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

А проверить это можно я так понимаю тупо прочитав микроконтроллер?

_________________
Создать электронный мир проще,чем его понять.

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Обновленная линейка барьерных клеммных блоков Degson, поступивших на склад Компэл, содержит широкий ряд клемм, подходящих для соединения проводников различного сечения (от 22AWG до 10AWG). Барьерные клеммные колодки сочетают в себе удобство, простоту и надежность соединения. Это достигается за счет ответственного производства и использования высококачественных материалов. Винтовые клеммные блоки барьерного типа Degson предназначены в первую очередь для коммутации в сильноточных цепях, например, в распределительных и измерительных системах.

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Попробывал скопировать прошивку с набора МастерКИТ не получается,наверно они знают о защитных фьюзах.Мало того что у них цены космические,так они и схемы,и печатки и прошивки скрывают зла не хватает !

_________________
Создать электронный мир проще,чем его понять.

ПРИСТ расширяет ассортимент

_________________
Создать электронный мир проще,чем его понять.

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

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется.

_________________
— Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης

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

Часовой пояс: UTC + 3 часа

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Наука и жизнь в России

Высказывания и цитаты:

За покос ли, за посев ли
Надо взяться, поспешать,
А прохлопав, сами после
Локти будете кусать.
Сами будете не рады,
Утром вставши: вот те раз! —
Все мосты через преграды
Переброшены без нас.
Владимир Высоцкий

Все статьи

Разделы:

  • AVR
  • KolibriOS
  • PIC
  • STM32
  • Без рубрики
  • Блоки питания
  • Рассказы

Ссылки:

  • Аккорды и тексты песен В.С.Высоцкого
  • Блог web-программиста
  • Магазин электронных запчастей города Уссурийска

Reverse ingeneering взлом микроконтроллеров

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

Я думаю, что был одним из тех, кто пытался слить прошивку из микроконтроллера, получить из нее исходный код и переделать под свои задачи. Сам термин Reverse ingeneering подразумевает обратную разработку проекта с целью завладеть чужими интеллектуальными данными. Во многих случаях бывает сложнее написать программу с нуля, чем переделать готовую, а в некоторых случаях вообще невозможно понять алгоритм работы устройства без наличия кода микроконтроллера. Можно также просто клонировать чужую интеллектуальную разработку с целью наживы.

В советские годы наши ученые уделяли достаточно внимания изучению и копированию зарубежных микросхем с целью выпуска отечественных аналогов. В специализированных лабораториях удалялся корпус, защищающий кристалл, и потом послойно фотографировалась маска полупроводников на кристалле — таким образом считывалась вся структура кристалла.

С тех далеких времен много воды в реке утекло, простые микросхемы заменили микроконтроллеры, ПЛИСы и другие программируемые устройства. Теперь не требовалось изготавливать для каждой отдельной задачи новую матрицу, а для реализации задачи достаточно стало написать программу и занести ее в память микросхемы. Это удешевляло производство, ускоряло процесс разработки, но позволяло копировать чужую интеллетуальную собственность. Для избежания этого разработчики программируемых устройств придумали защиты от копирования — биты защиты или более сложные.

Мне приходилось иметь дело с микроконтроллерами семейств PIC, AVR, MSP430, где результат меня порадовал. А также holtek и XMEGA от Atmel, где результат получался половинчатый или вовсе отсутствовал.

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

Для более сложной защиты микроконтроллера используется кодирование данных с ключом шифрования. В каждом отдельном чипе производителем устанавливается свой ключ шифрования. При заливке прошивки, прошивка преобразуется по определенному алгоритму через этот ключ шифрования. В результате в памяти микроконтроллера хранится набор цифр. Даже при считывании прошивки, ее не получится раскодировать. Одним из представителей является семейство XMEGA от Atmel. Но технологии не стоят на месте, и то, что было невозможно три года назад, может быть вполне возможно сейчас.

Если микросхема затерта, и не удается определить ее название, рисуем электрическую схему подключения микроконтроллера, по его выводам питания и размерам корпуса практически всегда можно однозначно определить семейство. В свое время я перелопатил горы datasheets, но нашел нужный микроконтроллер.

Пытаемся считать прошивку и fuses с помощью программатора. Если микросхема имеет какую-либо защиту, не сильно расстраиваемся.

В настоящее время существует, я бы сказал, несколько вариантов получения прошивки из защищенного микроконтроллера — они могут подходить целому семейству, а могут быть различны для разных микросхем одного семейства. Например, если в импульсе понизить/повысить напряжение питания в процессе чтения бита защиты, то возможно его игнорирование, после чего считывается прошивка.

Но чаще применяется декапсуляция (получение прямого доступа к кристаллу химическим травлением, механической обработкой, воздействием температуры) в паре со следующим: после декапсуляции напаивается или удаляется какая-либо перемычка или происходит облучение ультрафиолетом отдельной области битов защиты.

Практический пример декапсуляции можно посмотреть тут http://geektimes.ru/post/127281/. Декапсуляция и все эти способы требуют дорогостоящего оборудования и обширных знаний для каждой отдельной микросхемы (то есть горы убитых на практике микросхем). Благо, что есть фирмы, которые занимаются этим делом. Большинство из них находятся в Китае, цены в них значительно ниже чем в других фирмах, значит с ними мы и будем работать. Сайт, указанный выше, дает ссылку на http://www.mefas.com/. Лично я пользовался услугами другой фирмы — http://www.mikahk.com или http://www.break-ic.com/faq.asp — это одна и та же фирма, имеющая разные доменные имена сайта. Заходим на http://www.mikahk.com и смотрим, какие микросхемы они умеют взламывать…. Там очень большой список различных производителей, и еще больший микросхем. Я не буду его здесь приводить, перейдите по ссылке.

Итак, микросхема PIC16F914 в далеком 2012 году обошлась в 170 долларов. MSP430F415 в 800 долларов. С тех пор цены выросли в полтора раза. Люди в этой фирме умные, переписываться с ними легко на английском языке. Я отправил письмо им на mail типа «I need the Hex file from chip PIC16F914». Они сразу написали стоимость, вероятность считывания почти 100 процентная. Присылать чип только по EMS (дешевле) или DHL почте на адрес: Mikatech Innovative Limited 24E, Lily Silver International Building, Buji, Shenzhen, Guangdong, China 518112. Оплату производил в Сбербанке : перевод за границу без открытия счета в долларах.

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

Итак, у нас есть hex (или bin) файл, полученный таким образом или скачанный из интернета без исходного кода. Заливаем его в другой такой же контроллер и смотрим, всё ли работает. Если всё работает, дизассемблируем его. Производителями микроконтроллеров в большом количестве выпускаются различные компиляторы ассемблерного и си кода, но обратный процесс преобразования из машинного кода в язык, на котором пишут программы, разработчикам микроконтроллеров не нужен. И как следствие — это программы сторонних производителей. Их весьма не много.

А если их нет — преобразование можно производить и вручную — например, взяв datasheet на микроконтроллер, можно найти его набор ассемблерных команд и их интерпретацию компилятором. Команды бывают различной размерности, это надо учитывать, чтобы не допустить ошибок при декодировании. Было бы совсем не сложно и написать свою собственную программу дизассемблирования. Но мне ничего этого не потребовалось, для работы с PIC16 есть Picdisasm106.zip, для всех других производителей и семейств я использовал IDA PRO (в 2012году у меня был образ ida61fix.iso). К нему я так же нашел Hex-Rays decompiler — это плагин, позволяющий получить из ассемблерного кода программы код на си. В то время с помощью него я занимался созданием си кода компьютерных программ на платформе x86, но си код для микроконтроллеров он делать не мог (не знаю, может быть, сейчас всё изменилось).

К тому же не все типы микроконтроллеров, выпущенные разработчиками, были в IDA PRO. Это означает, что некоторые регистры микроконтроллера при дизассемблировании будут иметь другое имя, отличное от стандартного и потребуется вручную его переименовывать. Я же создавал новый файл шаблона регистров для микроконтроллера на примере существующих, отсутствующего в списках, называл его нужным именем. Потом у меня появлялся в списках отсутствующий микроконтроллер в IDA PRO. То есть, вы можете добавить микроконтроллер любого производителя, отсутствующего в списках, что не может не радовать. После получения кода из этой программы, код надо адаптировать под среду ассемблера, в которой вы работаете (написать необходимые директивы препроцессора), также, не исключено, что в коде будут ошибки. Под исправленный код создаем проект и компилируем. Полученный hex файл и исходный сравниваем через программу сравнения файлов WinMerge. Находим отличия, и подгоняем так ассемблерный текст, чтобы после компилирования hex файлы стали одинаковы.

Далее в симуляторе (программном или аппаратном) в ходе пошаговой отладки пытаемся понять алгоритм текста, пишем комментарии и после понимания переписываем код на си — и заливаем в микроконтроллер. Переписывание кода на Си самый длительный процесс во всем этом, поэтому рекомендую исправлять код ассемблера без переделки на Си. При исправлении ассемблерного кода обратите внимание, по каким адресам будут располагаться данные во flash и ОЗУ, дело в том что они начнут смещаться относительно исходных и в случае косвенной адресации будет сбой. А косвенная адресация используется всегда, поэтому создавайте метки и указывайте конкретно адреса, с которых начинается каждый кусок подпрограммы.

На самом деле это не сложно. Вот и всё, если будут вопросы — спрашивайте).

11 комментариев

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

Очень познавательная статья, к сожалению стоимость работ по извлечению прошивок из микроконтроллеров китайскими коллегами непомерно высока. За прошивку из MSP430F196 на сайте http://www.mikahk.com запросили 900USD, что при нынешнем курсе (на 5.01.2016 года)составляет 66000 рублей. Так что обольщаться не стоит.

Куда можно обратится по вопросу касаемого логики ATF1508 (слить проект)

Здраствуйте! Подскажите куда обратиться по поводу переделки прошивки с персонификацией ( имееться прошивка в hex) в прошивки лишенную ограничения.

Добрый день, к кому обратиться — есть прошивка с STM32, надо бы отреверсить.

Алексей. пишите на dmitry19.sp@mail.ru — сделаем nsp430 дешевле

Разводилово это. Не повторяйте наших ошибок. Испытано на себе). Отправил им PIC контроллер. Все нормально, получили. Заплатил вперед, начали работать. Через пять дней говорят, что чип оказался с медными проводниками, а они думали что он с алюминием и поэтому испортили. Ладно, поверили, тем более что согласились переделать бесплатно, только надо еще чип выслать. Выслали еще, на этот раз сразу два (на всякий случай). Посылку получили, через неделю высылают прошивку. УРА, думаем. Прошились — ничего не работает. Мы начали копаться, менять программаторы и т.д. потратили кучу времени и сил, пока точно не убедились что код неправильный. ПОсле претензий они выслали какой-то другой вариант кода, согласившись что они что-то напутали. Мы снова обрадовались, ну, думаем наконец-то! Хрена с два. Ничего не работает. Тогда они попросили выслать им готовый девайс,чтобы они все проверили и если не работает, то вернуть деньги. Мы почесали репу и решили отправить девайс. Они его получили и говорят, микросхема в девайсе работает а ту что до этого мы присылали -не работает, поэтому они и код сняли неправильный! Мы говорм, что все было тщательно проверено, тщательно упаковано в антистатику и т.д., что микросхема была 1000% рабочая, но у них один ответ — дескать мы ломаем микросхемы тысячами и ошибка исключена, поэтому они правы, а мы нет. Ну что сказать -не придерешься, логика железная. И конечно никакого возврата, но зато предложили еще раз заплатить, чтобы они сняли прошивку с исправной микросхемы. Мы предложили сначала снять, потом мы заплатим, мы же заинтересованы в этом, но, как несложно догадаться, мы были мягко посланы. Тут мы окончательно протрезвели и убедились, в том что нас просто разводят, и мы конечно высказали все что о них думаем, конечно же в очень мягкой форме, думаю, они остались довольны). Так что, ребята, думайте сами, надо оно вам это иди нет. 99,9 против 0,1 что такая участь ждет и вас тоже. http://www.mikahk.com — мошенники, http://www.break-ic.com — мошенники. Такое наше мнение. Всем удачи в делах!

Answer to above Mr Alexander

You sent us one 16F886 project, we sent you the code, you tested and said the code was not working, we asked you to send us a working device to test, you did send us the PCB, after testing the PCB, we answerd you: «First, we tested the chip on board, we call it master No.2, and proved it was working.
Second, we soldered the master chip we had done for you, we call it master No.1, it was not working.
We compared the inside master No.1 and master No.2, there were slight difference, so our engineer said master No.2 should be a upgraded edition of master No.1, you knew it, right?».

If the code was not working, you should had sent us same master No.1 on the PCB to us, but you send us a PCB which master No.2 work on it and claimed to us hat our code for the master No.1 was not working, wanted us to do the master No.2 for free, I am sure this is a very simple logic, you want us to do 2 chips but you only want to pay once, we are not afraid of your black mail.

Answer to above Mr Alexander

You sent us one 16F886 project, we sent you the PCB, after testing the PCB, we answeredd you : «First, we tested the chip on board, we call it master No.2, and proved it was working.
Second, we soldered the master chip we had get the code for you, we called it master No.1, it was not working.
We compared the code inside master No.1 and master No.2, there was a slight difference, so our engineer said master No.2 should be a upgraded edition of master No.1, you knew it, right?».

I have no idea why some of the text were lost when I upload it.

simply put, this mr Alexander sent us one project, paid the money, we sent him the code, he said the code was not working, sent us another master chip containing different code and complaint we had not done the job, he want us to do 2 project for him at one payment, otherwise he will black mail us.

Thanks for the tips about credit repair on this blog. Things i would advice people would be to give up the actual mentality that they’ll buy right now and pay out later. As a society all of us tend to do that for many things. This includes holidays, furniture, as well as items we would like. However, you have to separate your own wants from all the needs. When you are working to improve your credit rating score you have to make some sacrifices. For example you are able to shop online to save money or you can turn to second hand shops instead of costly department stores with regard to clothing. https://zyprexaolanzapine.com/#

Ваш ответ

Наука и жизнь в России. предыдущее название: Проекты на микроконтроллерах | Благодарим за внимание

Как перестать писать прошивки для микроконтроллеров и начать жить

2. Ну ладно. Пусть нашелся станок, который сошлифовал до кристалла пластмассу. Поверим ( с большим напрягом, поскольку речь идет о микронах ), а значит — отдельное основание и т.п. Усилие немаленькое надо. Кисточки археологов не катят. Ну пусть это им в том же Зеленограде сделали, сами точно не купят — по грамотности сайта видно уровень финансов. А железяка миллионы стоит.
Ну пусть там на самом деле полость между кристаллом и компаундом. Эту полость по-хорошему нужно будет потом инертным газом заполнить и герметизировать — на 2-5 килобакса влетаем. Зато тогда особой точности и не надо. Вскрыли. А дальше что?

Лазером бить по фузам? Без толку. Чтобы чего-то добиться — нужна мощность, а большая мощность — большой диаметр пучка. И чего добиться можно — непонятно. Эпоха UV-стирания EPROM кончилась. Пусть даже удалось локализовать фузы ( не спрашивайте чем — MC68HC705 и PIC16CXX которые ковырял Скоробогатов — 1 микрон и 1999 год или древнее ) — пытаться их стереть — это кувалдой 5х5 см убить конкретного муравья из колонны с шагом 5х5 мм.
На доступном ( не за $1 000 000 ) оборудовании. Причем сделать это надо не 1 раз.
А задев соседних муравьев — стираем то, что нужно прочесть. В лучшем случае.
Желающие могут посмотреть длину волны более-менее доступных лазеров, чтобы нагляднее было. И вкручивать мне про ширину пучка размером с длину волны — не надо. Не пойму юмора, поскольку и лабы по лазерам были, и знакомые лазерщики есть.
Ну и если эти фузы вдруг окажутся между подложкой и массивами флешки — совсем вилы. А ведь такой подход вполне неплох. На подложку лепим стандартное ядро + фузы + ввод/вывод, а сверху — массивы флешек. Если какой массив с брачком-с — его отрубаем лазером и получаем более дешевый МК. Один фиг АЦП подгонять надо, как правило. Мало нынче МК без АЦП.

Купим электронный микроскоп! И что? Он сможет «очистить» фузы? Извините, но опять же прицеливаться надо. А не лупить по площадям сканированием.

Сделаем микрозонды! Ими будем тыкать в выводы. Те же проблемы с размерами. И вибрация.

Прочитаем заряды флешки «в лоб» бесконтактным способом! Чем? Оптическим микроскопом — не получится. Электронным — тоже. Микрозондом емкостным — так опять точность нужна «немного» другая. Да лаборатория соответствующая ( вибрации + радиошумы ). Самым дешевым местом по совокупности будет Антарктида. Ни транспорта, ни многокиловаттных радиостанций. Или рыть тоннель в скале и экранироваться.

По факту проблема одна: доступное оборудование не дает нужной точности, а при попытке решить проблему точности — налетаем на то, что оборудование недоступно как по цене, так и по наличию. Если вдруг найдется добрый дядя и даст в долг 1-2 мегабакса, а лучше сразу инструмент, сколько пятилеток уйдет на то, чтобы их «отбить»? Правильный ответ — «не отбить вообще». Поскольку такие «игрушки» могут быть рентабельны только на массовой продукции.
Сроки смены технологий очень малы. Через 5 лет — уже другие нормы и нужно другое оборудование.

Тот же Скоробогатов в своей книжке 2005 г. предлагает ( с. 127 ):
— Data remanence in non-volatile memories.
Играть на маленькой разнице уровней ячейки, стертой из 1 и ячейки, стертой из 0. Отлично! Только вот чем мерять? Она ведь реально маленькая будет, очень маленькая, хорошо если 1% — навскидку, RC-цепочка. Х.З.

— Advanced power analysis techniques.
По изменениям потребляемой мощности вычислять и инструкцию, и биты. Бред. Ежели мне будут вкручивать, что мол ФСБ-шники и прочие от утечек данных по питанию защищаются, так я отвечу: они маскируют РЕАЛЬНУЮ активность работы. Как раньше по повышению радиообмена делался вывод — что-то затевается, так сейчас — по повышению загрузки вычислительных мощностей.
А в современных МК стабилизатор внутри наличествует для питания ядра и попробуй померять его ток, одуреешь.

— Practical use of fault injection attacks.
Т.е. долбим МК ресетами, дерганьем питания и выводов, загоняем в сбой. Сам же автор пишет — дальше идеи дело не ушло.

— Using nanotechnologies for hardware security analysis.
Угу. Микрозондами к шинам подключаться. Прокатило бы, если бы по карману было и было где купить.

Что остается?
1. Крупные фотки рассверленных фрезой 1.5 мм корпусов DIP.
Млин. У меня дремель есть, я тоже так могу. Вот спалю какую Мегу8 — рассверлю. Только пока спалить не получается. Где-то штук 10 извел на всякое — все живы. Ну может и «живую» покоцаю, если не лень будет. 42 р. — не жалко. Заодно выясню насчет ядро снизу — флеш сверху или нет. Широко раздвину пальцы и буду дурить всех «секретным ноу-хау» с фотками .
Вывод — фигня.

2. Фотки с оптического микроскопа. Мда. Я видел фото интелевского проца, где межсоединения сложились в надпись INTEL SUXX. Ну буквочки были не очень ровные, но узнавались. А тут какие-то грязные фото эмблем — почистили бы оптику, что ли.
А вот фоток с электронного микроскопа — нету. Не нашли!
Да и никаких инструментов тоже не видать.
Чтобы такие фотки повторить — мне только микроскоп нужно найти чтобы «взять напрокат», остальное есть. Схожу в политех и всех делов. Или из макросъемки насадкой зашарашу — вдруг получится. Кто-то к USB-камере объектив зеркалки приделывал — непрохо вышло.
Опять фигня какая-то.

3. Защита.
Цитата: «стойкий к кислотам и растворителям тугоплавкий полимер, что не позволяет добраться до кристалла».
Защита 1 уровня. Вот интересно, а чем он надежнее обычного материала корпуса? Видимо тем, что при перепадах температуры даже внутри коммерческого диапазона растрескается напрочь и «убьет» МК за 1-2 года ( ежели его конечно не поверх «родного» наносят ). Преценденты были. Причем на заводах МЭП и на более «дубовой» К155. Способ нанесения впечатляет — дети ровнее сделают. И если они сами корпус рассверливают, то что мешает другим так сделать? Алмазные опилки внутри полимера? Смешно.
Вывод — фикция.

Следующие 2 уровня защиты. Обрывание проволочин и выжигание логики. Если бы я не читал про ремонт южников с битым USB отжиганием этого самого USB БЕЗ ВСКРЫТИЯ и все остальное потом работает, я бы впечатлился. Но ведь и читал, и делал.
Оборвать проволочину к выводу а потом компаундом дыру замазать — ну вааще не впечатлило. Еще студентами в 70-х хохму вдвоем провернули — на макетке с ламелями запаяли 4 резистора, а в дырку одного ламеля бескорпусной транзистор спрятали. Если совсем носом не упереться — имеем усилительный каскад на пассивных элементах.
Т.е. делаются эти защиты «на коленке» без проблем.
Вывод по защите — фигня.

Итого:
Фото демонстрируют что угодно, но не наличие ПРОФЕССИОНАЛЬНОГО оборудования. Хоть бы паяльную станцию или фрезерный станок сфоткали. Ну микроскоп на край — оптический. Он-то вроде есть.
Т.е. даже по фото — фигушки, а не взлом.
«Защита» — либо не защита, либо «на коленке» дома делается такая же. Но ежели проволочку оторвать, я ее обратно припаяю! Я такой, вредный.

Общий вывод:
Детский сад — штаны на лямках.
С надеждой что защита не стоит, а просто ISP запрещено, или не на всю флешку стоит и прочие причуды фортуны типа PIC16F84 . И тогда бабло будет получено.
А иначе можно на полбабла раскрутить, вырезав каждый 2 байт из любой прошивки, что под рукой для такого кристалла с аналогичными кварцами. Типа «так получилось, что полфлеша не прочиталось». Или еще какая отмазка.

Электроника для всех

Блог о электронике

AVR. Учебный курс. Трактат о программаторах

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.

Итак, первым шагом в освоении микроконтроллера обычно становится программатор. Ведь без программатора невозможно загнать программу в микроконтроллер и он так и останется безжизненным куском кремния.

Что же представляет из себя это устройство?
В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя с компа залить файл прошивки в память контроллера. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.

Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).

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

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.

Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:

  • Программатор Громова.
    Простейшая схема, работает через оболочку UniProf(удобнейшая вещь. ), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200
    Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.
    Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:

  • USBASP
  • AVRDOPER
  • AVR910 Protoss

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.

Параллельное высоковольтное программирование
Обычно применяется на поточном производстве при массовой (сотни штук) прошивке чипов в программаторе перед запайкой их в устройство.

Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.

Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал. После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру.
Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к. настройки FUSE для бутлоадера недоступны.

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

Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)

Взялся я тут за один общественный благотворительный проект. Восстанавливаем хоккейную коробку при детском доме Аистенок (г. Челябинск. Нагорная д. 18). Задача: к июлю сдать ее уже как готовый объект.

Найдены сертифицированные подрядчики, которые могут изготовить все по ГОСТам, а без этого даже гвоздь сейчас не забить — заставят выдернуть. Остается только организация и сбор средств. На все про все надо около полумиллиона, порядка 15% уже есть, но сроки поджимают. Поэтому подключаю краудфандинг 🙂

Если вам были полезны мои сайты, мои статьи, то что я делаю и сделал, то просьба не пожадничать и закинуть мне бабла 🙂 Не на пиво, а на мою цель — сделать детскому дому хоккейную коробку. Им реально надо, сейчас там полный трешак и ад, с убитым асфальтом и разваливающимся гнилыми конструкциями. У нас тут не Москва, поэтому бюджета, который чиновник будет пилить и ради чего хоть что-то сделает, просто нет. А значит решаем вопрос сами.

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

Если мы успеем собрать нужную сумму в срок, то я обязуюсь в ТЕЧЕНИИ ТРЕХ ЛЕТ выдавать НЕ МЕНЕЕ одной статьи в месяц.

Тем мне хватит, о чем писать я найду. Мотивации начать шевелиться не хватает. Ваше участие даст мне хороший стартовый пинок под зад.

Хотите видеть больше статей от меня? Закиньте 251 рубль на счет-карту 5469 7200 1707 9035(Сбербанк, получатель Ольга Сергеевна Л. она финансовый координатор нашей инициативной группы).

Почему 251? Число мне нравится. Вроде и немного, как кофе попить с плюшкой. Но 4 по 250 это уже 1000. А +1 рубль покажет нам, что перевод пришел именно от моего подписчика, а не от других спонсоров проекта. Мне будет приятно 🙂 О результатах и процессе будет написано на dihalt.ru

89 thoughts on “AVR. Учебный курс. Трактат о программаторах”

А что это делает в учебном курсе? чего не на главной странице?
Здарова, Артем, вот я и зашел, чего то не мог зайти долго…

Я постепенно правлю и переписываю старые статьи, чтобы привести их в более стройный и завершенный вид.

«Прошиваем» микроконтроллеры. Часть 1. Знакомство.

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

Прошивка («прожиг») — (глагол) процесс переноса программы в электронное устройство.
Прошивка — (существительное) подготовленная программа для электронного устройства.

Определить, какое именно значение слов «программатор» или «прошивка» употребляется, можно обычно из контекста. Далее мы убедимся, что это не так сложно.

Большинство программ-программаторов могут быть настроены для работы с разными схемами программаторов-адаптеров. Программатор-адаптер подключается к компьютеру через какой либо порт ввода-вывода. В настоящее время существуют три наиболее распространённых возможности подключения программатора к компьютеру по какому либо порту:

  • LPT
  • COM
  • USB

В течении последних лет параллельный порт принтера LPT и последовательный COM-порт были вытеснены USB-портом. Тем не менее всё ещё имеются в продаже отдельные платы расширения для LPT- и/или COM-порта. Такие карты («мультипортовки») можно дополнительно установить в уже имеюшийся компьютер, но дополнить ноутбук COM- или LPT-портом нельзя или крайне сложно.

Вместе с тем практически на всех современных компьютерах и ноутбуках имеется хотя бы один USB-порт, а так же распространены недорогие адаптеры USB-COM, которые позволяют создавать на компьютере с USB-портом недостающий COM-порт.

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

Пожалуй, большинство начинающих выбирает восьмибитные AVR-микроконтроллеры RISC архитектуры фирмы ATMEL из-за их гибкости, хорошо описанных примеров применения и невысокой цены. Эти микроконтроллеры, как и множество других, могут быть запрограммированны через ISP-интерфейс.

ISP (In System Programming) – интерфейс внутрисхемного программирования, позволяет программировать контроллер не отсоединяя от остальной схемы.

ISP-интерфейс состоит из пяти проводников: MOSI, MISO, SCK, RESET и GND. Подключение ISP-программатора позволяет программировать микроконтроллеры, (в большинстве случаев) не извлекая сам микроконтроллер из схемы.

Среди радиолюбителей распространнено много схем-программаторов для последовательного COM-порта. Многие из них собраны на нескольких транзисторах и стабилитронах, и даже на нескольких резисторах. Достоинством таких схем является их простота, но они имеют и важный недостаток. Дело в том, что стандат RS-232 допускает отклонения уровней напряжения на выводах COM-порта, причём эти отклонения у разных производителей компьютеров могут сильно меняться, всё же оставаясь при этом в разрешённых пределах. Поэтому такая простая схема, работающая на одном компьютере, может работать с перебоями на другом или не работать совсем. Очень неудобно и то, что программатор, собранный по простейшей схеме, необходимо каждый раз подключать и отключать от целевой конструкции на время сеанса прошивки.

Вышеперечисленных недостатков лишина схема на Рис. 2. Это программатор для последовательного COM-порта всего на двух распространённых микросхемах: микросхемы RS232-драйвера MAX232 (или аналога) и логической микросхемы 74LS240 (отечественный аналог К555АП3).
Микросхема MAX232 представляет собой широкораспространённый четырёхканальный драйвер (преобразователь уровня) интерфейса RS-232 (примерно от минус 12 до плюс 12 вольт) к уровням CMOS/TTL (уровень 5-вольтовой логики). Микросхема 74LS240 является сдвоенным инвертирующим буфером четырёх линий с разрешением выхода.

Программатор, собранный по этой схеме обладает следующими достоинствами:

  • благодаря MAX232 происходит гарантированное преобразование уровней сигналов
  • программатор не требуется отключать от схемы после прошивки
  • в схему программатора можно легко внести модификации, которые будут полезными в дальнейшем
  • эту схему можно использовать как при работе через COM-порт, так и через переходник USB-COM
  • с этой схемой работают многие программы-программаторы (например, avrdude и PonyProg200).

Для начинающих электронщиков эта схема может показаться сложной, но с этим мы постараемся справиться в следующей части статьи.

Смелых и Удачных Экспериментов.

Дополнения и файлы:

Как перестать писать прошивки для микроконтроллеров и начать жить

Ответы на часто задаваемые вопросы:

1. Для кого предназначен этот FAQ?

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

2. Для чего и от кого делается защита микроконтроллеров?

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

3. Что представляет собой защита от копирования в микроконтроллере, и почему я сам не могу считать защищенную микропрограмму (прошивку)?

Обычно защита от копирования устанавливается во время программирования микроконтроллера путем установки специального бита защиты или нескольких бит в слове конфигурации микроконтроллера. Физически эти биты располагаются в специальных ячейках памяти на кристалле микроконтроллера. Иногда используются другие методы защиты, например защита паролем, но принцип сохраняется. Чтобы снять защиту обычно необходимо изменить значение этого бита или нескольких битов, хотя часто могут использоваться и другие методы считывания содержимого памяти программы микроконтроллера. Обычными методами, например программатором, это сделать не удастся, необходимо сложное дорогостоящее оборудования, которого обычный разработчик электронных устройств не имеет. Поэтому мы, имея необходимое оборудование, знания и опыт, специализируемся на предоставлении подобного рода услуг.

4. Что дает мне снятие защиты от чтения микропрограммы (прошивки)?

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

5. Какова законность таких действий с точки зрения законодательства?

Все микропрограммы (прошивки) мы считываем по заказу клиента с целью ремонта его устройства, либо для ознакомления с алгоритмом работы микропрограммы. Вся дальнейшая ответственность за незаконное распространение микропрограммы или иные действия с ней или с её помощью ложится полностью на заказчика.

Наша компания работает на территории РФ, поэтому ниже приведем цитату из закона. Законодательство других стран декларирует аналогичную позицию.

Статья 1280 ГК РФ. «Свободное воспроизведение программ для ЭВМ и баз данных. Декомпилирование программ для ЭВМ».

2. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения изучать, исследовать или испытывать функционирование такой программы в целях определения идей и принципов, лежащих в основе любого элемента программы для ЭВМ, путем осуществления действий, предусмотренных подпунктом 1 пункта 1 настоящей статьи.

3. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой.

6. Что представляет собой дополнительная защита от чтения и почему она лучше обычной?

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

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

Второй уровень делает невозможной процедуру считывания программатором без специальных дорогостоящих инструментов.

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

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

7. Я хочу установить дополнительную защиту, но я боюсь, что вы считаете мою суперсекретную программу перед установкой защиты. Есть ли какой-то способ установить дополнительную защиту на микросхему, перед тем как я ее окончательно запрограммирую?

В данном случае перед установкой нашей дополнительной защиты можно прошить только бутлоадер без основной программы. После того, как мы установим дополнительную защиту, вы уже сможете запрограммировать основную память. Причем бутлоадер для загрузки основной программы должен использовать любой другой интерфейс отличный от основного, использующегося для стандартного программирования, так как основной интерфейс будет отключен после установки нашей дополнительной защиты. Обычно сам бутлоадер не представляет никакого интереса для копирования. В качестве бутлоадера можно использовать свой, либо модифицированный из примеров от производителя микроконтроллера.

8. Я боюсь, что после считывания моя программа может быть передана или использована третьими лицами.

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

9. Работаете ли вы с юридическими лицами?

Да, мы работаем с юридическими лицами в качестве самозанятого (НПД). Выдаем чек от самозанятого после оплаты. Другие документы нам не нужны. Если нужно, есть пример договора и акта: договор, акт

Что нужно для программирования микроконтроллеров?

Теперь, когда мы уже ознакомлены с некоторыми возможностями и функциями микроконтроллеров, естественно, возникает логичный вопрос: что нужно для программирования микроконтроллеров? Какие необходимы программы и устройства, где их взять?

Для того чтобы микроконтроллер мог решать задачи и выполнять определенные функции, его нужно запрограммировать, т. е. записать в него программу или же код программы.

Структура и порядок написания программы

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

Следующим этапом после составления алгоритма является непосредственное написание кода программы. Программы для микроконтроллеров пишутся на языке Си или Ассемблере. Только Ассемблер больше относится к набору инструкций, нежели к языку программирования и является языком низкого уровня.

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

Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.

Сам код программы можно писать в любом стандартном текстовом редакторе, например в Блокноте. Однако на практике пользуются более удобными редакторами, о которых будет сказано далее.

Компиляция программы

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

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

Для прошивки МК применяется устройство, называемое программатор. В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.

Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.

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

Теперь давайте подытожим этапы программирования микроконтроллеров.

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

Следует заметить, что отладку и тестирование программы также выполняют до прошивки МК.

Необходимый набор программ

Существует множество полезных и удобных программ для программирования МК. Они бывают как платные, так и бесплатные. Среди них можно выделить три основных:

Все эти программы относятся к IDEIntegrated Development Environment – интегрированная среда разработки. В них можно писать код, компилировать и отлаживать его.

Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.

На начальном этапе программирования все программы лучше прописывать вручную, без каких-либо упрощений. Это поможет быстро приобрести необходимые навыки, а в дальнейшем хорошо понимать и редактировать под свои нужды коды, написанные кем-то другим. Поэтому я рекомендую использовать программу Atmel Studio. Во-первых, она абсолютно бесплатна и постоянно обновляется, а во-вторых она разработана компанией, изготавливающей микроконтроллеры на которых мы будем учиться программировать.

Прошивка и отладка программы

Прошивать микроконтроллеры мы будем с помощью дополнительной программы AVRDUDE .

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

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

Еще один важный элемент, который нам пригодится – это техническая документация на МК, называемая datasheet. В общем, нужно скачать datasheet на микроконтроллер ATmega8.

Итак, полный набор для программирования МК состоит из таких элементов:

2) Datasheet на ATmega8

5) Программатор USB ASP (+ драйвер на него)

6) Макетная плата

7) Микроконтроллер ATmega8

Если микроконтроллера нет в наличии, не стоит откладывать изучение микроконтроллеров на потом, достаточно скачать и установить:

Прошивка «чистого» микроконтроллера для работы с Arduino, а так же рубрика «Вопросы и ответы»

Начну с того, что внеплановый выход нашей традиционной рубрики связан с моим скорым отъездом, поэтому воскресенье переносится на сегодня 🙂

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

Зачастую бывает ситуация когда вам нужно поставить в плату Arduino новый микроконтроллер ATmega328P, купленный, например, в Китае или радиомагазине. Но просто вставить чистый мк в плату нельзя, точнее можно, но пользы от него будет как с козла молока — загрузить какой-нибудь код через Arduino IDE как ни пытайся, не получится. А дело тут в том, что помимо самого мк, для Arduino нужно что бы в этом мк уже был зашит специальный код — так называемая программа-загрузчик (bootloader), более подробно о которой можно почитать, например, здесь: http://easyelectronics.ru/avr-uchebnyj-kurs-ispolzovanie-boo.

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

К счастью, сделать это очень просто — вам понадобится сама плата Arduino, заметьте, с уже вставленным в неё «хорошим» оригинальным мк (на картинке отсутствует), кварцевый резонатор на 16МГц, макетная плата, чистый мк и 6-8 проводков.

По сути, плата Arduino будет выполнять роль обычного ISP-программатора.

Далее по пунктам:

1. Выбираем «Файл>>Примеры>>Arduino ISP»

2. Загружаем в нашу Arduino выбранный пример.

3. Далее «Сервис>>Плата» и выбираем тип платы для которой хотим записать загрузчик, в нашем случае — «Arduino UNO»

4. Далее «Сервис>>Программатор>>Arduino as ISP»

5. Подключаем наш ATmega328P согласно пинам из Arduino ISP

// pin name: not-mega: mega(1280 and 2560)
// slave reset: 10: 53
// MOSI: 11: 51
// MISO: 12: 50
// SCK: 13: 52

6. Между ногами 9 и 10, прошиваемого контроллера, подключаем резонатор номиналом 16 MHz

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

7. В меню сервис выбираем «Записать загрузчик».

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

На этом все, надеюсь кому-то эта информация будет полезной, всем добра и удачных компиляций! 🙂

Материал для поста был взят с сайта http://bigbarrel.ru/

Найдены возможные дубликаты

Arduino & Pi

980 постов 17.6K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте — используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

даа, давай пили) я сам столько всего хочу выложить да постоянно то одно, то другое, никак руки не доходят

Оу, очень интересно) ну все, ждем

и мой вопрос из предыдущего поста: кто знает о максимальном весе для беспилотников? протолкнули закон о 250 граммах или нет?

Вчера читал что подписали ограничение в 30 кг. Ссылку, увы, не сохранил.

Подтверждаю, тоже где-то читал что беспилотникам до 30 кг не нужно каких-то оформлений и прочего.

Задам тоже вопрос. Вот допустим есть 2 геркона и 2 светодиода. надо сделать так, чтобы они плавно загорались независимо друг от друга.

Как я понимаю «многозадачность» достигается отказом от функции Delay().

и с помощью millis() я их заставил таки работать независимо друг от друга.

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

я пробовал использовать millis() внутри цикла for(), вместо delay() , диоды загораются, но вполнакала и сразу.

Arduino: 1.8.13 (Windows 7), Плата:»Arduino Uno»

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x03

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0

Ошибка при записи загрузчика.

Этот отчёт будет иметь больше информации с

включенной опцией Файл -> Настройки ->

«Показать подробный вывод во время компиляции»

кто занимается созданием плат с процессором ATmega? Нужен недорогой и рабочий вариант контроллера. Есть ардуинка, несколько модулей для нее и скетч рабочий, нужно все в одну плату соединить, но бюджет не больше 4,5 т.р /шт, и пока на очереди партия 6шт.

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

По идее если использовать программатор, и лить в него обычный ардуинокод — разницы 0.

Искал схемы и разводку под самодельную ардуинку. Из годного нашел только nanino. Может у кого есть готовые lay файлы? Хочется протравить себе пару платок)

некоторые участники направляют свои минусометы на пост «вопросов и ответов» по неизвестным мне причинам

встречный вопрос: нафига тебе этот пост в горячем?! ВиО посты набирают

20 рейта, зато 100+ камментов, не это ли показатель востребованности?

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

Ну например я специально подписался на сообщество ардуино что бы минусить все посты в нем. И не потому что посты плохие, вовсе не в этом дело. Просто я считаю ардуино — наебкой века. «Мы взяли процессор и запихнули его в свою плату, что бы вы могли подключить нашу плату к макетке, вместо того что бы сразу впихнуть проц в макетку». А с тонны проектов которые выдаются за серьезные и идут на конкурсы, мой пукан вообще улетает в небеса.

Так что не принимайте на свой счет. Посты хорошие, люди говно. (Перефразировал: © Народ то у нас хороший, да только вот люди говно).

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

С тем же успехом можно ломать твое лицо за то, что ты ездишь на готовой машине с усилителем рулевого управления, кондиционером и автоматом, вместо того, чтобы собрать ее самому из различных запчастей. И возмущаться на тему гонок стоковых машин.

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

И да — попробуй воткни ATmega1280 в макетку.

Я когда начинал, тож сначала на ардуино посмотрел, и за неимением возможности купить из китая готовый кит (в те года понятия не имел как это делается), собрал ардуино по схемам из интернета, пока собирал понял что оказывается проц то может без проблем работать и без всего этого вундер огромного обвеса, и что нахрен не упиралась эта ардуина когда можно проц вставить в макетку и получить все то же самое.

Конечно, можете минусить, я понимаю, что мое мнение расходиться с общественным. Но тем не менее, на вопрос откуда минуса в посте я дал ответ, хотя и понимал, что словлю минусов.

На счет же машин, это не то же самое. Машину покупают в 99% для того что бы просто ездить с тем или иным уровнем комфорта, и абсолютно не важно из чего она состоит, главное что она цель свою выполняет. А в случае плат — ими занимаются те, кто разрабатывают «машины» для тех кто будет на них «ездить». Повторюсь, я не имею ниче против проектов кому к примеру нужно че нить простенькое что можно собрать без пайки и сразу пользоваться, когда найти проектировщика будет сложнее чем сделать самому на коленке за пол часа, но у меня дико подгорает когда появляются «проектировщики», которые делают на ардуино сложные системы и идут с этим делом на конкурсы. Если возвратиться к примеру с машинами, то это скорее так: проектировщик автомобиля вместо того что бы самостоятельно сделать хороший продукт, тупо заимствует уже готовые решения, которые осталось только соединить и вуаля. Ой простите, кажется я привел пример автоваза, с которого, напомню, подгорает у многих именно по этой причине.
Нет, конечно сборка из кусочков это то же работа и она то же требует умений, однако нужно понимать где что использовать, так например собирать компьютер по транзистору, естественно не будет иметь смысла, или в том же вазе с нуля разрабатывать модель руля для какой нить бюджетной линейки авто.

Как перестать писать прошивки для микроконтроллеров и начать жить

  • ШДК
  • Статьи
    • Схемы
      • Arduino
      • Управление шаговыми двигателями
      • Металлоискатели
      • разное
      • для Авто
      • разное на микроконтроллерах
      • всё на таймере NE555
      • Конструктор схем
      • Осциллографы
      • Измерительная аппаратура
      • Роботы
      • Световые эффекты,управление светом
      • Термостат
      • Инверторы и преобразователи
      • Защиты от перепадов напряжения
      • Паяльные станции
      • Аудио
      • Дозиметры
      • Часы
      • Выключатели, переключатели,ИК,РФ
      • Таймеры
      • КУБ светодиодный
    • Программаторы
      • PIC microchip
      • AVR ATmega и ATtiny
      • Общее
    • Электрические двигатели
      • машины постоянного тока
      • машины переменного тока
    • Генераторы
      • генератора независимого возбуждения
      • синхронный генератор
    • Авто-инжектор
      • Элементы ЭСУД, описание
    • Законы электротехники
      • Основные законы из ТОЭ и др.
    • Конкурсные работы 2015
    • Конкурсные работы 2014
    • Конкурсный работы 2013
    • Конкурсные работы 2012
  • Скачать
    • Программирование
    • Электрические расчеты
    • Электрические программы
    • Справочник
    • Книги по релейной защите
    • Авто
    • Библиотека электромонтера
    • Журналы
      • Everyday Practical Electronics
      • Радио
      • Радиоаматор
      • Радиолюбитель
      • Радиоконструктор
      • Схемотехника
      • Радио Хобби
      • Радиомир
      • Ремонт и сервис
      • Электрик
      • Elektor Electronics
    • Разное
      • Книги, разные
      • Программы,разные
  • Ссылки
    • Сайты связанные с электричеством
    • Авто сайты
  • Видео
    • Самоделки
    • Обучение Arduino
    • дуга,разряд,пожар.
    • Обучающие видео ролики
    • P-CAD Schematic
    • РОБОТЫ
    • Техническое обслуживание компьютера
    • Изготовление печатных плат
  • Проекты
    • Заказать прошивку
    • Регистрация программистов
    • С миру по байту
  • Информация
    • О сайте
    • Реклама
    • Добавить статью
    • Обратная связь
    • Обмен банерами
  • Электроника из Китая
  • В помощь студенту
    • Электрические машины
    • Эксплуатация релейной защиты

При программировании не забывайте про константу( osccal ), которая записана в последней ячейке данных пика.

Оsccal — представляет собой 16-ти ричное значение калибровки внутреннего генератора МК, с помощью которого МК отчитывает время при выполнении своих программ.

При покупке микроконтроллера (МК) считайте с него данные и запишите константу на листочек или на микроконтроллер!

Это очень важно т.к. если удалите константу при следующем программировании, pic работать не будет либо будет, но не так как должен.

В МК старшего семейства константы нету, так, что не удивляйтесь.

На рисунке ниже показано место расположения этой константы:

Константа может не пригодится когда используется внешний кварц.

В процессе прошивки (когда нажали уже на кнопку «прошить») может (а может и не спросить) вылезти следущее сообщение (см. рис.ниже ), надо нажимать НЕТ. При использовании Icprog 1.06C (я ее использую) всегда спрашивает, заменить либо нет.

Когда вы загружаете прошивку в программу то в последней ячейке памяти выставляется «3FFF» т.к. в прошивке значение вашей константы не указано (она у каждого МК своя)!

Вот программа и спрашивает будете использовать константу «3FFF» или «3424».

Видео — как прошить PIC от начала до конца!

В микроконтроллерах PIC16F628, PIC16F628A, PIC16F630 константы нету, проверено на практике.

В PIC16F676 константа есть!

Видео о прошивке PIC16F676 . В видео продемонстрирован бит защиты, прошивка с ним и без него.

При использовании внешнего кварца (или RC) константа ненужна , можно в таких схемах использовать pic в которых была утеряна константа!

WDT — сторожевой таймер
PWRT — задержка для стабилизации генератора при вкючении питания
MCLR — использовать вход внешнего сброса микроконтроллера (reset)
BODEN — задейств-ть сброс при снижении напр. питания
CP — защитить код программы от считывания
CPD — защитить содержимое EEPROM от считывания

При написании программы для МК, программист, прежде всего, выставляет бит защиты, далее программа (исходник) компилируется (обычно в расширение .HEX) и зашивается в МК, следовательно в отличии от AVR, выставлять биты конфигурации при прошивке pic-ов НЕ НАДО !

В PIC предусмотрен бит защиты:

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

На рисунке ниже показан бит защиты и ошибка которая выскакивает после прошивки:

Если после прошивки, с использованием бита защиты, считать данные с МК то вот, что получится:

Если утеряна константа, что делать?

Способ первый: пробывать поставить от другого МК константу или наугад 🙂 , мы знаем, что все константы начинаются на 34 далее две цифры xx которые надо угадать.

Способ второй: порадует владельцев программатора PICKit 2, появилось приложение для восстановления калибровочной константы для PIC16F630/676, читать тут.

С целью оказания помощи тем, кто потерял константу и хочет ее восстановить, оставляйте в комментариях тип МК и константу.

Для прошивки можно использовать бесплатную программу, наверное самая популярная — icprog, версия последняя 1,6В.

Скачать icprog106B + описание русс + драйвер для ХР (вообще и без него работает, но могут быть нюансы. )

Настраивается программа индивидуально к каждому программатору в отдельности!

голоса
Рейтинг статьи
Читать еще:  Lada 2107 › Logbook › Удаление ИММО из эбу Bosch 797
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector