В то время как я хотел бы погрузиться в различные доступные методы программирования, кто-то еще уже есть. Вот руководство Дина Камера по AVRFreaks, AVR Методы программирования :
Существует много способов программирования микроконтроллеров AVR. Поскольку многие люди время от времени спрашивают о разных, я решил изложить их здесь, чтобы на их вопросы можно было быстро и эффективно ответить. Пожалуйста, прости меня, если я пропустил метод или сделал ошибку.
МЕТОД 1: В системном программировании (ISP)
Поддерживается: подавляющим большинством AVR (см. Сообщения ниже).
Поддерживаемые программисты: AVRISP MKI / II, JTAG MKII, STK500, STK600, Dragon, клоны AVRISP, программаторы AVR910, AVRONE
В системном программировании это, пожалуй, самый распространенный метод программирования флэш-памяти, EEPROM, предохранителя и блокировочных байтов всей линии AVR. Интернет-провайдер может программировать AVR с чрезвычайно высокой тактовой частотой (при условии, что целевой AVR работает на высокой частоте, а программист поддерживает его) и является методом выбора почти для всех любителей AVR. На рынке имеется множество клонов AVRISP и программистов AVR910 в дополнение к простым самостоятельным ключам, которые подключаются к параллельному порту вашего компьютера.
Недавние новые конструкции ключей могут использовать последовательный порт компьютера, однако, как показывают отдельные примеры, этот метод чрезвычайно медленный из-за технических ограничений.
ISP требует, чтобы целевой AVR работал с тактовой частотой, по крайней мере, в четыре раза превышающей тактовую частоту ISP. Это распространенная ошибка и источник путаницы для многих новичков в AVR.
МЕТОД 2: JTAG
Поддерживается: см. Справку AVRStudio Tools для поддержки устройств MKI и MKII.
Поддерживаемые программисты: JTAG-ICE, JTAG-ICE MKII, Dragon, JTAG-ICE клоны, AVRONE, STK600 (только программирование)
Технически JTAG - это система отладки, а не метод программирования. Тем не менее, интерфейс JTAG позволяет программировать AVR, который его поддерживает.
JTAG - это встроенный в систему инструмент отладки, который позволяет вам манипулировать и проверять состояние поддерживаемого AVR во время его работы в цепи. JTAG позволяет пользователю в любой момент остановить выполнение, манипулирование внутренними регистрами AVR и многое другое.
Официальные устройства JTAG-ICE от ATMEL были заменены JTAG-ICE MKII, который поддерживает более новые и более широко поддерживаемые протоколы отладки DebugWire в диапазоне AVR, а также программирование с помощью метода ISP (см. Выше).
Клоны JTAG-ICE доступны по низким ценам, однако их ограниченная совместимость только с несколькими AVR ограничивает их полезность. Независимо от этого, если ваш AVR поддерживает интерфейс JTAG, JTAG-ICE остается очень хорошим и эффективным способом и программистом отладки.
МЕТОД 3: DebugWire
Поддерживается: многими меньшими AVR
Поддерживаемые программисты: JTAG-ICE MKII, Dragon, AVRONE
Опять же, DebugWire - это скорее отладочная, нежели программный интерфейс, но ее можно использовать для загрузки программ в поддерживаемые AVR. Интерфейс dW использует один вывод AVR (линия / RESET) для всех коммуникаций, что делает его идеальным для устройств AVR с низким числом выводов.
СПОСОБ 4: Загрузчик
Поддерживается: большинство новых AVR
Поддерживаемые программисты: н / д
Опять же технически не метод программирования. Загрузчик - это небольшая программа AVR, которая находится в настраиваемом пользователем зарезервированном разделе обычной флэш-памяти. Загрузчики используют функции автоматической модификации флэш-памяти, доступные в более новых AVR, чтобы позволить AVR программировать себя через программные данные, загруженные из внешнего источника. Загрузчики могут получать свои данные из любого места (например, с внешней флэш-памяти или SD-карты), однако наиболее распространенный тип загрузчика взаимодействует с ПК через последовательный порт RS-232 AVR.
Загрузчики ограничены в том, что они занимают место на флэш-памяти (ограничивая размер флэш-памяти, доступной для приложения AVR), и они не могут изменять плавкие вставки AVR.
Загрузчики широко доступны в Интернете для скачивания, но они страдают от проблемы «курица и яйцо»; вам нужен другой тип программатора, перечисленного здесь, для программирования в загрузчике. Обычно это решается созданием простого ключа параллельного порта (см. Раздел ISP) или покупкой AVR, уже предварительно загруженного загрузчиком (например, платой AVRButterfly).
МЕТОД 5: Высоковольтное параллельное программирование (HVPP)
Поддерживается большинством не-TINY AVR (с исключениями).
Поддерживаемые программисты: STK500, STK600, Dragon, доморощенные ключи, AVRONE
Параллельное программирование высокого напряжения - это метод программирования, который редко используется из-за хлопот, которые он требует для настройки. Несмотря на это, программирование HVPP обычно используется для «воскрешения» AVR, чьи плавкие сращения были неправильно сконфигурированы с помощью другого метода программирования.
И STK500, и Dragon поддерживают HVPP. Во время HVPP вывод мишени / RESET повышается до необычно высокого значения 12 В, которое задействует внутреннюю схему параллельного программирования. Вывод / RESET - это единственный вывод AVR (на AVR, поддерживаемых HVPP), который можно безопасно поднять до этого уровня.
Вы можете создать свой собственный ключ HVPP, используя такие онлайн-планы, как этот.
МЕТОД 6: Последовательное программирование высокого напряжения (HVSP)
Поддерживается: многими TINY AVR (с исключениями).
Поддерживаемые программисты: STK500, STK600, Dragon, доморощенные ключи, AVRONE
HVSP аналогичен HVPP, за исключением того, что передача данных выполняется последовательно, а не параллельно. Это альтернативный метод программирования, используемый на многих AVR серии TINY, у которых недостаточно контактов для HVPP.
МЕТОД 7: PDI
Поддерживается: XMEGA AVR
Поддерживаемые программисты: STK600, AVRONE, JTAG MKII, Dragon, AVRISP MKII
PDI - это новый интерфейс программирования, основанный на протоколе debugWire, для линейки AVR XMEGA. В настоящее время он не используется ни на каких других 8-битных микроконтроллерах AVR.
МЕТОД 8: ТПИ
Поддерживается: 6-контактный TINY AVR (ATTINY10 и т. Д.)
Поддерживаемые программаторы: STK600, Dragon, AVRISP MKII
TPI - это очень крошечный программный интерфейс для новой линейки AVR TINY с ограниченными выводами, например, 6-контактный ATTINY10. Как и dW, TPI использует линию устройства / RESET как часть интерфейса связи, но на этом сходство заканчивается. Поскольку TINY AVR размером с пинту не имеют встроенной схемы отладки, протокол TPI использует новый программный интерфейс из трех контактов в полудуплексном протоколе. Поскольку линия / RESET должна быть поднята до + 12 В для программирования, когда установлен вывод RSTDSB устройства, это в настоящее время поддерживается только более новой платой программирования STK600.
Бонус FAQ раздел!
Какой метод самый лучший?
Универсального «лучшего» метода не существует. Программирование ISP простое и чрезвычайно популярное, однако все вышеперечисленные методы будут работать. Два режима программирования высокого напряжения (в зависимости от того, что применимо к вашему устройству) являются наиболее многофункциональными, поскольку они позволяют ремонтировать AVR, у которого неправильно настроены предохранители. Тем не менее, эти методы очень сложно настроить, поэтому большинство пользователей используют ISP.
Я сделал ключ параллельного порта. Могу ли я использовать его с AVRStudio?
Боюсь, что нет. AVRStudio не может взаимодействовать с какими-либо «тупыми» ключами - для этого требуется интеллектуальное программирующее устройство, содержащее сам микроконтроллер, для расшифровки передаваемого протокола связи. Простые ключи без микроконтроллера должны быть «разбиты на биты» (т. Е. Соответствующие сигналы, смоделированные через ключ через компьютер).
Так мой ключ бесполезен тогда?
Нет. Вы все еще можете программировать с помощью самодельного ключа с помощью программного обеспечения стороннего разработчика. AVRDude - это хорошая, известная бесплатная утилита командной строки, которая входит в пакет WinAVR.
Какие есть варианты, если я хочу, чтобы мой программист работал с AVRStudio?
Выберите программиста, который использует протокол, поддерживаемый AVRStudio. Это может быть простой протокол «AVR910» (устарел) или пользовательская реализация протокола, используемого STK500 / AVRISP. Обратите внимание, что этим программистам требуется микроконтроллер, что приводит к ситуации «ловушка-22». Эту проблему можно решить, предварительно запрограммировав AVR программиста на момент приобретения с помощью соответствующей прошивки, или запрограммировав AVR с помощью загрузчика.
Хорошо, я хочу использовать загрузчик. Как я могу получить это там в первую очередь ?!
Чтобы использовать загрузчик в AVR, сначала необходимо запрограммировать загрузчик. Если у вас нет существующего программиста (даже простого немого ключа будет достаточно для начального программирования), вы можете альтернативно приобрести AVR, предварительно запрограммированные с помощью загрузчик от нескольких поставщиков.
Atmel также производит демонстрационную плату Butterfly, в которой MEGA169 AVR поставляется с загрузчиком, совместимым с AVR-Studio.
Помогите! Я испортил предохранители и измотал свой AVR, используя ISP!
Наиболее распространенной ошибкой является замена предохранителей выбора часов на неверную настройку. Попробуйте установить внешние часы на вывод AVR XTAL1 и посмотрите, поможет ли это.
В противном случае, если возможно, используйте один из высоковольтных методов. Это исправит любую неверную конфигурацию, включая те, которые связаны с источником тактовых импульсов, поскольку высоковольтные методы предоставляют AVR свои собственные тактовые частоты для программирования.
Как мне взаимодействовать с моим программистом?
Какое программное обеспечение вы используете для взаимодействия с вашим программистом, зависит от типа программиста, который вы используете.
Простые «тупые» ключи требуют стороннего программного обеспечения, такого как PonyProg или AVRDude. Это могут быть инструменты командной строки или графического интерфейса - посмотрите в Интернете, и вы подберете тот, который соответствует вашим потребностям.
Программисты и загрузчики на основе протокола AVR910 могут использоваться в AVRStudio. В меню «Инструменты» выберите опцию «AVRProg», чтобы открыть экран графического интерфейса для взаимодействия с вашим программистом. В качестве альтернативы сторонние инструменты, такие как AVRDude, также совместимы с AVR910.
Официальные инструменты тесно интегрированы в AVRStudio, особенно в случае вариантов отладки (JTAG / Dragon / etc). В меню «Инструменты AVRStudio» выберите подменю «Program AVR ...» и нажмите «Подключить». В новом окне выберите ваш инструмент и его интерфейс подключения и нажмите кнопку ОК.
Как и в случае с немыми ключами и программистами AVR910, официальные инструменты могут также использоваться со сторонним программным обеспечением.
(C) Дин Камер, 2009. Все права защищены. Не для воспроизведения на любом сайте, кроме AVRFreaks.net, без предварительного явного разрешения.