Клон программатора AVRISP MKII для микроконтроллеров AVR
Мегаклон программатор AVRISP MKII для микроконтроллеров AVR
Если есть желание сэкономить на покупке оригинального устройства, но получить полную функциональность, то предлагаем схему мегаклона программатора AVRISP mkII.
Программатор, собранный по этой схеме, позволяет работать с программами AVR Studio и новыми версиями Atmel студии.
Для сборки нам потребуются следующие элементы:
- Микроконтроллер AT90USB162 – 1шт.
- Светодиоды на 2,25В, 15 мА, цвет красный – 7 шт.
- Стабилизатор напряжения для поверхностного монтажа, входное напряжение до 15 В, выходное 3,3 В, 1000 мА – 1 шт.
- Кварцевый генератор 16 МГц – 1 шт.
- Диод SS12 – 1 шт.
- SMD конденсаторы 18 пкФ – 2 шт., 100 нФ – 2 шт., 10 мкФ – 3 шт.
- SMD резисторы 10 кОм – 1 шт. , 220 Ом – 8 шт., 1 кОм – 3 шт., 470 Ом – 7 шт., 20 Ом – 2 шт.
- SMD предохранитель 63 В, 500 мА – 2 шт.
- Резистор с выводами 0,25 Вт, 220 Ом – 3 шт., 10 кОм – 1 шт.
- Разъемы мини-USB – 1 шт., ВН10 – 1 шт.
- Кнопки PS с фиксацией, 30 В – 2 шт.
- Кнопки SWT-5 без фиксации, 12 В, 50 мА – 4 шт.
Плюсом микросхемы является наличие встроенного загрузчика, что позволяет не использовать другой программатор для прошивки. Для обновления прошивки используется программа FLIP от Atmel. Скачивая программу здесь, обратите внимание на наличие встроенного JRE. Рекомендуем устанавливать программу с included JRE во избежание проблем.
С чего начать изучение FPGA Altera?
Программа есть, теперь нужна прошивка.
Вы можете скачать готовую прошивку c сайта разработчика LUFA. Вам потребуется:
- Перейдя по
ссылке, нажмите на кнопку «Clone or Download» и скачайте сборку в корень не системного диска. Распакуйте архив lufa-master.
- Вам потребуется компилятор MinGW, установщик mingw-get-setup.exe скачать можно
здесь.
- Программа bc-1.06-2.exe, которую можно взять
здесь.
- Запустить инсталлятор MinGW и выбрать для установки msys-base и mingw32-base, проинсталлировать выбранные пакеты.
- Установить bc-1.06-2.exe.
- Перейти Свойства системы -> Дополнительно -> Переменные среды и внести в переменную PATH для пользователя и для системы C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin (пример для Atmel Studio 7, установленной с настройками по умолчанию) и C:\MinGW\msys\1.0\bin. Не забывайте каждую запись разделять точкой с запятой (;).
- Перейти в распакованный архив с прошивкой \Projects\AVRISP-MKII\makefile и поставить нужные вам значения (пример):
ARCH = AVR8
BOARD = USBTINYMKII
F_CPU = 16000000 (или 8000000 для 8 МГц)
Другие значения можно не трогать.
- Теперь нужно поправить конфигурационный файл \Projects\AVRISP-MKII\AppConfig.h. Вносим строку #define RESET_TOGGLES_LIBUSB_COMPAT (для переключения режимов совместимости).
- В Atmel студии вызвать командную строку (у меня в седьмой версии Tools-CommandPromt). Написать cd (диск куда распакован архив):\lufa-master\ Projects\AVRISP-MKII\make all
Прошивка готова!
Жизненный цикл импортных электронных компонентов
Пора переходить к записи её в программатор. Для этого запускаем программу FLIP.
- Загружаем прошивку через File -> Load HEX File…
- Выбираем микроконтроллер через Device -> Select (или пиктограмму) AT90USB162.
- Зажимаем кнопки HWB и Reset Programmer на устройстве.
- Подключаем программатор к usb порту ПК.
- Нажимаем на пиктограмму USB.
- Нажимаем Run.
По окончанию прошивки нажать Start Application, программатор готов к работе.
Важное замечание для новых версий Atmel студии. Установка сервис-пака или других версий приводит к тому, что программатор не может подключиться к МК. Связано это с версией прошивки, зашитой в файле VProtocolParams.h. Актуальный на сегодня проект на LUFA содержит объявление #define FIRMWARE_VERSION_MINOR 0x18. При необходимости обновите значение, перекомпилируйте и залейте прошивку.
Инсталляция драйвера программатора AVRISP mkII под win7
Для работы программатора необходим драйвер usb порта, поставляемый с программной средой Atmel STUDIO. Поэтому придётся установить её на компьютер.Версия Atmel студии 6.2 работает на операционных системах Win7 и выше (включая серверные версии от 2008 SR2), 32- и 64-битных. Минимальные требования к аппаратной части ПК невысоки и заключаются в наличии процессора с частотой 1.6 Гц и ОЗУ 1 Гб для 32-битных, 2 Гб для 64-битных операционных систем. Загрузить актуальную сборку студии или драйвер можно здесь.
Драйвер для USB идёт в комплекте с Atmel студии и должен быть установлен до подключения программатора к ПК. Посмотрим, как это выглядит на примере Win7 + AtmelStudio 7. Запуск и сам процесс установки стандартен для Windows-приложений, и при подготовке к инсталляции появляется такое окно.
Перед новой установкой рекомендуется удалить предыдущую (или следующую) версию среды программирования.
Ещё один момент – драйвера Atmel не имеют цифровой подписи, а для Win7 её наличие обязательно, иначе драйвер не будет установлен.
Чтобы не тратить кучу времени на переустановку программы и выявление причин проблемы, а гарантировано достигнуть успеха с первой попытки, предлагаем следующий алгоритм действий:
- Использовать чистую ОС для установки.
- Отключить проверку цифровой подписи драйверов. Для этого нажать комбинацию клавиш Win+R и ввести в строку gpedit.msc. Далее открываете параметр, как на рисунке ниже.
- Два раза щёлкнув по параметру «Цифровая подпись драйверов устройств», выбрать в открывшемся окне «Отключить» и подтвердить кнопкой «ОК». Перезагрузить компьютер.
- Запустить установку Atmel студии от имени Администратора.
Если вы будете использовать программную среду AVRDude, то придётся поменять драйвер для подключения. Делается это быстро при помощи программы Zadig, являющейся менеджером USB драйверов. Установив программу, выберите в списке AVRISP mkII и замените на libusb-win32 (v1. 2.6.0).
Инструкция по использованию программатора AVRISP mkII
Порядок работы из среды Atmel студия описан в соответствующих руководствах и не отличается для оригинального устройства и мегаклона.
Кратко рассмотрим органы управления и индикации программатора.
- Кнопка S5 Reset Programmer перегружает устройство.
- Кнопка S1 Reset ISP/TPI перегружает интерфейсы соответствующие программирования.
- Кнопка S2 Reset PDI служит для перезагрузки интерфейса PDI.
- А вот кнопка S3 HWB, как уже упоминалось ранее, необходима при обновлении прошивки устройства.
- Кнопка S4 PDI on необходима для включения PDI интерфейса.
- Для выбора напряжения 3,3/5 В служит кнопка S6.
Индикаторы отображают следующие состояния:
- D1 – интерфейс PDI задействован.
-
D2 – выбрано напряжение 5 В.
D3 – наличие питающего напряжения (от USB).
D4 – ошибка связи USB.
D5 – готовность интерфейса USB.
D6 – наличие напряжения целевого устройства.
D7 – статус работы (в порядке).
- Есть возможность подключать несколько программаторов к одному компьютеру.
- Каждая копия Atmel студии может работать только с одним программатором. Для работы нескольких, запускайте необходимое количество копий программы.
- Чтобы среда разработки не пыталась постоянно обновлять версию прошивки, удалите файл \tools\AVRISPmkII\avrispmkii_fw.zip из директории программы.
- Недостаточное питание от usb порта. Попробуйте сменить порт или использовать usb хаб с автономным питанием (500 мА на выходе).
- Частые сбои при программировании могут быть обусловлены высокой частотой ISP. Для устранения неполадки понизьте частоту ISP в настройках Atmel студии.
Заявка на поставку импортных микросхем
Кроме этого, мы выполняем полный комплекс услуг по организации проверки и испытаниям электронных компонентов импортного производства, включая входной контроль, проверку на работоспособность, а также специальные проверки, механические и климатические испытания.
Если вы заинтересованы в работы с нами, то заполните форму по ссылке: www.el-ra.ru/zayavka
Краткая инструкция по прошивке микроконтроллеров AVR c помощью Avrdude-GUI (пример использования, заливка hex-файла)
Скачиваем (СКАЧАТЬ AVRDude + GUI) и разархивируем папку AVRdude-GUI в Program Files (можно в любую другую), установка не требуется.
- Запускаем avrdude-GUI.exe, указываем путь к пакету AVRDude «avrdude.exe File»:
- Выбираем свой программатор и порт «Programmer» «Port» (список поддерживаемых программаторов внизу статьи).
У меня вот такой:Я выбираю следующую настройку программатора:Если у вас один из самых распространенных: Китайских ISP программаторов (USBASP USBISP AVR), то необходимо выставить следующие настройки: - Выбираем свой микроконтроллер «Device». В последнее время я использую ATMEGA328P, а точнее, плату на Алиэкспресс Arduino Nano v 3.0, предварительно удалив стандартный загрузчик arduino (кнопка «Chip Erase»), после чего получаю чистый микроконтроллер.
- В «Command Line Option» вписываем настройки. Я использую ключ –F (список поддерживаемых команд в конце статьи):
- В графе «Fuse» можно считать или записать фьюз-биты (используйте калькулятор фьюзов AVR). Для проверки связи с программатором и микроконтроллером, нажимаем «Read», внутри блока «Fuse». Если всё нормально, должны считаться биты подключенного микроконтроллера:
- В разделе «Flash» выбираем файл прошивки (hex файл), затем нажимаем «Erase-Write-Verify», после чего произойдёт очистка Flash памяти микроконтроллера, запись прошивки в контроллер, верификация данных (программа зависает ненадолго, это нормально, зависит от размера файла):
Вот и всё, прошивка залита в чип.
Видеоверсия статьи
Список поддерживаемых программаторов
Перечень поддерживаемых микроконтроллеров AVR фирмы Atmel
Список поддерживаемых команд (поле «Command Line Option»)
Ссылки по теме
Официальные страницы и описание:
Адрес официального сайта программы
Адрес официального сайта пакета GUI
Википедия
Вам также может понравиться:
Что такое загрузчик и как мне его разработать?
Загрузчик — это программа, которая запускается в микроконтроллере для программирования. Он получает новую информацию о программе извне через некоторое средство связи и записывает эту информацию в память программ процессора.
Это отличается от обычного способа загрузки программы в микроконтроллер, который осуществляется с помощью специального оборудования, встроенного в микроконтроллер для этой цели. На PIC это SPI-подобный интерфейс. Если я правильно помню, AVR используют Jtag, или, по крайней мере, некоторые из них. В любом случае, для этого требуется какое-то внешнее оборудование, которое шевелит контакты программирования прямо для записи информации в память программы. HEX-файл, описывающий содержимое памяти программы, создается на компьютере общего назначения, поэтому это оборудование подключается к компьютеру с одной стороны и специальным программным выводам микропроцессора с другой. Моя компания, помимо прочего, делает программистов PIC второстепенными, поэтому я хорошо знаком с этим процессом на PIC.
Важным моментом внешнего программирования через специализированное оборудование является то, что оно работает независимо от существующего содержимого памяти программ. Микроконтроллеры запускаются со стертой памятью программы или в неизвестном состоянии, поэтому внешнее программирование — единственный способ получить первую программу в микро.
Если вы уверены в программе, которую хотите загрузить в свой продукт, и ваши объемы достаточно высоки, у вас могут быть микросхемы программы производителя или дистрибьютора. Чип припаивается к плате, как и любой другой чип, и устройство готово к работе. Это может быть подходящим для чего-то вроде игрушки, например. Как только прошивка завершена, она в значительной степени готова и будет выпускаться в больших объемах.
Если ваши объемы ниже или, что более важно, вы ожидаете продолжения разработки прошивки и исправления ошибок, вы не хотите покупать предварительно запрограммированные чипы. В этом случае на плату устанавливаются чистые микросхемы, и микропрограмма должна быть загружена на микросхему как часть производственного процесса. В этом случае аппаратные линии программирования должны быть как-то доступны. Это может быть через явный разъем или контактные площадки pogo, если вы хотите создать тестовый прибор. Часто такие продукты должны быть протестированы и, в любом случае, откалиброваны, поэтому дополнительные затраты на запись программы в процессор обычно минимальны. Иногда, когда используются небольшие процессоры, в процессор сначала загружается специальное тестовое программное обеспечение. Это используется для облегчения тестирования и калибровки устройства, тогда настоящая прошивка загружается после того, как аппаратное обеспечение, как известно, хорошо. В этом случае существуют некоторые соображения по проектированию схемы, позволяющие обеспечить достаточный доступ к строкам программирования для процесса программирования, но также не слишком усложнять схему. Для получения более подробной информации об этом, см. Мойревизия внутрисхемного программирования .
Пока все хорошо, и загрузчик не нужен. Тем не менее, рассмотрите продукт с относительно сложной микропрограммой, которую вы хотите обновить на месте или даже позволить конечному пользователю обновить. Вы не можете ожидать от конечного пользователя наличия гаджета для программиста или умения правильно его использовать, даже если вы его предоставили. На самом деле один из моих клиентов делает это. Если вы купите их специальную опцию настройки поля, вы получите одного из моих программистов с продуктом.
Однако в большинстве случаев вы просто хотите, чтобы клиент запустил программу на ПК и волшебным образом обновил прошивку. Именно здесь начинается загрузчик, особенно если ваш продукт уже имеет коммуникационный порт, который может легко взаимодействовать с ПК, таким как USB, RS-232 или Ethernet. Клиент запускает программу для ПК, которая говорит с загрузчиком уже в микро. Это отправляет новый двоичный файл в загрузчик, который записывает его в память программы и затем запускает новый код.
Звучит просто, но это не так, по крайней мере, если вы хотите, чтобы этот процесс был надежным. Что если произойдет ошибка связи и новая прошивка будет повреждена к тому времени, как она поступит в загрузчик? Что делать, если во время загрузки отключается питание? Что делать, если в загрузчике есть ошибка и она сама себя теряет?
Упрощенный сценарий состоит в том, что загрузчик всегда запускается из перезагрузки. Он пытается общаться с хозяином. Если хост отвечает, то он либо сообщает загрузчику, что у него нет ничего нового, либо отправляет ему новый код. По мере поступления нового кода старый код перезаписывается. Вы всегда включаете контрольную сумму с загруженным кодом, чтобы загрузчик мог определить, не повреждено ли новое приложение. Если нет, он остается в загрузчике постоянно, запрашивая загрузку, пока что-то с действительной контрольной суммой не будет загружено в память. Это может быть приемлемо для устройства, которое всегда подключено и, возможно, если на хосте выполняется фоновая задача, которая отвечает на запросы загрузчика. Эта схема не подходит для устройств, которые в основном автономны и только изредка подключаются к главному компьютеру.
Обычно простой загрузчик, как описано выше, не является приемлемым, так как не существует отказоустойчивого. Если новый образ приложения не получен в целости, вы хотите, чтобы устройство продолжало запускать старый образ, а не быть мертвым, пока не будет выполнена успешная загрузка. По этой причине в прошивке обычно есть два специальных модуля: загрузчик и загрузчик. Загрузчик является частью основного приложения. Как часть регулярного общения с хостом, может быть загружено новое изображение приложения. Это требует отдельной памяти от основного образа приложения, такого как внешняя EEPROM, или использования более крупного процессора, чтобы половина пространства памяти программы могла быть выделена для хранения нового образа приложения. Загрузчик просто записывает полученный новый образ приложения где-то, но не запускает его. Когда процессор перезагружен, что может произойти по команде с хоста после загрузки, загрузчик работает. Теперь это полностью автономная программа, которая не нуждается во внешних коммуникационных возможностях. Он сравнивает текущие и загруженные версии приложения, проверяет их контрольные суммы и копирует новое изображение в область приложения, если версии различаются, а новая контрольная сумма изображения проверяется. Если новый образ поврежден, он просто запускает старое приложение, как и раньше.
Я сделал много загрузчиков, и нет двух одинаковых. Не существует загрузчика общего назначения, несмотря на то, что некоторые микроконтроллерные компании хотят, чтобы вы верили. Каждое устройство имеет свои требования и особые обстоятельства при работе с хостом. Вот только некоторые из конфигураций загрузчика и иногда загрузчика, которые я использовал:
- Базовый загрузчик. Это устройство имеет последовательную линию и будет подключено к хосту и включаться по мере необходимости. Загрузчик запустился после перезагрузки и отправил несколько ответов на запрос загрузки на хост. Если программа загрузки была запущена, она ответит и отправит новое изображение приложения. Если он не отвечает в течение 500 мс, загрузчик отказывается и запускает существующее приложение. Поэтому для обновления прошивки сначала необходимо запустить приложение обновления на хосте, а затем подключить и включить устройство.
- Загрузчик программной памяти. Здесь мы использовали следующий размер PIC, который имел в два раза больше памяти для программ. Память программы была примерно разделена на 49% основного приложения, 49% нового образа приложения и 2% загрузчика. Загрузчик запускается из перезагрузки и копирует новый образ приложения в текущий образ приложения при правильных условиях.
- Внешнее изображение EEPROM. Как и # 2, за исключением того, что внешняя ЭСППЗУ использовалась для хранения нового образа приложения. В этом случае процессор с большим объемом памяти также был бы физически больше и находился бы в другом подсемействе, в котором не было необходимого количества периферийных устройств.
- TCP загрузчик. Это был самый сложный из них. Большой PIC 18F был использован. Последняя 1/4 памяти или около того содержала загрузчик, который имел свою собственную полную копию сетевого стека TCP. Загрузчик запустился после сброса и попытался подключиться к специальному серверу загрузки через известный порт с предварительно настроенным IP-адресом. Это было для больших установок, где всегда был выделенный сервер для всей системы. Каждое маленькое устройство будет регистрироваться на сервере загрузки после сброса и получит новую копию приложения в зависимости от ситуации. Загрузчик перезапишет существующее приложение новой копией, но запустит его, только если проверена контрольная сумма. Если нет, он вернется на сервер загрузки и попытается снова.
Поскольку загрузчик сам по себе был сложным фрагментом кода, содержащим полный сетевой стек TCP, его также необходимо было обновлять на месте. Они сделали так, чтобы сервер загрузки загрузил специальное приложение, единственной целью которого было перезаписать загрузчик после его запуска, а затем перезагрузить компьютер, чтобы запустить новый загрузчик, что заставило бы сервер загрузки отправить последнее изображение основного приложения. Технически сбой питания в течение нескольких миллисекунд, которые требовались специальному приложению для копирования нового образа поверх загрузчика, был бы неисправимым отказом. На практике этого никогда не было. Мы были в порядке с очень маловероятным шансом этого, так как эти устройства были частями больших установок, где уже были люди, которые занимались бы обслуживанием системы, что иногда означало замену встроенных устройств по другим причинам в любом случае.
Надеемся, что вы видите, что есть ряд других возможностей, каждая из которых имеет свои собственные соотношения риска, скорости, стоимости, простоты использования, времени простоя и т. Д.
Заказ проектов | MEGA-AVR
Вам необходимо разработать определенное устройство? Спроектировать плату или написать прошивку? А может нужно сделать проект схемы? Тогда вы обратились по адресу!
Здесь вы можете оформить заказ с помощью обратной связи, заполнив специальную форму внизу страницы или оформить заявку через приложение Вконтакте.
Если вы решили подать заявку, то необходимо составить ТЗ, указав максимально подробно все нюансы проекта. Чем детальнее вы опишите будущее устройство, тем быстрее получите свой заказ!
Прошивки пишу исключительно для МК AVR, семейства Attiny и Atmega , и этого достаточно для большинства решаемых задач!
Пример оформления заявки: «Необходима прошивка для микроконтроллера AVR для выполнения функции контроля температуры воды в баке и поддержки её на уровне 35 градусов, с точностью +2/-2.»
Необходимо указать какой максимальной суммой Вы располагаете для реализации проектирования для того, чтобы не возникло проблем со стоимостью работы.
Цена для каждого проекта индивидуальна.
Примечания к заказам:
1.Цена может изменяться как в меньшую, так и в большую сторону — всё зависит от сложности проекта!
2. При выполнении срочных проектов стоимость увеличивается в два раза.
3. Сборкой плат не занимаюсь, но малые проекты можно обсудить.
4. Конечная цена зависит от сложности ТЗ (при написании прошивки и составлении схемы) и от количества деталей на плате (при проектировании печатной платы) и многих других параметров.
Инструкции по оплате здесь.
Выходные форматы:Печатные платы: в программе Proteus 7 и выше (до 8 версии).
Схемы : в программе Proteus 7 и выше(до 8 версии).
Прошивки: формат HEX.
Исходники: в CodeVisionAVR 2.04 или файл «с».
Сроки выполнения так же зависят от сложности ТЗ и количества заказов на данный момент, и составляет от 2-3 дней до 2-3 недель!
Оплата:1. Переводом на карту Приват Банка;
2. Переводом на WebMoney кошельки: E735896495756, Z257563353919, R194019946651, U122753882170 .
3. Международными системами перевода Western Union и MoneyGram.
Оплата только по завершению заказа. После оплаты заказ сразу же поступит на ваш электронный адрес.
Внимание! Не забывайте сообщать мне на электронный адрес: время, сумму оплаты и имя отправителя (если перевод с карты), а также способ оплаты. В случае оплаты через терминал прилагать чек!
Вы также можете оформить заявку через приложение Вконтакте.
Форма для заказа проектов.
И в заключении…
Тот кто ищет всегда найдёт! И если чего то очень хочешь то в конечном счёте всё-равно получишь результат!
ПРОГРАММАТОР AVR ЧЕРЕЗ USB
Недавно собрал первый программатор в своей жизни. Решил поделится своей поделкой с вами, уважаемые посетители сайта ELWO.RU, так как результат работы устройства порадовал. Программатор работает через USB — это будет удобно тем, у кого на компьютере отсутствуют порты RS-232 и LPT, либо по другой причине. Он собран на микроконтроллере at90usb162 и буфере 74HC245, можно заменить практически на любой другой, с поддержкой переключения выходов в третье состояние. Есть возможность переключения между 3.3 в и 5 в за счет стабилизатора на 3.3 в, его можно не устанавливать, но если будете прошивать контроллеры требующие питания 3.3 в, то его нужно установить. Печатную плату можно переделать под не обходимые размеры и компоненты.
При правильной сборке и исправных компонентах проблем с программатором быть не должно. Если же вы собираетесь прошивать контроллер для этого программатора прямо через USB при помощи утилиты FLIP, то скорее всего загрузчик прошитый в контроллер будет адекватно работать только на частоте 8 мгц. Для этого выкладываю две прошивки для кварца 16 мгц и для кварца 8 мгц (в архиве).
Теперь перейдем непосредственно к прошивке контроллера и установки драйвера. Весь процесс был проделан на операционной системе windows XP, пройдет ли успешно процесс прошивки и установки драйвера на windows 7 не знаю, так как у меня установленная XP, но вы можете проверить и сообщить на форуме о результате.
После того, как вы собрали программатор и проверили плату на наличие капель олова, обрывов дорожек и верности установки компонентов делаем следующее: подключите его к разъему USB система распознает его как AT90USB162 и запросит драйвер устройства, драйвер необходимо поместить в корень диска С например в Program Files после установки драйвера для AT90USB162 его необходимо прошить, прошивок две на 8 и 16 мгц. с каким кварцем запустился программатор на ту частоту и нужно брать прошивку, у меня на частоте 8 МГц устройство распознавалось как не известное, после установки кварца на 16 МГц устройство распозналось как AT90USB162 и мне удалось установить драйвер. Прошивать нужно через программу Atmel Flip, программу прилагаю. Порядок операций:
1.) Запускаем программу FLIP, Нажимаем на кнопку с изображением микросхемы
2.) В открывшемся окне выбираем тип микроконтроллера (AT90USB162), Нажимаем ОК.
3.) Жмём кнопку с изображением USB разъёма, В открывшемся списке выбираем USB
4.) Жмём на верхнее меню File выбираем в списке Load HEX File
5.) В открывшемся окне выбираем файл прошивки его желательно так же поместить в корень диска С.
6.) Убеждаемся, что галочки в левом поле окна программы выставлены как на картинке:
Нажимаем кнопку Run, которая находится под галочками (на скриншоте обведена синим цветом). Программа начнёт прошивать донгл (длительность прошивки 3-4 секунды). После прошивки нажимаем кнопку Start Aplication в правом поле программы. Система найдёт устройство JUNGO -AVRISP MKII прошивка окончена. Если же при первом подключение программатора система видит устройство как не опознанное вместо AT90USB162 попробуйте поменять местами D+ и D-.
Если и это не помогло, припаяйте конденсатор 0.1 мкф между землей и 24 ногой контроллера. Программатор использую в программе AVR Studio 4.19 с дрогой версией программы может работать не корректно. Плату поместил в старую мышь, на фотографии отсутствует буфер.
Уверен, что кому-нибудь будет полезна эта информация. В архиве на форуме прошивка, драйвер, печатная плата в формате lay и принципиальная схема программатора. Схему собрал и проверил: serh7000
Форум по микроконтроллерам
148-Автоматический загрузчик HEX-файлов для AVR микроконтроллеров – обновление gcUploader
Обновил программу-загрузчик HEX-файлов — gcUploader.О самой программе прочитать (и скачать саму программу) можно в соответствующей статье, а здесь я напишу о том, что добавил нового. Изменений немного – всего два, но эти изменения значительно расширяют область применения данной программы.
Первое, что я сделал – это заменил AVRDUDE на свежую версию 6.3. Вообще, AVRDUDE можно самому менять, закидывая в папку с программой нужную версию (это может понадобиться, если у Вас какая-то особенная Дудка для работы с Вашим программатором).
Второе и главное, что я сделал (и что давно обещал) – это добавил в программу возможность самому прописывать нужные Ардуины. Более того, теперь программа умеет работать не только с Ардуинами, но и с любыми микроконтроллерами и программаторами поддерживаемыми Дудкой. Реализуется эта возможность путём прописывания строки параметров для AVRDUDE в файле gcUploader.ini
Как добавить поддержку новой платы (микроконтроллера, программатора)?
Для этого нужно открыть для редактирования файл конфигурации gcUploader.ini (это можно сделать прямо из gcUploader, нажав иконку плюсика возле окна выбора типа Ардуины) и добавить всего две строки.
Первая – это имя новой платы, вторая – командная строка для AVRDUDE.
Например, для Arduino Mega 2560 эти строчки будут выглядеть следующим образом:
[Mega 2560]
avrdude_param= -F -v -p m2560 -c wiring -P %1 -b 115200 -D -U flash:w:»%2″:i
После перезагрузки gcUploader, в списке выбора Type появится новое устройство.
По первой строке все понятно – это просто имя, а вот со второй немного сложней – для ее описания нужно знать, как работает AVRDUDE.
Работа AVRDUDE с командной строки.
Итак, AVRDUDE – это консольная программа, все параметры которой передаются из командной строки при запуске программы.
Вот так, например, выглядит строка запуска avrdude.exe, которая прошьет в Arduino UNO прошивку C:\avr\mine.hex
avrdude.exe -F -v -p m328p -c arduino -P com1 -b 115200 -D -U flash:w:»C:\avr\mine.hex»:i
Любые варианты взаимодействия с микроконтроллерами и программаторами прописываются при помощи соответствующих опций и их параметров.
Опций и параметров у AVRDUDE много. Здесь я опишу лишь самое основное, необходимое для понимания работы. Если нужно более полное описание — читайте официальную документацию, либо статьи в интернете, например, вот здесь хорошо написано.
Из всего множества опций, нас, прежде всего, интересует следующие (выделил жирным из примера выше):
-F -v -p m328p -c arduino -P com1 -b 115200 -D -U flash:w:»C:\avr\mine.hex»:i
—P – задает порт, через который работает программатор
в gcUploader.ini эта опция прописывается вот так —P %1
вместо ключа %1, при старте прошивки, подставится выбранный Вами порт.
—b – задает скорость порта
—p – задает тип микроконтроллера, который нужно прошить, например: m328p=ATmega328, m168=ATmega168, m8=ATmega8 и т.д. (см. в документации).
—c – задает тип программатора, например: для внутреннего загрузчика Ардуин – это, чаще всего, arduino, но может быть и другое — avr109, wiring. А вообще можно установить любой из поддерживаемых avrdude программаторов (см. в документации, или в таблице ниже)
—U flash:w:»C:\avr\mine.hex«:i – задает HEХ-файл, который нужно записать в микроконтроллер
в этой опции
flash – тип записываемой памяти
w – запись прошивки в МК (можно еще r – прочитать и v – проверить)
C:\avr\mine.hex – путь к файлу
i – тип файла HEХ (может еще быть r — raw binary; e — ELF (Executable and Linkable Format) и тому подобное – читайте доку)
в gcUploader.ini эта опция прописывается вот так —U flash:w:»%2″:i
вместо ключа %2, при старте прошивки, подставится выбранный Вами HEX-файл.
Итоговый набор строк для gcUploader.ini (для текущего примера) будет следующим:
[UNO]
avrdude_param=-F -v -p m328p -c arduino -P %1 -b 115200 -D -U flash:w:»%2″:i
В заключение приведу, для справки, наборы опций для разных типов Ардуин:
Плата | Микроконтроллер | Опции | ||
-p | -c | -b | ||
Arduino Uno | ATmega328 | m328p | arduino | 115200 |
Arduino Duemilanove | ATmega328 | m328p | arduino | 57600 |
Arduino Duemilanove | ATmega168 | m168 | arduino | 19200 |
Arduino Dicimila | ATmega168 | m168 | arduino | 19200 |
Arduino Nano | ATmega328 | m328p | arduino | 57600 |
Arduino Nano | ATmega168 | m168 | arduino | 19200 |
Arduino Mega 2560 | ATmega2560 | m2560 | wiring | 115200 |
Arduino Mega | ATmega1280 | m1280 | arduino | 57600 |
Arduino Leonardo | ATmega32U4 | m32u4 | avr109 | 57600 |
Arduino Micro | ATmega32U4 | m32u4 | avr109 | 57600 |
Arduino Mini | ATmega328 | m328p | arduino | 115200 |
Arduino Mini | ATmega168 | m168 | arduino | 19200 |
Arduino Pro Mini (5V, 16MHz) | ATmega328 | m328p | arduino | 57600 |
Arduino Pro Mini (5V, 16MHz) | ATmega168 | m168 | arduino | 19200 |
Arduino Pro Mini (3.3V, 8MHz) | ATmega328 | m328p | arduino | 57600 |
Arduino Pro Mini (3.3V, 8MHz) | ATmega168 | m168 | arduino | 19200 |
Arduino NG | ATmega168 | m168 | arduino | 19200 |
Arduino NG | ATmega8 | m8 | arduino | 19200 |
Если Вам нужно прошить что-то отличное от Ардуин, использовать какой-то другой программатор – меняйте значения соответствующих опций и прописываете строку в gcUploader.ini
Для типов микроконтроллеров (опция –p) не буду приводить таблицу – она очень большая (см. в документации), а вот для программаторов (опция –c) будет интересно посмотреть:
Программатор | Опция -c |
ABCmini Board, aka Dick Smith HOTCHIP | abcmini |
Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ | alf |
Плата Arduino, протокол сходен с STK500 1.x | arduino |
AT-ISP V1.1 кабель программирования для AVR-SDK1, http://micro-research.co.th/ | atisp |
Atmel AppNote AVR109 Boot Loader | avr109 |
Atmel Low Cost Serial Programmer | avr910 |
Atmel AppNote AVR911 AVROSP (an alias for avr109) | avr911 |
FTDI MPSSE (FT2232 etc.) поддержка bitbang | avrftdi |
Atmel AVR ISP (псевдоним для stk500) | avrisp |
Atmel AVR ISP mkII (псевдоним для stk500v2) | avrisp2 |
Atmel AVR ISP mkII (псевдоним для stk500v2) | avrispmkII |
Atmel AVR ISP, running a version 2.x firmware (an alias for stk500v2) | avrispv2 |
Bascom SAMPLE programming cable | bascom |
Altera ByteBlaster | blaster |
Brian Dean’s Programmer, http://www.bsdhome.com/avrdude/ | bsd |
Atmel Butterfly Development Board | butterfly |
C2N232I, reset=dtr sck=!rts mosi=!txd miso=!cts, | c2n232i |
Direct AVR Parallel Access cable | dapa |
serial port banging, reset=rts sck=dtr mosi=txd miso=cts | dasa |
serial port banging, reset=!dtr sck=rts mosi=txd miso=cts | dasa3 |
AVR Dragon in debugWire mode | dragon_dw |
AVR Dragon in high-voltage serial programming mode | dragon_hvsp |
AVR Dragon в режиме ISP | dragon_isp |
AVR Dragon в режиме JTAG | dragon_jtag |
AVR Dragon in (high-voltage) parallel programming mode | dragon_pp |
Dontronics DT006 | dt006 |
ERE ISP-AVR | ere-isp-avr |
Клон STK200 от Frank’а, http://electropol.free.fr/spip/spip.php?article15 | frank-stk200 |
Кабель программирования Futurlec.com | futurlec |
Atmel JTAG ICE mkI, running at 115200 Bd | jtag1 |
Atmel JTAG ICE mkI, running at 19200 Bd | jtag1slow |
Atmel JTAG ICE mkII (default speed 19200 Bd) | jtag2slow |
Atmel JTAG ICE mkII, running at 115200 Bd | jtag2,jtag2fast |
Atmel JTAG ICE mkII in ISP mode. | jtag2isp |
Atmel JTAG ICE mkII in debugWire mode. | jtag2dw |
Atmel JTAG ICE mkI, running at 115200 Bd | jtagmkI |
Atmel JTAG ICE mkII (default speed 19200 Bd) | jtagmkII |
Crossbow MIB510 programming board | mib510 |
Jason Kyle’s pAVR Serial Programmer | pavr |
Picoweb Programming Cable, http://www.picoweb.net/ | picoweb |
Pony Prog STK200 | pony-stk200 |
design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts | ponyser |
Lancos SI-Prog, http://www.lancos.com/siprogsch.html | siprog |
Steve Bolt’s Programmer | sp12 |
STK200 | stk200 |
Atmel STK500, probing for either version 1.x or 2.x firmware | stk500 |
Atmel STK500 high-voltage serial programming mode, только для прошивок версии 2.x | stk500hvsp |
Atmel STK500 parallel programming, только прошивка версии 2.x | stk500pp |
Atmel STK500, с версией прошивки 1.x | stk500v1 |
Atmel STK500, с версией прошивки 2.x | stk500v2 |
Atmel STK600 в режиме ISP или в PDI режиме для устройств ATxmega | stk600 |
Atmel STK600 high-voltage serial programming mode | stk600hvsp |
Atmel STK600 в режиме параллельного программирования (parallel programming) | stk600pp |
USBasp, http://www.fischl.de/usbasp/ | usbasp |
USBtiny — простой USB программатор, http://www.ladyada.net/make/usbtinyisp/ | usbtiny |
Xilinx JTAG кабель | Xil |
serial port banging, reset=dtr sck=rts mosi=txd miso=cts | gromov |
Маленький бонус.
Добавил в AVRDUDE поддержку простого COM-программатора Громова. Теперь Вы можете использовать из программы и его.
Например, ниже строки, которые необходимо добавить в gcUploader.ini для прошивки микроконтроллера ATmega328p (тот, что стоит в Ардуинах UNO, Nano, Pro mini) при помощи программатора Громова, через ISP-разъем.
[Gromov m328p]
avrdude_param=-F -v -p m328p -c gromov -P %1 -b 115200 -D -U flash:w:»%2″:i
Зачем это нужно, шить таким способом Ардуину? Например, затем, чтобы восстановить слетевший загрузчик!
(Visited 7 442 times, 1 visits today)
прошивка AVR через программатор Microchip PicKit2
Если вы, как и я, используете в своих конструкциях как микроконтроллеры PIC, так и чипы AVR, было бы удобно для программирования обеих линеек микросхем использовать один и тот же программатор. Кстати, не так давно Microchip приобрела компанию Atmel и фактически сейчас обе линейки выпускаются одной и той же компанией. Посему можно предположить окончание многолетнего холивара на тему что же лучше. Оба типа контроллеров имеют свои недостатки и преимущества, но это тема для другой статьи или видеоролика.
Случилось так что когда-то давно я, как и многие другие, начал знакомство с миром микроконтроллеров с какой-то конструкции на микроконтроллере PIC16F84. Через много лет я купил свой первый фабричный программатор для контроллеров PIC. Это был фирменный (оригинальный) PicKit2, который я привез с международной конференции Microchip, которая проходила в Питере в 2009 году.
Оригинальный PicKit2
Купил я его тогда на конференции с хорошей скидкой в 50 процентов. Сейчас можно купить клон такого программатора на Алиэкспресс очень дешево и он будет работать не хуже оригинального. Или, в крайнем случае сделать клон программатора самому, например как описано в этой статье.
Китайский клон PicKit2. Можно заказать здесь
Нужно сказать, что программатор PicKit2 уже не поддерживается компанией Microchip (в плане обновления прошивки или управляющей программы) но это не мешает ему отлично работать и по сей день. Сейчас Microchip продвигает более новую версию — PicKit3, который внешне выглядит почти также как и вторая версия. С третьим я пока не имел дела, для моих задач мне вполне хватает второго.
Обычно если мне нужно запрограммировать микроконтроллер Pic я использую программатор PicKit2 с его родной программой PicKit2.61, а если я хочу прошить, например, контроллер ATMega16, то делаю это через программатор USBAsp который можно купить в Китае за полтора доллара.
Китайский UsbAsp
Однако сейчас появилась возможность использовать для прошивки как PIC так и AVR один программатор — Microchip PicKit2 или его клон, с использованием Бесплатной программы AVRDude, которая сейчас поддерживает PicKit2. Несмотря на то, что AVRDude — это консольное приложение и в чистом виде требует от пользователя навыков работы с командной строкой, но сейчас есть очень хорошая программа — оболочка для AVRDude, которая называется AVRDUDESHELL и позволяет очень удобно работать с AVRDude, не заморачиваясь с командной строкой. Фактически, работая в AVRDUDESHELL вы можете вообще не знать о существовании AVRDude. Скачать программу AVRDUDESHELL можно здесь. Сама AVRDude уже входит в состав AVRDUDESHELL и отдельно ее устанавливать не нужно.
Программатор PicKit2 имеет шести контактный разъем. Для программирования микроконтроллеров PIC используются первые пять контактов. Шестой — дополнительный, при программировании пиков он не задействован.
Разъем программирования PicKit2
Назначение выводов:
VPP / MCLR
VDD напряжение питания целевого устройства
VSS земля
ICSPDAT / PGD
ICSPCLK / PGC
AUX
Для программирования контроллеров AVR нам потребуется сделать специальный шлейф и использовать все шесть контактов PicKit2. Шлейф делаем в соответствии с таблицей ниже:
Шлейф может выглядеть например так:
Для работы подключаем PicKit2, шлейфом соединяем его с программируемым устройством (или адаптером микроконтроллера с Zif панелькой), Запускаем AVRDUDESHELL и выбираем в списке программаторов нужный нам PicKit2. Загружаем файл прошивки и программируем контроллер. Всё предельно просто.
Возможно вам потребуется USB драйвер программатора PicKit2. ВЫ можете скачать его по это ссылке. Он входит в состав родной программы Microchip PicKit2 V2.61. На сайте Microchip вы ее уже не найдете, но можете скачать здесь (см. ниже). Эта небольшая программка пригодится вам и для прошивки контроллеров PIC.
Загрузки:
Программа AVRDUDESHELL
Программа Microchip PicKit2 V2.61 со встроенным USB драйвером
Как прошить новую прошивку BrickPi с помощью программатора AVR
Как прошить новую прошивку с помощью программатора AVR
Это руководство по обновлению прошивки BrickPi с помощью программатора AVR. Если у вас нет программатора AVR, вы можете увидеть другое наше руководство по обновлению прошивки BrickPi с помощью Arduino здесь.
Необходимые инструменты
Вам понадобится:
Перед тем, как начать
- Убедитесь, что на вашем компьютере установлен avrdude.Если вы установили на свой компьютер программное обеспечение Arduino, значит, у вас установлен avrdude. В Windows вам может потребоваться установить его в ключевые слова PATH, чтобы вы могли управлять avrdude из любого каталога.
- Пользователи Mac OSX: Загрузите и установите AVR для Mac OSX по адресу http://www.obdev.at/products/crosspack/index.html
- Пользователи Mac OSX: сделайте свои файлы .sh исполняемыми с помощью команды «chmod 777 upload1.sh»
- Подключите ваш AVR Programmer к вашему компьютеру.В разделе «Устройства и принтеры» вы должны увидеть доступный программатор AVR.
Проверьте, правильно ли определяется программатор AVR
- Загрузите командные файлы и прошивку с Github здесь. Выберите каталог с прошивкой, которую вы хотите установить, и загрузите содержимое этого каталога.
- Включите BrickPi. Подключите аккумулятор к BrickPi.
Программирование прошивки BrickPi
Есть два микроконтроллера для программирования на BrickPi.Начните с микроконтроллера 1, а затем повторите следующие шаги для микроконтроллера 2. Убедитесь, что вы программируете правильный микроконтроллер (UC1 против UC2)!
- Подключите 6-контактный разъем 3X2 к программатору AVR. Вам не нужно паять это на место на плате BrickPi: посадочное место должно плотно прилегать к контактам заголовка.
- Подключите заголовок программатора провайдера к порту Programmer 1 на BrickPi.
Расположение двух микроконтроллеров и их программных соединений.
- Убедитесь, что кабель программатора правильно выровнен. Ниже приведено изображение программатора, подключенного к микроконтроллеру 1 (UC1) BrickPi. Нажмите на картинку ниже, чтобы рассмотреть ее поближе.
Кабель для программирования правильно подключен к BrickPi. Это программирующий микроконтроллер 1 (UC1). Не обращайте внимания на черный провод, он не нужен программатору AVR.
- Если программатор правильно подключен к BrickPi, светодиод на программаторе должен гореть зеленым.Если светодиод на вашем программаторе горит зеленым светом, запустите операцию с файлом .BAT ( BrickPiFW_UC1 — MK2 Programmer ), чтобы начать программирование.
- Для каждого микроконтроллера существует 6 последовательностей: 3 записи через предохранитель, две записи в память и одна запись в EEPROM. Вам нужно будет нажимать возврат после каждой последовательности.
Успех! Прошивка запрограммирована!
После программирования первого микроконтроллера (UC1) повторите шаги 1–4 выше для второго микроконтроллера (UC2) на BrickPi.Измените заголовок ISP на « Programmer 2 » на BrickPi и используйте сценарий под названием « BrickPiFW_UC2 — MK2 Programmer ». Теперь у вашего BrickPi должна быть новая прошивка.
AVR Basics: чтение (и запись) содержимого флэш-памяти
С нашего форума приходит интересный вопрос:
«Можно ли загрузить содержимое ATmega168 / 328, по существу сделав его резервную копию, чтобы потом каким-то образом его можно было восстановить?
Например: Допустим, я потерял исходный код очень полезной программы, которая в настоящее время находится на 328, но мне нужно временно прошить ее другим скетчем, а затем восстановить этот исходный скетч.Это было бы полезно в том случае, если чип был припаян непосредственно к плате — большой беспорядок, который нужно было бы попытаться заменить.
Возможно ли это каким-то образом, возможно, изменив программиста ISP? »
Ответ таков: да, действительно, это возможно, за некоторыми исключениями, о которых стоит упомянуть. А иногда даже очень полезно.
Считывание данных с флэш-памяти выполняется просто программатором AVR ISP, например USBtinyISP, с использованием avrdude из командной строки.
На вашем компьютере должна быть установлена копия набора инструментов AVR или, по крайней мере, avrdude.Для Mac (Crosspack) и Windows (MHV AVR Tools) доступны простые установщики, которые включают это программное обеспечение вместе с другими инструментами с открытым исходным кодом для разработки AVR. Также доступны пакеты Linux для разработки AVR.
Чтение флеш-памяти
Чтобы прочитать содержимое флэш-памяти вашего AVR, вам просто нужно подключить программатор вашего ISP к целевой плате и запустить соответствующую команду avrdude для чтения флэш-памяти. Например, для «выгрузки» содержимого ATmega328P вы можете использовать команду:
avrdude -p m328p -P usb -c usbtiny -U flash: r: flash.корзина: r
Где «atmega328p» — это имя чипа, «» — это точно , как указано в документации avrdude, «-P usb» означает, что мы используем программатор, подключенный к USB, а «usbtiny» — это тип программатора ( опять же из списка в документации).
Настоящее сердце команды — последняя часть, -U flash: r: ”flash.bin”: r . Это говорит avrdude прочитать содержимое флэш-памяти («flash: r»), сохранить его в файл с именем «flash.bin »и задает формат («: r »), в данном случае необработанный двоичный файл.
Пишем флеш
Чтобы записать содержимое этого файла, «flash.bin», мы используем аналогичную команду, только теперь указывающую ей записать содержимое «flash: w…»:
avrdude -p m328p -P usb -c usbtiny -U flash: w: flash.bin
Опять же, точная командная строка должна быть адаптирована к вашему конкретному чипу, программатору и имени файла.
Приложения
Итак, когда такой метод может быть полезен? Да, возможно, вы потеряли исходный код части программного обеспечения, но, возможно, это эзотерический случай.На самом деле мы обнаружили, что этот метод очень полезен в повседневном использовании как своего рода файл «образа диска».
Вы можете, например, прочитать и записать полное содержимое флэш-памяти устройства Arduino, которое имеет как загрузчик Arduino, так и программу поверх него. Затем развертывание дополнительной копии этой программы становится таким же простым, как выполнение одной команды для записи флеш-файла. Для «производственного программирования», то есть создания множества клонов программы AVR, он имеет дополнительные преимущества, заключающиеся в том, что он быстрый и надежно согласованный, по сравнению с индивидуальной компиляцией и установкой микропрограмм для каждого устройства.
Предупреждения
Как мы упоминали ранее, есть пара исключений, о которых стоит упомянуть:
1.) Можно намеренно заблокировать содержимое флэш-памяти, так что содержимое не может быть прочитано *. Вы можете сделать это, установив биты блокировки AVR в соответствии со значениями, перечисленными в таблице данных, и биты блокировки не могут быть сброшены, кроме как путем стирания всего устройства.
* Существует известных способов обойти это , поэтому, пожалуйста, не считайте биты блокировки достаточной защитой, если вы беспокоитесь о том, что кто-то украдет ваш код в качестве средства промышленного шпионажа.
2.) Эти команды, как написано, только создают резервную копию содержимого флэш-памяти (программной) . Считывание значений байтов EEPROM или предохранителей может быть выполнено аналогичным образом. Вы можете узнать больше о параметрах командной строки avrdude в документации avrdude или в руководстве на Adafruit.
Для производственного программирования один оператор avrdude может устанавливать байты fuse, а также записывать во флеш-память, или make-файл может быть написан, чтобы дать несколько операторов avrdude, для упорядочивания порядка записи flash и fuse и / или битов блокировки.
AVR MCU Testing | Блог безумных разработчиков
Сравнение тестирования в программно-аппаратных проектах
Копировать ссылку
Тестирование программного обеспечения выполняется на стандартизированном оборудовании на высоком уровне абстракции. Стандартная среда и готовые среды тестирования позволяют получать однозначные результаты тестирования независимо от оборудования, на котором работает продукт.
Ситуация с тестированием микроконтроллеров (и аппаратных устройств в целом) проще, но все же довольно запутанная.Тестировать проще, потому что микроконтроллеры в основном предназначены для простых задач. Примерами таких задач являются мигание светодиода, сбор данных с датчиков, простая обработка данных, управление выводом на дисплей, связь с другими периферийными модулями. Основная трудность заключается в том, что среда, в которой выполняется программа, зависит от модели и производителя контроллера. Прошивка работает на низком уровне. Учитывая строгие требования к производительности, тестирование становится сложной задачей.
Какое тестирование я могу использовать в зависимости от задачи?
Копировать ссылку
Есть три основных варианта запуска тестов во встроенных системах.Перечислим их все:
- Локальное тестирование (на хост-машине).
Преимущества: тесты запускаются и работают быстро, нет необходимости в доступе к устройству. Недостатки: ограниченная зона тестирования. Он не будет работать с внешними периферийными устройствами. Хорошим примером использования этого метода является тестирование независимого от платформы вычислительного алгоритма, для которого требуется набор данных от датчиков. Тестировать такой алгоритм на реальном источнике данных было бы очень неудобно.Намного лучше подготовить набор данных заранее. Вы можете сделать это, используя небольшую программу-регистратор для ваших необработанных данных датчика. - Тестирование MCU в симуляции.
Преимущества : не требуется устройство для тестирования. Вы можете запрограммировать свою собственную среду для MCU.
Недостатки: ограниченная точность моделирования MCU и окружающей среды, сложность создания и настройки такого эмулятора. - Тестирование прошивки на реальном MCU.
Достоинства: можно работать с периферией МК, прошивка будет работать так же, как и в продакшене.
Недостатки : нужно иметь готовое устройство со всей периферией и электронными компонентами. Циклы тестирования займут много времени, так как вам придется постоянно перепрограммировать MCU. Автоматизировать тестирование с помощью этого метода очень сложно.
В данной статье мы проанализируем первые два метода как наиболее перспективные для автоматизации.
Локальное тестирование
Копировать ссылку
Локальные тесты очень хороши для тестирования тех частей прошивки, которые не зависят от окружающей среды.Примерами могут быть любые вычислительные алгоритмы, различные контейнеры, списки, очереди, деревья, протоколы обмена высокого уровня, конечные машины и т. Д.
Рассмотрим пример для микроконтроллеров AVR с возможностью локального тестирования платформенно-независимых частей прошивки.
Тестирование прошивки на совместимость с AVR MCU
Копировать ссылку
Для AVR MCU наиболее удобной и производительной средой разработки является Atmel Studio .К сожалению, эта среда не является кроссплатформенной и доступна только для Windows.
Для ясного понимания примеров в этом проекте я использую инструменты с открытым исходным кодом. Я полагаюсь на VSCode на Ubuntu для исходного кода, AVR GNU Toolchain для компиляции и связывания прошивки, gcc для компиляции тестов и симулятора.
Процесс сборки проекта (компиляция, компоновка, прошивка) выполняется с помощью утилиты make . Такой подход позволяет мне автоматизировать выполнение тестов и загрузку прошивки в целевую систему.
Для примера рассмотрим прошивку микроконтроллера Atmega1284 , реализующую функциональность простого термометра.
Измерение температуры выполняется путем считывания напряжения на делителе напряжения (который включает в себя термистор), преобразования значения АЦП в значения температуры и отображения его на ЖК-экране 1602 ( hd44780 ).
Функция связи с внутренней и внешней периферией может выполняться через регистры микроконтроллера.
Тем не менее, в нашей прошивке есть функциональность, которую необходимо протестировать (преобразование значения АЦП в температуру с последующим отображением ее на светодиодном экране).
Рассмотрим пример нативного тестирования функциональности прошивки.
Ссылка на репо:
Крошечный загрузчик AVR / PIC +: около
Что это?
Это загрузчик для устройств Microchip PIC.Загрузчик — это прошивка, работающая на устройстве PIC, которая позволяет пользователю отправлять собственную прошивку без необходимости программист.
Этот загрузчик состоит из:
- прошивок для многих устройств PIC и AVR (эта прошивка требует для отправки во флэш-память микроконтроллера с программатор, только один раз)
- программное обеспечение для ПК, которое обменивается данными через последовательный подключение (только, за исключением PIC32, для которого USB прошивка существует), с прошивкой загрузчика в микроконтроллерное устройство и отправьте на него программу пользователя.
Откуда это?
Этот загрузчик основан на «Tiny PIC Bootloader» (http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm). сделанный Клаудиу Чикулита.Ему отдельное СПАСИБО !!! Программное обеспечение для ПК
основано на «Tiny
Pic Bootloader for GNU / Linux «, написанный на python Ферезви.
Что он умеет?
Он может программировать:- Atmel:
- NXP
- Микрочип:
- PIC10
- PIC12
- PIC16
- PIC18
- PIC24
- dsPIC30
- dsPIC33
- PIC32
- с легкими доработками прошивки Bootloader для новых устройства
- без необходимости что-либо изменять: ни ваш код, ни скрипт компоновщика, ни переназначение сброса / прерывания векторов на новые локации и т. д…
- через графический интерфейс или командную строку
- с автоматическим сбросом по последовательному выводу RTS
- с автоопределением правого COM-порта и скорости передачи (только если автоматический сброс на последовательном выводе RTS включен и правильно подключен к устройству PIC)
- с проверкой HEX-кода, чтобы избежать отправки программы из другое семейство устройств в вашем PIC (например: предотвратить запрограммировать PIC16 «.шестнадцатеричный «в устройстве PIC18)
- с возможностью отладочных сообщений
Что дальше?
Исправлены некоторые ошибки и небольшие дополнения.Лицензирование
Это программное обеспечение находится под лицензией Creative Commons Attribution Некоммерческая лицензия »:- , можно использовать дома бесплатно
- можно использовать на работе бесплатно
- вы можете поделиться им бесплатно, но эта лицензия должна остаются прежними
- вы можете изменить его по своему усмотрению, но эта лицензия должна остаются прежними
- вы НЕ МОЖЕТЕ продать его, даже если вы его модифицировали
myAVR…… Интернет-адрес с микроконтроллерами для обучения и самообучения. Без кропотливого сбора аппаратных и программных компонентов от разных производителей и поставщиков, ты можешь получить
Мы специализируемся на новичках и предлагаем специализированные недорогие наборы для начинающих, которые уже существуют, что вам нужно для программирования микроконтроллера. Доступны все необходимые аппаратные и программные компоненты. В комплект входит
Наши изделия производятся в Германии и изготавливаются вручную. Для нас важно качество и высокая стоимость. Программное обеспечение, которое входит в состав большинства наших продуктов, содержит множество фундаментальных структур, примеры программ. и помощь. Он доступен на немецком языке и предназначен для наших продуктов.
5 причин, почему вы должны выбрать вас за нас, если вы хотите программировать микроконтроллеры:
Что такое myAVR?myAVR — это линейка продуктов SiSy Solutions GmbH. который был разработан в 2004 году. Наша цель — предлагать микроконтроллеры для учебы и хобби. Вы найдете микроконтроллер в каждой области. Вот несколько примеров использования микроконтроллера:
У нас есть оборудование, программное обеспечение, литература, аксессуары и компоненты — все совместимо! У нас есть специальный комплект для начинающих, желающих изучить программирование микроконтроллеров, который включает в себя все необходимые продукты для запуска (например,грамм. укомплектованная плата с подключением USB или LPT, комплект кабелей USB или LPT, программная рабочая панель, учебник по программированию микроконтроллеров и др.). Для нас очень важно качествоВот почему все наши продукты имеют маркировку CE, потому что они проверены CE.Подробнее о качестве здесь … У нас есть что-то для всехПлата myAVR MK1 или MK2 предназначен для изучения программирования микроконтроллеров. потому что он оснащен некоторыми типичными устройствами ввода и вывода и прост в использовании.Пользователь будет представлен «Lehrbuch Mikrocontroller-Programmierung» (учебник программирования микроконтроллеров) в программировании микроконтроллеров на C и ассемблере шаг за шагом с много картинок и проверенных примеров. Захватывающие эксперименты обеспечивают диверсификацию и демонстрируют, например, задание
микроконтроллера в металлоискателе проекта
(«Проект Металлдетектор») или как реализовать
температурная система с микроконтроллером в проекте TWI |
Откройте для себя — Yamaha USA
глобальная навигация глобальная навигация
- Продукты
- Фортепиано
- Клавишные инструменты
- Гитары, басы и усилители
- Барабаны
- Латунь и деревянные духовые инструменты
- Струны
- Ударные
- Маршевые орудия
- Синтезаторы и инструменты для создания музыки
- Музыкальные лаборатории
- Аудио и видео
- Профессиональное аудио
- Приложения для iOS и Android ™
- Объединенные коммуникации
- Акции
- Поиск дилеров
- Откройте для себя
- Музыкальное образование
- Дом Поклонения
- Поддержка
- Свяжитесь с нами
- Обновления прошивки / программного обеспечения
- Часто задаваемые вопросы
- Библиотека руководств
- Информация о гарантии
- Регистрация продукта
- Службы поддержки
- маг.
- Продукты
Продукты
- Фортепиано
- Клавишные инструменты
- Гитары, басы и усилители
- Барабаны
- Латунь и деревянные духовые инструменты
- Струны
- Ударные
- Маршевые орудия
- Синтезаторы и инструменты для создания музыки
- Музыкальные лаборатории
- Аудио и видео
- Профессиональное аудио
- Приложения для iOS и Android ™
- Объединенные коммуникации
- Акции
- Поиск дилеров
- Откройте для себя
Откройте для себя
- Музыкальное образование
- Дом Поклонения
- Поддержка
Поддержка
- Свяжитесь с нами
- Обновления прошивки / программного обеспечения
- Часто задаваемые вопросы
- Библиотека руководств
- Информация о гарантии
- Регистрация продукта
- Службы поддержки
- маг.
Искать на сайте отправить
ИскатьМарлин 2.0 использование программной памяти функцией на 8-битных платах AVR — Crosslink 3D
Это список дополнительных функций или кандидатов на включение / отключение для освобождения памяти в Marlin 2.0 для 8-битных плат AVR. Иногда каждый байт может иметь значение, сможете ли вы собрать прошивку или нет.
В общем, микропрограмму можно значительно уменьшить (~ 5%), просто добавив некоторые директивы компилятора в ваш файл platformio.ini для начала, как в этой статье. Затем вы можете выполнить дополнительную оптимизацию, как описано ниже.В более новых версиях прошивки Marlin есть настройки среды, называемые «melzi_optimized», которые уже содержат вышеупомянутые оптимизации, поэтому вам не нужно делать их самостоятельно.
Каждая строка показывает, сколько памяти необходимо для компиляции функции. Фактические размеры байтов могут измениться с более новыми версиями Marlin или более новыми компиляторами, поэтому принимайте их как приблизительные.
Текущие исследования показывают, что минимальный размер Marlin 2.0 на 8-битном AVR, как и на Ender 3 (процессор на базе ATMega1284p), составляет около 119408 байт из 130048 байт максимально доступного пространства (если вы оставите SDSUPPORT включенным).Это верно, если установлен загрузчик optiboot. Таким образом, у вас обычно будет 11000 байт для дополнительных функций (см. Подробный список ниже).
Вы можете использовать до 131072 байтов программной памяти (в результате 12024 байтов для дополнительных функций), если вы не используете загрузчик, а загружаете прошивку напрямую с помощью устройства программирования, такого как TinyUSBISP или USPASP. Также Arduino UNO, используемый в качестве программиста ISP, будет делать то же самое.
Так что выбирайте с умом, какие функции вы хотите включить, или переключитесь на процессор / архитектуру, которые предлагают больше доступной памяти для программ (дополнительные ссылки на альтернативы будут добавлены в ближайшее время).
Пример расчета
Предположим, вы хотите включить MESH_BED_LEVELING с помощью LCD_BED_LEVELING и RESTORE_LEVELING_AFTER_G28 на Ender 3 для ручного выравнивания сеточного слоя:
байтов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ender 3 Исходный размер микропрограммы (конфигурация по умолчанию) | 124398 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Доступная программная память | 5650 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LCD_BED_LEVELING требуемая память | 1652 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RESTORE_LEVELING_AFTER_G28 требуемая память | 16 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сумма необходимой дополнительной памяти | 900_16 3756 | h) | 3410 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Освобожденная память из-за отключения SHOW_CUSTOM_BOOTSCREEN (в Configuration.h) | 764 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Окончательное использование памяти | 129632 (99,7%) | 9049 Вывод
Строка # | Название функции | Размер скомпилирован (байты) | Комментарий |
---|---|---|---|
292 | AUTOTEMP | 1470 | Отключено для экономии памяти при печати, но качество печати. |
1011 | POWER_LOSS_RECOVERY | + 3010 | Требуется функция SDSUPPORT |
1116 | Поддержка SDCARD_READONLY | -2000 | только для чтения карты SD.Отключает возможность записи на SD-карту, поэтому загрузка gcode и восстановление после потери питания работать не будут. |
1068 | SCROLL_LONG_FILENAMES | + 202 | Отключите, если вы можете жить с длинными именами файлов, не прокручивая на дисплее |
1415 | LIN_ADVANCE | дополнительную информацию о Linear Advance см. в документации Marlin). | |
1478 | DISABLE_M503 | -1500 | Отключает команду M503, которая сообщает текущие значения SRAM.Если ваш принтер настроен и вам нужно больше памяти, отключите это. |
1479 | EEPROM_CHITCHAT | 638 | Отключить для экономии памяти. Это нужно только для просмотра сообщений EEPROM при подключении к последовательной консоли. |
1491 | ARC_SUPPORT | + 3410 | Не используется большинством слайсеров, отключите для экономии памяти |
2766 | NO_VOLUMETRICS | — 612 | , если вы не используете функции выдавливания|
3099 | NO_WORKSPACE_OFFSETS | -1566 | Удалите M428, G92 вернется к Marlin 1.0 поведение |
Список переключателей функций в Configuration.h и их потребление памяти, если ВКЛЮЧЕНО . Знак «плюс» ( + ) означает, что для включения этой функции требуется на БОЛЬШЕ памяти. Минус ( — ) означает, что включение этой функции УМЕНЬШАЕТ использование памяти .
Строка № | Название функции | Размер скомпилирован (байты) | Комментарий |
---|---|---|---|
74 | STRING_CONFIG_H_AUTHOR_ | ||
Может быть отключено | |||
92 | SHOW_CUSTOM_BOOTSCREEN | + 764 | Может быть отключено |
95 | CUSTOM_377 AUTO_STATUS_SCREEN_IMAGE 9037 9037 11357 9037 FIX_MOUNTED_PROBE (емкостные, индуктивные датчики…) | + 14408 | Единственный способ включить это, кажется, отключив SDSUPPORT |
1177 | AUTO_BED_LEVELING_BILINEAR с датчиком BLTOUCH | + 15758 | |
SDSUPPORT | MESH_BED_LEVELING | + 7738 | Включите функцию выравнивания сетки вручную, LCD_BED_LEVELING — еще одна дополнительная функция, если вам нужно меню ЖК-дисплея для настройки. S1 после G28, чтобы восстановить сетку перед печатью (дополнительную информацию о команде M420 см. В документации Marlin). |
1284 | LCD_BED_LEVELING | + 1652 | Удобство выравнивания сетки с помощью ЖК-экрана. В противном случае используйте команды G29. (см. документацию Marlin для G29) |
1292 | LEVEL_BED_CORNERS | + 636 | Полезно, если вы хотите сохранить ручное выравнивание станины, но делайте это, не перемещая сопло в углы вручную. |