- Обновление прошивки USBASP USBISP AVR Programmer
- Digitrode
- цифровая электроника вычислительная техника встраиваемые системы
- Как обновить прошивку внутрисхемного программатора USBASP
- Зайчатки разума
- Обновление прошивки программатора USBASP с помощью Arduino UNO
- Обновление прошивки UsbAsp
- USBASP Firmware update guide
- Required Components
- Prepare the Arduino Uno
- Schematics
- Uploading the Firmware
Обновление прошивки USBASP USBISP AVR Programmer
Недавно для обучения работе с Atmel AVR микроконтроллерами был куплен один из самых простых и недорогих программаторов USBASP USBISP AVR Programmer вот такого типа:
USBASP USBISP AVR Programmer
Данный программатор является одним из вариантов схемы проекта USBasp, вот оригинальный сайт:
USBasp
К слову, мне достался вариант ATMega8L, работающий в режиме разгона, на частоте 12МГц. По документации, должно быть не более 8МГц.
Не вдаваясь в подробности, решил обновить прошивку:
— взял прошивку usbasp.2011-05-28 с вышеуказанного сайта;
— замкнул на плате контакты J2;
— подключил 10pin разъем к другому программатору;
— залил прошивку;
— выставил fuse для atmega8: HFUSE=0xc9 LFUSE=0xef
Программатор определился в системе, но перестал видеть подключенные к нему контроллеры.
Процесс поиска решения проблемы описан здесь:
Форум
В итоге решение проблемы следующее:
— на всякий случай удалил два резистора R9 (270 Ом) и R10 (100 Ом), так как не совсем понимаю для чего необходимо подтягивать RXD и TXD сигналы к GND, да ещё при помощи резисторов столь малых номиналов;
— необходимо припаять перемычку с PC2(ADC2) на GND.
После вышеуказанных манипуляций программатор снова в строю.
Для счастливых обладателей вышеуказанного программатора — желаю учиться на чужих ошибках, для остальных — позволю себе напомнить главное правило, которое может помочь во многих житейских ситуациях: «работает — не трожь!» 🙂
Надеюсь кому-нибудь данная информация поможет.
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Как обновить прошивку внутрисхемного программатора USBASP
Программатор USBASP является важным инструментом для разработчиков встраиваемых систем на основе микроконтроллеров. Это USB ICSP (внутрисхемный программатор с последовательным интерфейсом), который позволяет разработчикам легко загружать микропрограммы/загрузчики в микроконтроллеры AVR. В отличие от того последовательных программаторов, таких как преобразователи USB-TTL, он не использует выделенный чип, поскольку работает на Atmega88 (или Atmega8), и использует драйвер USB только для прошивки без специального USB-контроллера.
Хотя такой подход к использованию USB-драйвера только для микропрограммного обеспечения повышает его совместимость, но он также представляет собой серьезную проблему, поскольку требует регулярных обновлений для совместимости с новыми технологиями в области программирования микроконтроллеров. Одной из таких новых технологий является интерфейс Tiny Programming Interface (TPI), который позволяет внешним программаторам получать доступ к энергонезависимой памяти (NVM) некоторых низкоуровневых микроконтроллеров Atmel, таких как серия ATtiny.
Хотя такие функции, как TPI, существуют уже некоторое время, использование программатора USBASP в этом плане все еще является проблемой, поскольку как старые, так и новые USBASP-устройства требуют обновления прошивки перед использованием. Чтобы помочь пользователям, которым нужна эта функция, в сегодняшнем материале будет рассказано о процессе обновления прошивки вашего программатора USBASP до последней версии.
Для данного процесса нам понадобится плата Arduino. Также следует заметить, что программаторы USBASP, независимо от марки, обычно имеют одинаковую конфигурацию, поэтому это руководство должно работать, независимо от типа или марки программаторов, которые у вас имеются.
Для загрузки прошивки в USBASP требуется другой программатор. Для сегодняшнего примера мы будем использовать Arduino Uno в качестве этого программатора. Чтобы сделать Arduino программатором, нам нужно загрузить скетч, доступный среди примеров в Arduino IDE, на плату Arduino. Сначала перейдите в Файл – Примеры – ArduinoISP (File – Examples – ArduinoISP), затем подключите плату Arduino к вашему ПК. Выберите порт и тип платы и нажмите «Загрузить» (Upload). После этого плата Arduino готова стать программатором.
Далее нам нужно подключить USBASP к плате Arduino. Используя перемычки и макетную плату (при необходимости) соедините плату Arduino и устройство USBASP, как показано на следующей схеме.
Соответствие выводов следующее:
5v — VCC
GND — GND
D13 — SCK
D12 — MISO
D11 — MOSI
D10 — RESET
После подключения есть еще одна вещь, которую нам нужно сделать, это замкнуть перемычку JP2 (показана далее) на плате USBASP. Без этого мы не сможем загрузить прошивку на устройство. Замкните перемычку с помощью припоя или внешних перемычек. После этого мы будем готовы загрузить прошивку.
Начнем с загрузки прошивки. Репозиторий, содержащий версию прошивки с поддержкой TPI, имеется на веб-сайте Thomas Fischl (https://www.fischl.de/usbasp/).
Ключевым компонентом процесса обновления прошивки является AVRDUDE. Если вы знакомы с Arduino IDE, вы наверняка видели упоминание его во время загрузки кода. AVRDUDE – это утилита для загрузки и управления содержимым ПЗУ и ЭСППЗУ микроконтроллеров AVR с использованием метода внутрисистемного программирования (ISP). Самый простой способ получить AVRDUDE – загрузить его исполняемый файл, расположенный в папке Arduino /Java/hardware/tools/avr/bin/. Как только вы это сделаете, следующим шагом будет поиск файла конфигурации; Файл avrdude.conf, который будет находиться в каталоге Arduino /Java/hardware/tools/avr/etc/.
Поместите эти два файла (исполняемый файл AVRdude и файл конфигурации) в папку вместе с файлом .hex только что загруженной прошивки USBasp. Это поможет сократить длину финальной команды. После этого подключите Arduino с подключенным к нему программатором USBasp к компьютеру и запомните порт, который был назначен для Arduino вашим компьютером. Наконец, откройте окно терминала, перейдите в папку, которую мы создали ранее, и выполните следующую команду.
Убедитесь, что вы ввели правильный порт после опции -P. Если все пройдет без какого-либо сообщения об ошибке, значит, на вашем USBASP установлена последняя версия прошивки, и он имеет новый функционал.
Зайчатки разума
Обновление прошивки программатора USBASP с помощью Arduino UNO
Когда-то давно я приобрёл китайскую копию программатора USBASP. При попытке перепрошивки микроконтроллеров через ISP я, как и многие другие, получал ошибку следующего вида:
Инструкции, которые я обнаружил, были написаны с рассчётом на использование в Windows, а так же в некоторых статьях я заметил ошибки и несоответствия (например, неверно указан тип программатора для avrdude, из-за чего какое-то время пришлось побуксовать), так что решил написать для себя короткую статью, убрав всё лишнее.
Для начала нам нужен avrdude. Благо, в отличие от windows, нам не нужно искать, качать и ставить драйвера и всё прочее. Если уже установлена среда arduino, то avrdude можно найти по следующему относительному пути:
Где X.X.X — версия среды. Если же среды arduino на машине нет, то на debian-based системах установить avrdude можно из репозитория:
В этом случае конфигурационный файл будет расположен тут: /etc/avrdude.conf, но среда нам понадобится, чтобы сменить прошивку на нашей текущей ардуине, с помощью которой будет прошиваться программатор.
Далее необходимо скачать самую «свежую» прошивку для USBASP:
Да, самой свежей прошивке на текущий момент чуть менее девяти лет. Внутри архива нас интересует файл bin/firmware/usbasp.atmega8.2011-05-28.hex, его мы и будем прошивать.
Далее на плате программатора нужно замкнуть джампер JP1 (на фото установлен зелёный джампер), если его нет, нужно запаять или замкнуть пинцетом на время прошивки.
Затем соединяем проводами соответствующие пины Arduino и программатора:
Схему честно стырил из другой статьи. Теперь открываем среду Arduino, выставляем нужную плату (в нашем случае Arduino Genuino/UNO) и порт (в нашем случае /dev/ttyUSB0). Если вы не знаете, какой алиас получил интерфейс, среда сама должна подсказать. В любом случае, подсказку можно найти тут:
Прошиваем скетч из примеров с названием ArduinoISP, на этом окно можно закрывать. В терминале переходим в директорию с avrdude внутри директории с ardunio и сперва проверим, что микроконтроллер нашего программатора виден через Arduino Uno по ISP:
Если чип программатора отличается, проблема в соединении или имеются иные проблемы, мы увидим ворнинги следующего вида или им подобные:
В этом случае нужно перепроверить всё ещё раз, особенно подключение. Далее имеет смысл сохранить текущую прошивку в файл на всякий случай (вместо /path/to/backup укажите свой путь):
Прошиваем «свежую» прошивку девятилетней давности:
Обновление прошивки UsbAsp
Я купил программатор USBasp на Dx.com чтобы использовать с Arduino IDE для прошивки Arduino Pro mini.
Всё работало нормально, но выдавало вот такую ошибку:
〉 avrdude: warning: cannot set sck period. please check for usbasp firmware update
В-общем требовалось обновление прошивки программатора USBasp.
Гугление в Интернете выдало вот такое решение:
-
- Качаем обновление прошивки отсюда .
- Распаковываем, и лучше сразу положить новую прошивку в папку с avrdude (у меня это было здесь: C:\Program Files (x86)\Arduino\hardware\tools\avr\bin).
- Подключаем USBasp программатор к Arduino Uno по схеме:
- На программаторе ставим джампер в позицию J1 (для этого я воспользовался скрепкой). Стоит отметить, что программаторы бывают разные, а значит и джампер может отличаться:
- Подключаем Arduino Uno, запускаем Arduino IDE, выбираем ArduinoISP и загружаем
- И нужно запомнить com-порт, к которому подключена Arduino Uno (Инструменты ⇒ Порт).
- Запускаем командную строку. Переходим в папку C:\Program Files (x86)\Arduino\hardware\tools\avr\bin. Проверяем подключение к USBasp, для этого вводим следующую команду: avrdude -C ../etc/avrdude.conf -c avrisp -P COM2 -b 19200 -p m8 -v (замените com-порт на ваш). Если всё в порядке, Вы получите вот такой результат:
- Теперь прошиваем наш программатор вот этой командой: avrdude –C ../etc/avrdude.conf –c avrisp –P COM2 –b 19200 –p m8 –U flash:w:usbasp.atmega8.2011-05-28.hex и должны получить вот такой результат:
- Поздравляю! Теперь можно использовать программатор по назначению!
USBASP Firmware update guide
The USBASP programmer is an important tool/accessory for embedded systems engineers/ firmware developers. It is a USB ICSP (In-Circuit Serial Programmer) that allows developers to easily upload firmware/bootloaders on AVR microcontrollers. Unlike what you find to serial programmers like the USB-TTL converters, it does not use a dedicated chip as it runs on an atmega88 (or atmega8), and uses a firmware-only USB driver with no special USB controller required.
USBASP Programmer
While this firmware-only USB driver approach increases its compatibility, it also introduces a major challenge to the programmer as it requires regular updates for compatibility with advancements in how microcontrollers are programmed. One such advancement is the Tiny Programming Interface (TPI) that allows external programmers to access the nonvolatile memory (NVM) of certain low-end Atmel microcontrollers like the ATtiny series.
While features like TPI has been around for a while, using a USBASP programmer is still a problem as both old and new USBASP devices require a firmware update before they can be used. To help users who need this feature, today’s tutorial will spotlight the process involved in updating the firmware on your USBASP programmer to the latest version.
Required Components
The following components are required to perform the firmware update:
- The USBASP Programmer
- An Arduino Uno (a nano should equally work)
- Jumper wires
- Breadboard
USBASP programmers, irrespective of brand, typically have the same configuration, so this tutorial should work, irrespective of the type or brand that you have.
Prepare the Arduino Uno
Uploading firmware to the USBASP requires a programmer. For today’s tutorial, we will use an Arduino Uno as that programmer. To make the Arduino a programmer, we need to upload a sketch, available among the examples on the Arduino IDE, to the Arduino board. Follow the steps below to do this:
- Go to File >Examples >ArduinoISP
- Connect an Arduino board to your PC
- Select the port and board type and Click on Upload
With this done, the Arduino board is now ready to serve as a programmer.
Schematics
Next, we need to connect the USBASP to the Arduino Board. Using jumper wires and the breadboard (if necessary) connect the Arduino board and the USBASP device as shown in the image below:
Schematics
Since the fritzing model is not an exact replica of the popular USBASP types, a pin map showing how the Arduino is connected to the USBASP is provided below to make the connection easier to follow:
Arduino – USBASP
Go over the connections once again to ensure it’s properly done. If you have doubts about identifying the pins on your USBASP, you can run a google search for the pin-out of that particular board and use it as a guide for the connection.
With the boards connected, one more thing we need to do is to close the Jumper JP2 (highlighted below) on the USBASP board. Without doing this, we will not be able to upload firmware to the device. Close the jumper by bridging it with solder led or jumper wires.
With this done we are now ready to upload the firmware.
Uploading the Firmware
We start by downloading the firmware. A repository containing the latest version of the firmware is maintained on Thomas Fischl’s website. As at the time of this writing, the latest version which thankfully has TPI support was released in May 2011. Download that.
A key ingredient of the firmware upgrade process is the AVRDUDE. If you are familiar with the Arduino IDE, you would definitely have seen a reference to it in the verbose during code upload. The AVRDUDE is an utility to download, upload, and manipulate the ROM and EEPROM contents of AVR microcontrollers using the in-system programming technique (ISP). The easiest way to get the AVRDUDE is by fetching its executable located within your Arduino folder -> “ARDUINO FOLDER”/Java/hardware/tools/avr/bin/ or you can downloading it.
Once you have it, the next step is to find it’s configuration file; avrdude.conf file, which (if you follow the Arduino IDE route) would be at the directory -> “ARDUINO FOLDER”/Java/hardware/tools/avr/etc/
Put these two files (the AVRdude executable and configuration file) inside a folder along with the .hex file of the USBasp firmware we just downloaded. This helps shorten the length of the final command. With these done, connect the Arduino with the USBasp programmer attached to it, to your computer, and note down the port that was assigned to the Arduino by your computer.
Finally, open a terminal window, navigate inside the folder we created earlier, and run the command below:
Ensure you enter the right port after the option -P . If this succeeds without any error message, then your USBASP now has the latest firmware, and it’s ready for some action.
That’s it for this tutorial!
Do feel free to reach out to me via the comment section if you have any challenges with getting this to work.