Как установить avrdude на windows 10

На чтение 4 мин Опубликовано Обновлено

Avrdude — это программное обеспечение, позволяющее прошивать микроконтроллеры AVR через USB. Это мощный инструмент для разработчиков, позволяющий загружать и считывать код с микроконтроллера, а также выполнять другие операции с памятью и регистрами.

Однако, запустить avrdude под операционной системой Windows 10 может быть не так просто как под другими операционными системами. В этой подробной инструкции мы расскажем вам, как правильно установить и настроить avrdude на Windows 10.

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

Важно: Помните, что avrdude зависит от драйверов USB, поэтому вам также потребуется установить драйвера для вашего программатора или USB-устройства.

После установки avrdude вы должны добавить его в переменную среды PATH, чтобы иметь доступ к программе из любой директории. Для этого откройте «Панель управления» и найдите раздел «Система». В открывшемся окне выберите «Дополнительные параметры системы», затем перейдите во вкладку «Дополнительно» и нажмите на кнопку «Переменные среды».

В разделе «Системные переменные» найдите переменную PATH и нажмите кнопку «Изменить». В открывшемся окне нажмите кнопку «Добавить» и введите путь к папке, в которой находится исполняемый файл avrdude.exe. Например, C:\Program Files\avrdude. Нажмите «ОК» и закройте все окна «Параметры системы».

Как запустить avrdude под Windows 10

  1. Скачайте и установите Arduino IDE с официального сайта Arduino.
  2. Откройте Arduino IDE и подключите свою плату Arduino к компьютеру.
  3. В меню Arduino IDE выберите плату, которую вы используете, и порт, к которому она подключена.
  4. Скомпилируйте и загрузите пример программы на Arduino. Это нужно для того, чтобы создать настройки avrdude.
  5. После того, как программа успешно загрузится на плату, найдите файл avrdude.conf. Обычно он находится в папке Arduino IDE (например, C:\Program Files (x86)\Arduino\hardware\tools\avr\etc).
  6. Скопируйте файл avrdude.conf в папку с avrdude.exe. Обычно эта папка находится в папке Arduino IDE (например, C:\Program Files (x86)\Arduino\hardware\tools\avr\bin).
  7. Теперь вы можете запустить avrdude, используя командную строку. Для этого откройте командную строку и перейдите в папку с avrdude.exe.
  8. В командной строке выполните следующую команду для проверки, что avrdude работает: avrdude -v. Если вы видите информацию о вашей плате Arduino, значит avrdude успешно запущен.

Теперь вы можете использовать avrdude для программирования микроконтроллеров AVR под Windows 10.

Подробная инструкция

В этом разделе мы рассмотрим подробные инструкции по запуску avrdude под Windows 10. Ниже приведены шаги, которые нужно выполнить:

  1. Скачайте и установите необходимые программы: avrdude и WinAVR.
  2. Для скачивания avrdude вам необходимо перейти на официальный сайт проекта и найти раздел «Downloads». Скачайте последнюю стабильную версию avrdude для Windows.

    WinAVR — это набор инструментов для разработки программного обеспечения для AVR микроконтроллеров. Он включает в себя не только avrdude, но и другие полезные инструменты. Скачайте и установите WinAVR с официального сайта проекта.

  3. После установки откройте командную строку.
  4. Для открытия командной строки нажмите клавишу Win + R, введите «cmd» и нажмите Enter.

  5. Добавьте avrdude и другие инструменты в системную переменную PATH.
  6. Чтобы добавить путь к avrdude и другим инструментам в системную переменную PATH, выполните следующий команду:

    setx PATH "%PATH%;C:\путь\к\папке\с\avrdude"

    Замените «C:\путь\к\папке\с\avrdude» на реальный путь к папке, где у вас установлен avrdude.

  7. Подключите AVR микроконтроллер к компьютеру.
  8. С помощью USB-кабеля подключите AVR микроконтроллер к компьютеру. Убедитесь, что микроконтроллер правильно подключен и опознан операционной системой.

  9. Запустите avrdude для записи программы на микроконтроллер.
  10. Для записи программы на микроконтроллер с помощью avrdude выполните следующую команду:

    avrdude -p [тип_микроконтроллера] -c [тип_программатора] -P [COM_порт] -U flash:w:[файл_программы.hex]

    Замените [тип_микроконтроллера], [тип_программатора], [COM_порт] и [файл_программы.hex] на соответствующие значения для вашего проекта.

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

Теперь вы знаете, как запустить avrdude под Windows 10 с помощью подробной инструкции. Удачи в ваших проектах!

AVRDUDE for Windows

Build Status

This is a fork of AVRDUDE from https://github.com/avrdudes/avrdude.

The purpose of this fork is to add better support for Windows to bring it on par with the Linux version of AVRDUDE.

Noteable changes include:

  • Support Atmel AVR programmers out of the box
  • Support Micronucleus bootloader
  • Support Teensy HalfKay bootloader
  • Support COM port discovery via USB VID/PID
  • Support Arduino Leonardo bootloader auto-reset
  • Support WinUSB devices via custom libusb
  • Support FTDI devices via custom libftdi
  • Support HID devices via libhidapi
  • Support Visual Studio
  • Miscellaneous bug-fixes and patches

The original AVRDUDE project homepage can be found here https://github.com/avrdudes/avrdude.

Documentation

Documentation for current and previous releases is on Github Pages.

Download

To get the latest version of AVRDUDE for Windows, go to the releases folder:

https://github.com/mariusgreuel/avrdude/releases

Feature Details

Support Atmel AVR programmers out of the box

This build contains support for Atmel AVR programmers, such as

  • Atmel-ICE (Part Number: ATATMEL-ICE)
  • Atmel AVRISP mkII (Part Number: ATAVRISP2)

This build does not rely on libusb drivers. Instead the default Atmel drivers can be used, allowing you to use AVRDUDE and Atmel Studio 7 side-by-side, without switching drivers.

If you previously changed the driver of your programmer to libusb, you should use Windows Device Manager to uninstall the device, and then reinstall using the default Windows drivers.

Support Micronucleus bootloader

This build adds support for the Micronucleus bootloader, so you do no longer need a separate command-line utility when working with devices that use the Micronucleus bootloader.

The Micronucleus bootloader is typically used on small ATtiny boards, such as Digispark (ATtiny85), Digispark Pro (ATtiny167), and the respective clones.
By default, it uses the USB VID/PID 16D0:0753 (MCS Digistump).

Since this bootloader is optimized for size, it implements writing to flash memory only.
As it does not support reading, you need to use the -V option to prevent AVRDUDE from verifing the flash memory. To have AVRDUDE wait for the device to be connected, use the extended option ‘-x wait’.

Example: Flashing a Micronucleus bootloader device

avrdude -c micronucleus -p t85 -x wait -V -U flash:w:main.hex:i

Support Teensy HalfKay bootloader

This build adds support for the Teensy HalfKay bootloader, so you do no longer need a the Teensy Loader tool when working with Teensy devices.

Since this bootloader is optimized for size, it implements writing to flash memory only.
As it does not support reading, you need to use the -V option to prevent AVRDUDE from verifing the flash memory. To have AVRDUDE wait for the device to be connected, use the extended option ‘-x wait’.

Supported devices are:

  • Teensy 1.0 (AT90USB162)
  • Teensy 2.0 (ATmega32U4)
  • Teensy++ 1.0 (AT90USB646)
  • Teensy++ 2.0 (AT90USB1286)

Example: Flashing a Teensy 2.0 device

avrdude -c teensy -p m32u4 -x wait -V -U flash:w:main.hex:i

Support COM port discovery via USB VID/PID

Most Arduino boards use a USB-based virtual COM port, which is connected to some sort of bootloader. Since COM port numbers (COM1, COM2, …) are determined by Windows, you first need to use Windows device manager to figure out the COM port before you can use AVRDUDE to flash the board. Alternatively, you may use Windows device manager to assign a COM port of your choice to the USB device. Additionally, the COM port of your Arduino board may change over time, for instance if you plug the device in a different USB port.

To simplify the discovery of your Arduino board, I provided the possibility to specify the USB vendor and product ID instead of the COM port.

For instance, to connect to an Arduino Leonardo, use the following command:

avrdude -c avr109 -P usb:2341:0036 -p m32u4

Since the USB vendor and device ID 2341:0036 is the identical for all Leonardo boards, the command above will work regardless of which COM port was actually assigned to your board.

Note that can cannot use this method if you have more than one device of the same type (i.e. that share the same USB VID/PID) plugged into your computer. Also, some devices ship various versions of firmwares using different VID/PID.

To figure out the USB VID and PID, you may use Windows devices manager (see the Hardware IDs of the Details tab of the USB device), or look it up in the official list of Arduino devices:
https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt

USB VID/PID pairs for some popular boards and the respective commands are:

  • Arduino Uno Rev 3: 2A03:0043 -> avrdude -c arduino -P usb:2A03:0043 -p m328p
  • Arduino Micro: 2341:0037 -> avrdude -c avr109 -P usb:2341:0037 -p m32u4
  • Arduino Leonardo: 2341:0036 -> avrdude -c avr109 -P usb:2341:0036 -p m32u4
  • Sparkfun Pro Micro (5V): 1B4F:9205 -> avrdude -c avr109 -P usb:1B4F:9205 -p m32u4
  • Sparkfun Pro Micro (3.3V): 1B4F:9203 -> avrdude -c avr109 -P usb:1B4F:9203 -p m32u4
  • Adafruit Circuit Playground: 239A:0011 -> avrdude -c avr109 -P usb:239A:0011 -p m32u4

Support Arduino Leonardo bootloader auto-reset

Before any Arduino board may be flashed via the bootloader, you need to kick it into bootloader mode first. This can done manually by pressing the reset button, or automatically via an special auto-reset mechanism: For boards with a USB to serial converter chip (such as Arduino Uno or Nano), the tool needs to pull the DTR signal to low, which will briefly pull the RESET pin of the microcontroller to low. For boards with a direct USB connection (such as Arduino Leonardo or Micro), the sketch typically implements a serial port via a USB composite device with a virtual COM port. To perform the auto-reset, the sketch implements a hack that resets the device into bootloader mode when the COM port is opened with a baudrate of 1200bps. To make matters even more complicated, the bootloader COM port has a different USB VID:PID pair than the sketch COM port, which causes the COM port to change while performing the reset.

To simplify the process of auto-resetting the board, this version will auto-reset the device when AVRDUDE detects that the device is running in sketch mode. Note that the sketch is required to implement a USB composite device with a virtual COM port with a matching USB VID:PID, which is implemented in the Arduino core software.

Support WinUSB devices via custom libusb

Since AVRDUDE originated from Unix, the USB support in AVRDUDE is built upon the Unix-based USB library libusb. In order to support Windows, libusb has been ported to Windows libusb-win32.

The downside of using libusb-win32 is that it requires the user to manually install a kernel-mode driver (libusb0.sys or libusbk.sys) instead of the manufacturer supplied Windows driver. There are several hacks to accomplish this, such as the Zadig driver installation utility, which installs a self-signed root certificate in the Windows driver store due to the lack of proper driver installation packages.

This build contains a custom library called libwinusb, which implements a sub-set of the libusb-win32 API. The libwinusb implementation supports both the winusb.sys driver, and the libusb0.sys driver as well. This patch has a number of advantages, such as

  • Many USB devices that ship with WinUSB drivers, such as Atmel programmer, will run out of the box.
  • Works with both WinUSB and libusb: You can use either Windows built-in WinUSB driver to access your USB devices, or keep using the libusb drivers if you have them installed already.
  • No static dependency to libusb0.dll: You cannot run the original version AVRDUDE, unless you previously installed libusb. On systems where libusb is not installed, this build eliminates the error «The code execution cannot proceed because libusb0.dll was not found. Reinstalling the program may fix this problem».

Microsoft OS descriptors and firmware examples

Windows provides a mechanism to automatically load the built-in WinUSB driver without providing a driver installation package (INF file). The automatic WinUSB driver installation is triggered via a special Microsoft OS descriptor that must be present in the firmware of the USB device.

To demonstrate how this works, I added Microsoft OS descriptors to the following projects:

  • USBasp — USB programmer for Atmel AVR controllers: https://github.com/mariusgreuel/USBasp

  • FabISP a.k.a USBtinyISP — A fab-able in-system programmer: https://github.com/mariusgreuel/FabISP

  • Micronucleus — ATtiny USB bootloader with a strong emphasis on bootloader compactness: https://github.com/mariusgreuel/micronucleus

Support FTDI devices via custom libftdi

In order to support FTDI devices, AVRDUDE uses the Unix-based library libftdi1. Similar to libusb, the libftdi1 library does not play nice on Windows: On Windows, FTDI devices load the manufacturer supplied driver via plug-and-play. The FTDI drivers implement an API via the FTDI D2XX DLLs. However, libftdi1 cannot use the D2XX interface, so it will not work with the plug-and-play drivers.

This build contains a patches library of libftdi. The patches load the D2XX DLLs to support FTDI devices, so FTDI devices will just work.

Support HID devices via libhidapi

This build include the WIN32 version of libhidapi, and some patches, to allow HID devices to work out of the box.

Support Visual Studio

This build adds support for Microsoft Visual Studio. Building AVRDUDE with Microsoft Visual C/C++ will give you the best user and debugging experience while working on Windows.

Miscellaneous bug-fixes and patches

  • This build fixes bug #54159: Buffer overflow in usbtiny.c, which causes AVRDUDE to crash when using the USBtiny programmer.

  • Support new microcontroller: ATtiny167

Releases

You can find the latest releases of AVRDUDE for Windows here:

https://github.com/mariusgreuel/avrdude/releases

Users manual

You can find the original users manual (does not contain AVRDUDE for Windows extras) of AVRDUDE here:

https://www.nongnu.org/avrdude/user-manual/avrdude.html

Build

The build instructions have been moved here:
https://github.com/avrdudes/avrdude/wiki

Building AVRDUDE for Windows using MSVC

Windows Prerequisites

In order to build AVRDUDE on Windows, you need:

  • Flex and Bison installed, for instance via Chocolatey
  • Microsoft Visual Studio 2019 with Desktop development with C++ and CMake enabled

Windows Build Instructions

To build AVRDUDE on Windows, do the following:

  • git clone --branch windows https://github.com/mariusgreuel/avrdude
  • Open the folder avrdude using the menu item File->Open->Folder
  • Build the project using the menu item Build->Build All

Linux udev rules

If you intent to use either the Micronucleus or Teensy bootloader, you should edit the udev rules so that you can run AVRDUDE without root.

For instance, if you are on Ubuntu and you installed the avrdude package, you would edit /lib/udev/rules.d/60-avrdude.rules and add the following rules:

# Micronucleus Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="0753", TAG+="uaccess"
# Teensy Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0478", TAG+="uaccess"

Troubleshooting Tips & Tricks

Atmel DFU Device driver broken

The current version of the Atmel DFU drivers that are distributed via the Windows Update are goofed up (@Atmel: It might have something to do with the fact that you commented out the CopyFiles sections!).
Symptoms are:

  • You cannot use AVRDUDE to connect to an Atmel DFU device, and you get the error message «No matching USB device found».
  • When installing the drivers via Windows Update, you get the error message «Windows encountered a problem installing the drivers for your device» and «A service installation section in this INF is invalid.»
  • In Windows Device Manager, the Atmel DFU device shows up as an unknown device.

You should use an older driver package that does not contain this bug.

Outdated libusb0 driver

The most current version of libusb0.sys is 1.2.6.0, signed on 12/17/2012 by Travis Lee Robinson. If you are using an older version (check with Windows Device Manager), you may not be able to connect to your USB devices using the libusb0 driver.

По умолчанию поддерживаемые МК (список МК постоянно расширяется, см. форум):

AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1280, ATmega1281, ATmega1284p, ATmega128RFA1, ATmega16, ATmega162, ATmega164p, ATmega168, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega324p, ATmega325, ATmega3250, ATmega328p, ATmega329, ATmega3290, ATmega329p, ATmega3290p, ATmega32U4, ATmega48, ATmega8, ATmega8515, ATmega8535, ATmega88, ATtiny13, ATtiny2313, ATtiny261.

По умолчанию поддерживаемые программаторы (список программаторов можно самостоятельно расширить, либо скачать с форума):

USBasp, USBtiny, AVR ISP mkII,SI-Prog, AVR910, AVR910, STK200, STK500, STK500 2.X, JTAG ICE mkII, JTAG ICE mkII ISP, JTAG ICE mkII PDI.

Основные отличия от аналогичных программ :

1. Возможность самостоятельного добавления программаторов, настройки скорости программирования и т.п;
2. Возможность самостоятельного добавления МК;
3. Редактирования и настройка отображения Fuses битов;
4. Выбор инверсных или прямых Fuses битов;
5. Окна вывода значений Fuses битов в HEX формате;
6. Сохранение настроек программирования при закрытии программы, т.е. при последующем открытии все настройки восстановятся;
7. «дублирование кнопки» — данная функция выводит на экран кнопку «Программировать», которая является полным функциональным аналогом кнопки «Программировать всё» и всегда будет находиться по верх всех окон. Кнопку можно переместить в удобную для вас зону монитора, свернув AVRDUDE_PROG. Удобна при многочисленном перепрограммировании МК.

Установка.

Разархивируйте файл usbprog.rar в любую удобную папку. Поместите ярлык программы «AVRDUDE_PROG» на рабочий стол. Установка завершена. Можно работать.

Возможности программы.

Настройки оболочки «AVRDUDE_PROG» реализованы в «ini» файлах. Что такое «ini» файлы можно посмотреть тут.
Теперь возможно самостоятельно добавлять и редактировать список микроконтроллеров, программаторов, портов, Fuses бит, добавить различные языки и пр.
Список контроллеров и состояний Fuses бит, редактируется в файле «atmel.ini», список программаторов и портов в файле «programm.ini», список поддерживаемых языков в файле «language.ini».

В файле «atmel.ini», все значения введены по умолчанию в соответствии с datasheet на МК, можете изменить по Вашему усмотрению. Никаких инверсий не требуется, значение по умолчанию вводиться в соответствии с datasheet на МК. В том случае, если МК нет в списке, или при выборе МК во вкладке Fuses везде «error», то Вам необходимо самостоятельно ввести значения в файл «atmel.ini» в соответствии с datasheet и приведённым ниже примером. Либо посмотреть на форуме. Файл «atmel.ini» находится в корневой папке программы.

В файле «programm.ini», введены значения программаторов для командной строки avrdude. В том случае, если используемый Вами программатор отсутствует в списке, либо необходимо изменить какие-либо параметры установленные по умолчанию, то необходимо ввести/редактировать его значения самостоятельно в соответствии с приведённым ниже примером. Либо посмотреть на форуме. Файл «programm.ini» находится в корневой папке программы.

В файле «language.ini», возможно отредактировать на «свой вкус» текстовую информацию оболочки, либо добавить язык программы AVRDUDE_PROG. Тут расписывать ничего не буду, думаю в файле «language.ini» всё понятно.

Добавление/редактирование списка МК. Работа с файлом «atmel.ini».

Окройте в любом текстовом редакторе (рекомендую Notepad++) файл «atmel.ini». Посмотрите как реализован ввод параметров МК, фузе битов и пр. Ниже привожу пример и описание парметров.

Пример на мк AT90CAN128

Заголовок раздела
[AT90CAN128] — имя МК которое появиться в выпадающем списке, «[» и «]» обязательны. В данном случае «AT90CAN128».

Параметр для типа МК
mcuavrdude=c128 // тип мк в avrdude

Значение и описание параметров раздела для Fuse битов

Lock байт
lockbytebit*enabled=0 // «*» — номер бита в Lock байте, «**enabled=0» — невозможно изменение состояния бита, «**enabled=1» — возможно изменение состояния бита. В данном случае изменение бита невозможно. Изменение бита будет недоступно.
lockbytebit*name=NOT USED // «*» — номер бита в Lock байте, «**name = NOT USED» — бит не используется. Если бит используется, вводиться его имя в соответствии с datasheet.
lockbytebit*def=1 // «*» — номер бита в Lock байте, «**def=» — если имя бит бита = «NOT USED», то значение вводится в соответствии с datasheet. В данном случае «1».

High байт
highbytebit*enabled=1 // «*» — номер бита в High байте, «**enabled=0» — невозможно изменение состояния бита, «**enabled=1» — возможно изменение состояния бита. В данном случае изменение бита возможно. Изменение бита будет доступно.
highbytebit*name=OCDEN // «*» — номер бита в High байте, «**name = OCDEN» — имя бита в соответствии с datasheet.
highbytebit*def=1 // «*» — номер бита в High байте, «**def=1» — значение бита по умолчанию, вводиться в соответствии с datasheet. В данном случае значение по умолчанию «1».

Low байт
lowbytebit*enabled=1 // «*» — номер бита в Low байте, «**enabled=0» — невозможно изменение состояния бита, «**enabled=1» — возможно изменение состояния бита. В данном случае изменение бита возможно. Изменение бита будет доступно.
lowbytebit*name=CKDIV8 // «*» — номер бита в Low байте, «**name = CKDIV8» — имя бита в соответствии с datasheet.
lowbytebit*def=0 //»*» — номер бита в Low байте, «**def=0» — значение бита по умолчанию, вводиться в соответствии с datasheet. В данном случае значение по умолчанию «0».

Extended/Fuse/Fuse байт
extendedbytebit*enabled=0 // «*» — номер бита в Extended/Fuse/Fuse байте, «enabled=0» — невозможно изменение состояния бита, «enabled=1» — возможно изменение состояния бита. В данном случае изменение бита невозможно. Изменение бита будет недоступно.
extendedbytebit*name=NOT USED //»*» — номер бита в Extended/Fuse/Fuse байте, «name = NOT USED» — бит не используется. Если бит используется, вводиться его имя в соответствии с datasheet.
extendedbytebit*def=1 // «*» — номер бита в Lock байте, «**def=» — если имя бит бита = «NOT USED», то значение вводится в соответствии с datasheet. В данном случае «1».

Добавление/редактирование списка программаторов. Работа с файлом «programm.ini».

Откройте в любом текстовом редакторе (рекомендую Notepad++) файл «programm.ini». Посмотрите как реализован ввод параметров программаторов. Ниже привожу пример и описание парметров.

Описание переменных файла.

[Name programmator] – имя программатора а выпадающем списке
progisp – программатор для командной строки avrdude
portprog – порт программатора для командной строки avrdude (Usb, com, lpt и пр.)
portenabled – окно изменение порта «1»-доступно, «0» — недоступно

Программатор AVR STK200 с поддержкой LPT.

Для добавления программатора AVR STK200 с поддержкой LPT в файл «programm.ini» можно добавить следующее:

[STK200LPT]
progisp=stk200
portprog=lpt1
portenabled=0

Сохраните файл «programm.ini»

В выпадающем списке «Настройки» -> «Программатор» появиться программатор « STK200LPT » с работой от lpt1 порта.
Всё работает аналогично для других параметров и программаторов, поддерживаемых avrdude.

AVRDUDE_PROG 3.3 (22.01.2021)

ВНИМАНИЕ!!! Обновлена версия avrdude 6.3 (22.01.2021)

Драйвера USBAsp

Основные отличия от предыдущей версии:
— добавлено куча контроллеров, исправлены ошибки файлов «atmel.ini»,»avrdude.conf» — огромное спасибо модератору форума dmibr за проделанную работу!
— исправлены мелкие ошибки.
Если у Вас установлена программа версии 3.1 и выше, то достаточно заменить файл — «AVRDUDEPROG.exe»,»avrdude.exe»,»avrdude.conf»,»atmel.ini» . В этом случае все ранее сохранённые настройки в файлах «ini» не изменяться.

Размер файла: 690КБ
Статус программы: бесплатная
ОС: Windows NT/2000/XP/VISTA/7/10
Интерфейс: русский, english
Разработчик: yourdevice
Версия: 3.3 (22.01.2021)

AVRDUDE_PROG 3.2

ВНИМАНИЕ!!! Актуально для версии 3.2 — ссылка на форум

Основные отличия от предыдущей версии:
— исправлено зависание программы в некоторых случая;
— исправлена ширина выпадающего списка программаторов;
— в диалоговом окне программы состояние avrdude выводиться в режиме онлайн, а не в конце программирования;
— исправлены мелкие ошибки.
Если у Вас установлена программа версии 3.1, то достаточно заменить только «exe» файл. В этом случае все ранее сохранённые настройки в файлах «ini» не изменяться.

Размер файла: 558КБ
Статус программы: бесплатная
ОС: Windows NT/2000/XP/VISTA/WINDOWS 7
Интерфейс: русский, english
Разработчик: yourdevice
Версия: 3.2 (03.08.2013)

download_manager Скачать.

AVRDUDE_PROG 3.1

Размер файла: 558КБ
Статус программы: бесплатная
ОС: Windows NT/2000/XP/VISTA/WINDOWS 7
Интерфейс: русский, english
Разработчик: yourdevice
Версия: 3.1 (18.10.2012)

download_manager Скачать.

AVRDUDE_PROG 3.0

Размер файла: 558КБ
Статус программы: бесплатная
ОС: Windows NT/2000/XP/VISTA/WINDOWS 7
Интерфейс: русский
Разработчик: yourdevice
Версия: 3.0

download_manager Скачать.

Overview

This guide will help you get your environment set up to build projects on the Atmel AVR chips (e.g. ATmega328, ATtiny85, etc.) projects on Windows using Windows-based tools.

Summary:

  1. Prep
  2. Install AVR toolchain (to build the code)
  3. Install AVR Dude (to flash the chip)
  4. Install GnuWin32 (for supporting build tools like Make)
  5. Configure PATH (to make tools available)
  6. Testing the AVR toolchain
  7. Next Steps
  8. Troubleshooting

Tutorial Versions

I have written 3 different versions of this tutorial that cover the following different setups:

  1. Windows-based AVR toolchain (this guide)

    This options primarily uses Windows-based tools and has two variations depending on how you run make

    • Windows + GnuWin32
    • Windows + WSL
  2. WSL-based AVR toolchain

    This options primarily uses WSL-based linux tools and has two variations depending on how you program the chip – either WSL-based avrdude using usbip to access the USB programmer or Windows-based avrdude to natively access the USB programmer

    • WSL + usbip
    • WSL + Windows
  3. Linux-based AVR toolchain

    This option uses all native linux-based tools on a native Linux installation.

You can see a summary of how the versions differ in the table below:

Version avr toolchain make avrdude usb access
Windows+GnuWin32 windows gnuwin32 windows
Windows+WSL windows WSL windows
WSL+usbip WSL WSL WSL usbip
WSL+Windows WSL WSL windows
Linux linux linux linux

Prep

Start by creating a folder to hold all your dev tools (e.g. C:\Tools\AVR or C:\Users<user>\AVR). I will be using C:\AVR in this guide.

Download

The first step is to download the AVR toolchain from the Microchip website. The toolchain can be downloaded as part of the Atmel Studio IDE or standalone. For this guide we will use the standalone toolchain and use VS Code as the IDE.

  1. Browse to toolchain download page at:
    • https://www.microchip.com/en-us/tools-resources/develop/microchip-studio/gcc-compilers
  2. From the downloads list, find and download the appropriate toolchain for your chip and dev OS. For this guide we will download the toolchain for AVR 8-bit chips (like ATmega328 or ATtiny) that runs on Windows. At the time of writing that was AVR 8-bit Toolchain v3.62 – Windows. NOTE: You will have to sign up for a free account to complete the download
    • At the time of writing the main download page wasn’t working, so alternatively you can download the prior version (3.6.1) release from the archives at: https://www.microchip.com/en-us/tools-resources/archives/avr-sam-mcus#AVR and Arm-Based MCU Toolchains
  3. I also recommend downloading the Release Notes for your toolchain (if any). They should be available on the same downloads page. (e.g. AVR 8-bit Toolchain 3.6.1 — Release Note). The release notes can contain important installation instructions (like the fact that you may need to download chip packs)

  4. [Optional] IF the chip you are using isn’t supported out-of-the-box by the main toolchain, browse to: http://packs.download.atmel.com/ to find and download the appropriate chip packs. Note: most of the popular chips should already be supported).
    • Even if you don’t NEED the chip packs, there is additional documentation in them that you might find valuable to read.
    • The chip pack files end in .atpack, but are actually .zip archive files and needs to be expanded to be used.
    • If you need to use a chip pack, you will need to reference the directory via -B and -I options when compiling. For example: avr-gcc -mmcu=atmega328pb -B /home/packs/Atmel.ATmega_DFP.1.0.86/gcc/dev/atmega328pb/ -I /home/packs/Atmel.ATmega_DFP.1.0.86/include/

Install

Unzip the downloaded toolchain archive (e.g. avr8-gnu-toolchain-3.6.1.1752-win32.any.x86.zip) into the tools folder you created earlier. You should now have a directory named avr8-gnu-toolchain-win32_x86 in your tools folder. My preference is to rename the directory to remove any platform specific names (e.g. win32_x86) to make any scripts I create platform agnostic and more portable (e.g. avr8-gnu-toolchain).

Tools directory so far:

1
2
3
4
5
6
C:\AVR
└───avr8-gnu-toolchain
    ├───avr
    ├───bin
    ├───doc
    └───...

[Optional] If you choose to download the chi ppacks as well, I recommend unzipping those into a separate directory for chip packs with each chip pack in a separate subfolder.

Tools directory so far:

1
2
3
4
5
6
7
8
C:\AVR
├───avr-device-packs
│   ├───Atmel.ATmega_DFP.2.0.401
│   │   ├───gcc
│   │   ├───include
│   │   └───...
│   └───Atmel.ATtiny_DFP.2.0.368
└───avr8-gnu-toolchain

Test

To test the installation of the avr-gcc toolchain, run avr-gcc --version in the avr8-gnu-toolchain\bin directory. The output should look something this:

1
2
3
4
5
C:\AVR\avr8-gnu-toolchain\bin>avr-gcc --version
avr-gcc (AVR_8_bit_GNU_Toolchain_3.6.2_1778) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Install AVR Dude

Download

  1. Browse to the AVR Dude releases directory on GitHub: https://github.com/avrdudes/avrdude/releases
  2. Download the latest version for your OS (e.g. avrdude-v7.0-windows-x86.zip).

If you’re looking for older versions such as v6.4 or prior, they are can be found at their old site: http://download.savannah.gnu.org/releases/avrdude/ (e.g avrdude-6.4-mingw32.zip)

Install

Unzip the downloaded archive (e.g. avrdude-v7.0-windows-x86.zip) into the tools folder into a directory named “avrdude”. This will keep it version and platform agnostic.

Tools directory so far:

1
2
3
4
5
C:\AVR
├───avr8-gnu-toolchain
└───avrdude
    ├───avrdude.exe
    └───... 

Test

To test the installation of avrdude, run avrdude in the avrdude directory. The output should look something this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
C:\DEV\AVR\avrdude>avrdude.exe
Usage: avrdude.exe [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
  -C <config-file>           Specify location of configuration file.
  -c <programmer>            Specify programmer type.
  -D                         Disable auto erase for flash memory
  -i <delay>                 ISP Clock Delay [in microseconds]
  -P <port>                  Specify connection port.
  -F                         Override invalid signature check.
  -e                         Perform a chip erase.
  -O                         Perform RC oscillator calibration (see AVR053).
  -U <memtype>:r|w|v:<filename>[:format]
                             Memory operation specification.
                             Multiple -U options are allowed, each request
                             is performed in the order specified.
  -n                         Do not write anything to the device.
  -V                         Do not verify.
  -t                         Enter terminal mode.
  -E <exitspec>[,<exitspec>] List programmer exit specifications.
  -x <extended_param>        Pass <extended_param> to programmer.
  -v                         Verbose output. -v -v for more.
  -q                         Quell progress output. -q -q for less.
  -l logfile                 Use logfile rather than stderr for diagnostics.
  -?                         Display this usage.

avrdude version 7.0, URL: <https://github.com/avrdudes/avrdude>

Install GnuWin32

The GnuWin32 project provides ports of GNU tools to Windows. For our purposes, the main tool we’ll need from GnuWin32 is make. You can download and install just make, but my preferences is to download and install the full tool suite because there are lots of additional useful tools in there, and that’s what we’ll do in this guide.

Download

  1. Browse to https://sourceforge.net/projects/getgnuwin32/files/getgnuwin32/0.6.30/ and download GetGnuWin32-0.6.3.exe.
    • If for some reason that link doesn’t work, you can start back on the project site and navigate to the downloads folder from there.
  2. Save that file to a temporary location such as C:\temp or your Downloads folder.

Install

  1. Run the executable you downloaded (e.g GetGnuWin32-0.6.3.exe).
  2. When presented, Accept the licence.
  3. You will be presented with a summary of installation instructions which should align to the steps below.
  4. Click the Install button. This will create a new folder in the same location the executable was located (e.g. C:\temp)
  5. Open a Command Prompt as Administrator to ensure the next steps have permission necessary to install.
  6. Change directory to the new folder created when you ran the installer. (e.g. C:\temp\GetGnuWin32)

    1
    
     C:\> cd \temp\GetGnuWin32
    

  7. Run download.bat. This will download all the packages necessary for gnuwin32. You will be prompted to press a key a few times before downloads start. The downloads can take a while even with a fast internet connection.

    1
    
     C:\temp\GetGnuWin32> download.bat
    

  8. If there any failed downloads, run the download.bat again until they are all successfull.
  9. Once all the packages have been downloaded successfully, run the install.bat and pass it the target directory where gnuwin32 should be installed. If your tools directory is C:\AVR, then you would pass C:\AVR\gnuwin32 as in the example below.

    1
    
     C:\temp\GetGnuWin32> install.bat C:\AVR\gnuwin32
    

  10. You will be prompted about installing updated versions of several components. When prompted, just hit Enter to accept the default responses to install these updated components.

Tools directory so far:

1
2
3
4
5
6
7
8
C:\AVR
├───avr8-gnu-toolchain
├───avrdude
└───gnuwin32
    ├───bin
    ├───contrib
    ├───doc
    └───... 

Test

To test the installation of gnuwin32, run make -v in the gnuwin32\bin directory. The output should look something this:

1
2
3
4
5
6
7
8
C:\DEV\gnuwin32\bin\>make -v
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-pc-mingw32

Configure PATH

At this point all the tools are installed, but we still need to make them available on the PATH. Since some of the GnuWin32 tools can conflict with built-in Windows tools of the same name, we’ll only add these tools to the PATH when we need them via a batch file.

Here is a summary of what you’ve done so far:

Zip Target Location Install
avr8-gnu-toolchain-3.6.2.1778-win32.any.x86.zip C:\AVR\avr8-gnu-toolchain Unzip to target
avrdude-v7.0-windows-x86.zip C:\AVR\avrdude Unzip to target
GetGnuWin32-0.6.3.exe C:\AVR\gnuwin32 Installer, download.bat, install.bat C:\AVR\gnuwin32
Chip packs (*.atpack) C:\AVR\avr8-dvp Unzip to target

We’ll create two separate batch files – one for setting the paths, and another for opening a command prompt with the paths set. This way if you want to just add the paths to an existing console session you can run the first, but if you want a brand new session you can run the second.

Create a new file in your tools directory named set_avr_paths.cmd, and paste in the following:

1
2
3
4
5
6
7
@ECHO OFF
ECHO Setting AVR tool paths
SET TOOLS_DIR=C:\AVR

SET PATH=%PATH%;%TOOLS_DIR%\avr8-gnu-toolchain\bin
SET PATH=%PATH%;%TOOLS_DIR%\avrdude
SET PATH=%PATH%;%TOOLS_DIR%\gnuwin32\bin

Create another new file in your tools directory named avr_dev_prompt.cmd, and paste in the following:

1
2
@TITLE AVR Dev Command Prompt
@%comspec% /k " cd \ & "%~dp0set_avr_paths.cmd" "

To test that everything is working correctly, let’s try building a sample program and writing it to an Arduino. If you don’t have an Arduino handy, you can either skip the avrdude step or adjust the program and commands to fit your scenario.

In a new directory, create a new file named blink.c and paste the following program into it. This is a AVR implementation of the classic Arduino Blink sketch. If you load this to an Arduino it will make the built-in LED (pin 13/LED_BUILTIN) flash on and off every 500ms.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <avr/io.h>
#include <util/delay.h>

int main()
{
    // Set built-in LED pin as output
    DDRB |= (1 << DDB5);
    while (1) {
        PORTB |=  (1 << PB5);   // LED on
        _delay_ms(500);
        PORTB &= ~(1 << PB5);   // LED off
        _delay_ms(500);
    }
    return 0;
}

Double-click the avr_dev_prompt.cmd batch file you created above to prepare a console session with tools on the PATH.

In the directory you created the file, run the following commands. Make sure you plug in your Arduino before running avrdude and update the COM port to match the one assigned to your Arduino.

1
2
3
avr-gcc blink.c -o blink.elf -mmcu=atmega328 -DF_CPU=16000000UL -Os
avr-objcopy blink.elf -O ihex blink.hex
avrdude -c arduino -p atmega328p -U flash:w:"blink.hex":a -P COM4

If everything is working you should see something like.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
C:\temp\blink>avr-gcc blink.c -o blink.elf -mmcu=atmega328p -DF_CPU=16000000UL -Os

C:\temp\blink>avr-objcopy blink.elf -O ihex blink.hex

C:\temp\blink>avrdude -c arduino -p atmega328p -U flash:w:"blink.hex":a -P COM4

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "blink.hex"
avrdude: input file blink.hex auto detected as Intel Hex
avrdude: writing flash (176 bytes):

Writing | ################################################## | 100% 0.04s

avrdude: 176 bytes of flash written
avrdude: verifying flash memory against blink.hex:
avrdude: input file blink.hex auto detected as Intel Hex

Reading | ################################################## | 100% 0.03s

avrdude: 176 bytes of flash verified

avrdude done.  Thank you.

Next Steps

That’s all there is to it. To continue setting up your development environment check out my other posts on building projects with a Makefile and configuring VS Code:

  • Building AVR projects with make
  • Use VS Code with the AVR toolchain

Troubleshooting

How do I find out what COM port my Arduino is using?
Open Device Manager. Expand Ports (COM & LPT). You should see an entry named something like “Arduino Uno (COM4)”. The COM port is in parentheses.

Список поддерживаемых микроконтроллеров Atmel серии AVR

ATtiny11
ATtiny12
ATtiny13
ATtiny15
ATtiny4
ATtiny5
ATtiny9
ATtiny10
ATTINY26
ATTINY261
ATTINY461
ATTINY861
ATtiny88
ATtiny2313
ATtiny4313
ATtiny25
ATtiny45
ATtiny85
ATtiny24
ATtiny44
ATtiny84

AT90S1200
AT90S4414
AT90S2313
AT90S2333
AT90S2343
AT90S4433
AT90S4434
AT90S8515
AT90S8535
AT90CAN128
AT90CAN64
AT90CAN32
AT90PWM2
AT90PWM3
AT90PWM2B
AT90PWM3B
AT90USB646
AT90USB647
AT90USB1286
AT90USB1287
AT90USB162
AT90USB82

ATMEGA103
ATMEGA64
ATMEGA128
ATMEGA16
ATMEGA164P
ATMEGA324P
ATmega324PA
ATMEGA644
ATMEGA644P
ATMEGA1284P
ATMEGA162
ATMEGA163
ATMEGA169
ATMEGA329
ATMEGA329P
ATMEGA3290
ATMEGA3290P
ATMEGA649
ATMEGA6490
ATMEGA32
ATMEGA161
ATMEGA8
ATMEGA8515
ATMEGA8535
ATMEGA48
ATMEGA88
ATMEGA88P
ATMEGA168
ATMEGA168P
ATMEGA328P
ATMEGA640
ATMEGA1280
ATMEGA1281
ATMEGA2560
ATMEGA2561
ATMEGA128RFA1
ATmega32U4
ATmega32U2
ATmega16U2
ATmega8U2
ATMEGA325
ATMEGA645
ATMEGA3250
ATMEGA6450
ATXMEGA64A1

ATXMEGA128A1
ATXMEGA128A1REVD
ATXMEGA192A1
ATXMEGA256A1
ATXMEGA64A3
ATXMEGA128A3
ATXMEGA192A3
ATXMEGA256A3
ATXMEGA256A3B
ATXMEGA16A4
ATXMEGA32A4
ATXMEGA64A4
ATXMEGA128A4

AVR32UC3A0512

Building with Arduino IDE

If you prefer, the program can be built as if it was an Arduino sketch. Inside the «source» directory, there is an empty file called «jtag2updi.ino» so that the Arduino IDE can recognize the source code.

Just copy all the files inside «source» to a new directory called «jtag2updi» inside your sketch main directory.

The Arduino IDE will automatically set the correct MCU model and F_CPU, but if you want to change the speed of the UPDI link, you will have to edit UPDI_BAUD directly in the source code.

When building for Logic Green AVR clones, I recommend that you install the board definitions from dbuezas (https://github.com/dbuezas/lgt8fx).

This version allows selection of the MCU running speed, unlike the official release (Larduino_HSP)

Note:
By default, the following pins are used for UPDI communication on common Arduino boards:

  • Arduino Mega (1280/2560): PD3 -> Digital Pin 18
  • Arduino (328P): PD6 -> Digital Pin 6

Hardware

Partlist

Partnumber Value Reichelt No
C1 4,7u RAD 4,7/35
C2 100n X7R-5 100N
C3, C4 22p KERKO 22P
D1, D2 3V6 zener ZF 3,6
CON1 USB-B USB BW
CON2 10pol WSL 10W
IC1 ATmega8-16 ATMEGA 8-16 (not programmed!)
JP1, JP2 2pol 2,54mm SL 1X36G 2,54
LED1 3mm LED green LED 3MM 2MA GN
LED2 3mm LED red LED 3MM 2MA RT
Q1 12Mhz 12,0000-HC49U-S
R1, R2 68 1/4W 68
R3 2,2k 1/4W 2,2k
R4, R5, R6, R7 270 1/4W 270
R8 10k 1/4W 10k
R9, R10 1k 1/4W 1k
M1, M2 Jumper JUMPER 2,54GL SW
M3 Socket 28S GS 28-S
M4 Case TEKO 10007
M5 PCB

User PCB layouts

   usbasp_single_side.t3001.zip
by Thomas Fischl
Single-Side PCB, TARGET 3001! layout file
Size: 90×40 mm
(optimized for case Hammond 1591ATBU)
   lv_usbasp.tar.gz
by Pawel Szramowski (11/2007)
With Low-voltage front-end.
Single-Side PCB, EAGLE layout files, some SMD components
   by Bernhard Walle
Double-Side PCB, EAGLE layout files, part list with order numbers for Reichelt.de and Conrad.de
Size:
optimized for case Hammond 1591ATBU
   http://thomaspfeifer.net/atmel_usb_programmer.htm
by Thomas Pfeifer
Single-Side PCB, PDF layout files, SMD components
   by Tomasz Ostrowski
Single-Side PCB, PDF and EPS layout files, only four 0805 SMD parts, rest discrete components
   USBasp_CH.zip
by Christian Heigemeyr
Single-Side PCB, with some SMD 0805 components, PDF-files
With additional buttons for reset and disconnection of the target
   USBasp.sch,
USBasp.pcbComponentSide.pdf,
TopSide.pdf,
Schematics.pdf
by Zhurov Pavel
Single-Side PCB, P-CAD 2002 format and PDF files
Crosspiece TXD and RXD are added for the ISP connector
   usbasp_gr.rar
by J.A. de Groot
The board is single sided (EAGLE format), measures 3 by 8 cm and uses only regular components.
  

usbasb_mg.zip
by Matthias Görner

Single-Side PCB, eagle-format, with PS/PDF-files
integrated sockets for target chips ATmega8 and ATmega32

  

Tarball with layout
by Hannes Östlund

Doubleside-Side PCB, SMD components, very small

  

by Sergiy Bogdancev (01/2010)

3.3V version, ATMega48 only. Single-side PCB, ExpressPCB layout format + socket board for varies AVRs.
Without future serial interface, chip initially must be programmed with another programmer.

   Eaglefiles (sch/brd) and CAD case design (dxf)
by Hans Hafner, HTL Mössingerstrasse-Klagenfurt, Österreich, hans.hafner (at) htl-klu (dot) at
(01/2010)
CNC-milled case (DXF file available), Eagle layout, only a few SMD parts
   Different USBasp versions: Easy to built non-smd, smd version and a very small USBasp
by Sven Hedin
(01/2011)
Eagle files available.
   USB Key AVR Programmer
by Fabio Baltieri
(09/2011)
Very small USB key like dimensions. SMD parts.
   AVR ISP Programmer
by Jaroslav Vadel
(04/2012)
Small programmer. SMD parts.
   Target project and PDFs (layout/schematics)
by Marius Schäfer
(09/2013)
  

by Stephan Bärwolf
(04/2014)

   USBasp on breadboard with socket for controller daughter boards.
by Fabian Hummel
(11/2018)
   Tjaart van Aswegen designed an SMD board: DIP TRACE and GERBER files.
by Tjaart van Aswegen
(09/2019)
  

Feature rich (e.g. different voltage levels, integrated USB to serial converter, USB-C connector) USBasp compatible design.
AVR Programmer Github project.
by Brian Pepin
(12/2019)

   USBasp with ZIF socket and through hole components.
by Bruno
(04/2020)
   USBasp board with additional 6pin header and selectable target supply (3.3V/off/5.0V).
by Marty E.
(10/2020)
   John included a 40 pin universal socket which takes 8, 14, 20 and 28 pin devices.
He also added a versatile crystal oscillator with outputs of 1, 2, 4, 8 and 16 Mhz to clock the chips.
There is also the standard 6pin ICSP connector and a user led connected to the MOSI pin.
by John P.
(11/2020)
   QUSBASP features a small size and flexibility (different connection options: USB-A or pin header, ICSP with 6 or 10 or pogo pins).
by Qetesh
(07/2021)

Building with avr-gcc

To build, run the make.bat file, after editing it with the following options:

  1. path of AVR-GCC on your system
  2. correct target MCU
  3. Frequency at which your MCU is running (F_CPU, defaults to 16MHz)
  4. Baud rate of UPDI link (UPDI_BAUD, defaults to 225 kbaud)

I provide a makefile suitable for a MS-Windows environment, but I’m sure Linux users can manage.

The pre-built hex file is for ATMega 328P@16MHz; to use a different MCU of the same family, like the mega168, or running at a frequency different from 16MHz, you will need to rebuild.

When building for Logic Green AVR clones, select «atmega328p» as target. The macro ARDUINO_AVR_LARDU_328E must also be defined, either in the «sys.h» file (using #define) or in the gcc command line (by adding -DARDUINO_AVR_LARDU_328E). This allows the code to know the target is a LGT chip, and set the chip core speed at run time from F_CPU. Recommended values for F_CPU are 32MHz or 16MHz; 8MHz also works but is less reliable.

Troubleshooting Tips & Tricks


Atmel DFU Device driver broken

The current version of the Atmel DFU drivers that are distributed via the Windows Update are goofed up (@Atmel: It might have something to do with the fact that you commented out the CopyFiles sections!).
Symptoms are:

  • You cannot use AVRDUDE to connect to an Atmel DFU device, and you get the error message «No matching USB device found».
  • When installing the drivers via Windows Update, you get the error message «Windows encountered a problem installing the drivers for your device» and «A service installation section in this INF is invalid.»
  • In Windows Device Manager, the Atmel DFU device shows up as an unknown device.

You should use an older driver package that does not contain this bug.


Outdated libusb0 driver

The most current version of libusb0.sys is 1.2.6.0, signed on 12/17/2012 by Travis Lee Robinson. If you are using an older version (check with Windows Device Manager), you may not be able to connect to your USB devices using the libusb0 driver.

History

AVRDUDE has once been started by Brian S. Dean as a private project
of an in-system programmer for the Atmel AVR microcontroller series,
as part of the Opensource and free software tools collection available for
these controllers. Originally, the software was written for the FreeBSD operating system,
maintained in a private CVS repository, and distributed under the name
avrprog.

Due to the growing interest in porting the software to other
operating systems, Brian
decided to make the project publically accessible on
savannah.nongnu.org. The name change to AVRDUDE has been chosen to
resolve the ambiguity with the avrprog utility as distributed
by Atmel together with their AVRstudio software.

Timeouts

Previous versions of jtag2updi could get hung up waiting for a target that wasn’t working (for example, because it was connected incorrectly) or the host (for example, if you entered a slow command, like reading a 128k flash memory when you didn’t intend to, and ctrl-c hoping to «save time»), requiring a reset to reconnect to it. This version has timeouts on communication with both the host (250ms — it gives up and assumes the host isn’t going to sat anything after three timeouts, and awaits a fresh session from avrdude), and when talking to the target (100ms — which is far more time than the target should ever take to respond). In the event of a timeout communicating with the target, it will return RSP_NO_TARGET_POWER response. The host timeout of course prevents terminal mode from working (target timeout should just prevent hangs without downside)
Both can be disabled by uncommenting #define DISABLE_TARGET_TIMEOUT and/or #define DISABLE_HOST_TIMEOUT in sys.h — the latter should uncommented if terminal mode is to be used, and should remain commented out if terminal mode will not be used.

Установка AVRDUDE для Windows

На официальном сайте программы http://www.nongnu.org/avrdude/ в разделе для скачивания файлов http://download.savannah.gnu.org/releases/avrdude/
можно скачать все нужные файлы, в том числе и исходный код.

Я собрал в один архив AVRDUDE. 5.11 для Windows с документацией и необходимыми драйверами. Вы можете воспользоваться этой ссылкой, чтобы СКАЧАТЬ AVRDUDE. 5.11 для Windows. Просто скачайте и распакуйте содержимое архива в папку на диске. Далее в примерах будет подразумеваться, что это папка C:\avrdude\
Если используем LPT программатор, запускаем файл install_giveio.bat. Этот пакетный файл установит драйвер прямого доступа к портам (giveio.sys)

Если Вы используете программатор usbasp, обратите внимание на папку usbasp-windriver.2011-05-28. В ней находятся драйвера, их так же следует установить

Список поддерживаемых программаторов

FT2232D based generic programmer
FT2232H based generic programmer
FT232H based module from FTDI and Glyn.com.au
Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2
Atmel AVR ISP
Atmel AVR ISP V2
Atmel AVR ISP mkII
The Bus Pirate
Atmel STK500
Crossbow MIB510 programming board
Atmel STK600
Avr910
USBasp
USBtiny simple USB programmer
Atmel Butterfly Development Board
Atmel AppNote AVR109 Boot Loader
Atmel AppNote AVR911 AVROSP
Mikrokopter.de Butterfly
Mikrokopter.de Butterfly
Atmel JTAG ICE (mkI)
Atmel JTAG ICE mkII in ISP mode
Atmel AVR Dragon
Jason Kyle`s pAVR Serial Programmer
Brian Dean`s Programmer
STK200
Pony Prog STK200
Dontronics DT006
Bascom SAMPLE programming cable
Nightshade ALF-PgmAVR
Steve Bolt`s Programmer
Picoweb Programming Cable
ABCmini Board, aka Dick Smith HOTCHIP
Futurlec.com programming cable.
Xilinx JTAG cable
Direct AVR Parallel Access cable
AT-ISP V1.1 programming cable for AVR-SDK1
ERE ISP-AVR
Altera ByteBlaster
Frank STK200
Atmel at89isp cable
design ponyprog serial
Lancos SI-Prog
serial port banging

Решение

Разработку, прошивку и дальнейшее описание буду вести на Debian 9, но все необходимые компоненты есть и под Windows.

Подготовка окружения

Первым делом подготовим окружение, как писал выше: разработка на C, компиляция прошивки средствами avr-gcc, загрузка прошивки средствами avrdude, через программатор USBasp.

Для установки необходимого собрал следующий набор:

# apt-get install avr-libc gcc-avr binutils-avr avrdude

В Debian драйвера для USBasp устанавливать не надо, они есть в составе ядра. Для Windows необходимо скачать и установить драйвер с сайта разработчика  fischl.de.

Подключение оборудования

На данном этапе не должно вызвать вопросов, но для порядка опишу подключение. Подключаем микроконтроллер к программатору USBasp: выводы SCK, MISO, MOSI, RESET, VCC. Так же не забываем к выходу D0 через резистор 220 Ом подключить анод светодиода, катод к GND.

Написание кода

На данный момент нет разницы в чем будет написан код, для себя выбрал Atom. Создаем файл с расширением .c, например main.c, в котором напишем код мигания светодиодом:

#define F_CPU 16000000UL    // Частота работы МК от внешнего кварца

#include <avr/io.h>
#include <util/delay.h>

void main() {

  DDRD = 0xFF;              // Все выводы порта D как выход
  PORTD = 0x00;             // На всех выводах установим 0
 
  while (1) {

    PORTD |= (1 << PD0);    // Включаем светодиод
    _delay_ms(1000);        // Ждем 1 секунду
    PORTD &= ~(1 << PD0);   // Выключаем светодиод
    _delay_ms(1000);        // Ждем 1 секунду

  }

}

Первой строкой явно указываю частоту с которой должен работать МК, т.к. у меня подключен внешний кварцевый резонатор на 16 МГц. Остальное ясно из комментариев.

Компиляция кода

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

avr-gcc — производит компиляцию C в объектный файл.

К данной команде используем ключи:

  •  -mmcu для указания типа МК, в данном случае ATmega 328P;
  •  -DF_CPU для указания частоты с которой работает МК.
avr-gcc -g -Os -mmcu=atmega328p -DF_CPU=16000000UL main.c -o main.o

После выполнения команды в каталоге появится файл main.o

avr-objcopy — производит преобразование объектного файла в hex.

avr-objcopy -O ihex main.o main.hex

После выполнения команды в каталоге появится файл main.hex. Файл прошивки готов, необходимо загрузить его на МК.

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

Загрузка прошивки в МК

!!! Внимание Настоятельно рекомендую перед выполнением команды avrdude ознакомиться с описанием ключей и все операции производить только после проверки написанного, во избежание окиричивания МК. Все дальнейшие расчеты на свой страх и риск!. Воспользуемся утилитой avrdude, к данной команде используем ключи:

Воспользуемся утилитой avrdude, к данной команде используем ключи:

  •  -c для указания программатора, в данном случае USBasp;
  •  -p для указания типа МК, в данном случае ATmega 328P;
  • -U ключ для указания с каким типом памяти мы работаем, что именно делаем, и указываем файл источник/приемник. В данном случает производится запись во  flas-память МК из файла main.hex.
avrdude -c usbasp -p atmega328p -U flash:w:main.hex

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

Изменение FUSE-битов

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

В коде между включением и выключением указана задержка в 1 секунду, а на практике светодиод горит более 10 секунд. Вооружился секундомером, замер показал 16 секунд. Получается МК работает на частоте 1 МГц, вместо 16 МГц

Но не все так гладко. В коде между включением и выключением указана задержка в 1 секунду, а на практике светодиод горит более 10 секунд. Вооружился секундомером, замер показал 16 секунд. Получается МК работает на частоте 1 МГц, вместо 16 МГц.

Чтение документации показало, что необходимо МК указать на какой частоте он должен работать при подключении внешнего кварцевого резонатора. Для ATmega 328P указывается 3 байтами: lock, lfuse, hfuse.

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

avrdude -c usbasp -p atmega328p -U lock:w:0xFF:m -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m

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

Troubleshooting

If you have triple-checked all the connections but still getting errors, the problem might be the speed of the serial links. I have set the jtag2updi entry on the avrdude configuration file to run at 115200 baud by default. This baud rate can cause errors if, for example, your MCU is running at 8MHz.

This can be changed with the avrdude «-b» option. Valid baud rates are 2400, 4800, 9600, 14400, 19200, 38400, 57600 and 115200. You can make the setting permanent by editing the jtag2updi entry on «avrdude.conf».

If the trouble is on the UPDI link, a slower speed can be selected by changing UPDI_BAUD and recompiling.
You can also try to use the alternate bit banging USART by setting UPDI_IO_TYPE to 2.
You will find these and other configuration settings in the «sys.h» header file.

Sometimes, the programmer can become irresponsive, in that case it should be reset.

AVRISP MkII для avrdude и Arduino

Программатор AVRISP MkII, а точнее его клон AVRISP XPII производства Waveshare Electronics, отлично работавший с Atmel Studio 6-7, и умеющий прошивать огромный список микроконтроллеров по протоколам ISP, PDI и TPI, отказался работать с avrdude и Arduino под Windows 10 x64, выдавая такое сообщение об ошибке:

Вот лог avrdude:

D:\avrdude\avrdude -v -p m328p -c avrispmkII -e -U flash:w:TransistorTester.hex

avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53
 Copyright (c) 2000-2005 Brian Dean, //www.bdmicro.com/
 Copyright (c) 2007-2014 Joerg Wunsch

 System wide configuration file is "D:\avrdude\avrdude.conf"

 Using Port : usb
 Using Programmer : avrispmkII
avrdude: usbdev_open(): did not find any USB device "usb" (0x03eb:0x2104)

avrdude done. Thank you.

После небольшого разбирательства, проблема была найдена в драйвере, установленном Atmel Studio. Для работы AVRISP MkII с avrdude и Arduino требуется драйвер libusb-win32. Для его установки нужна утилита Zadig, скачать её можно на официальном сайте .

Выбираем AVRISP mkII и драйвер libusb-win32

Идём в Диспетчер задач и проверяем появилось ли новое устройство AVRISP mkII?

D:\avrdude\avrdude -v -p m328p -c avrispmkII -e -U flash:w:TransistorTester.hex

avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53
 Copyright (c) 2000-2005 Brian Dean, //www.bdmicro.com/
 Copyright (c) 2007-2014 Joerg Wunsch

 System wide configuration file is "D:\avrdude\avrdude.conf"

 Using Port : usb
 Using Programmer : avrispmkII
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0000B8080308
 AVR Part : ATmega328P
 Chip Erase delay : 9000 us
 PAGEL : PD7
 BS2 : PC2
 RESET disposition : dedicated
 RETRY pulse : SCK
 serial program mode : yes
 parallel program mode : yes
 Timeout : 200
 StabDelay : 100
 CmdexeDelay : 25
 SyncLoops : 32
 ByteDelay : 0
 PollIndex : 3
 PollValue : 0x53
 Memory Detail :

 Block Poll Page Polled
 Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
 ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
 flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
 lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

 Programmer Type : STK500V2
 Description : Atmel AVR ISP mkII
 Programmer Model: AVRISP mkII
 Hardware Version: 1
 Firmware Version Master : 1.24
 Vtarget : 4.8 V
 SCK period : 4.00 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: erasing chip
avrdude: reading input file "TransistorTester.hex"
avrdude: input file TransistorTester.hex auto detected as Intel Hex
avrdude: writing flash (30614 bytes):

Writing | ################################################## | 100% 5.90s

avrdude: 30614 bytes of flash written
avrdude: verifying flash memory against TransistorTester.hex:
avrdude: load data flash data from input file TransistorTester.hex:
avrdude: input file TransistorTester.hex auto detected as Intel Hex
avrdude: input file TransistorTester.hex contains 30614 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 5.60s

avrdude: verifying ...
avrdude: 30614 bytes of flash verified

avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done. Thank you.

AVRISP MkII с avrdude заработал! Zadig работает с Windows 7-10 x86/x64. Если нужна работа с Atmel Studio придётся переключиться на их собственный драйвер.

Слетает тип сети с доменной на частную на Windows Server
Transmission для Windows

Using with avrdude

It has been modified to work with avrdude 6.3, by removing (actually, commenting out) some incompatible stuff, and adding the «jtag2updi» programmer type.

The definitions for UPDI chips were slightly modified so that avrdude thinks they use the PDI programming interface instead of UPDI (i.e., avrdude thinks they are some kind of XMegas).

This allows the jtagice mk2 protocol to be used for programming UPDI chips, since this protocol predates UPDI and is not formally compatible with it. Originally, I had planed to use the STK500v2 protocol, and emulate the ISP interface, and I actually wrote an ISP version of the programmer software.

However, this would require entirely new definitions for the UPDI chips inside the avrdude.conf file, while using jtagice2 requires only very slight changes to the definions provided by Atmel (now Microchip).

Note:
If you install the Arduino board «Nano Every» in your Arduino IDE, it will come with versions of avrdude and avrdude.conf files that support jtag2updi. You can use those files instead of the compatibility avrdude.conf supplied here which is meant for older avrdude versions.

Jtagice mk2 is the most advanced of Atmel’s programming protocols that still supports a UART serial connection instead of USB, making it easily compatible with any Arduino you choose to host this software, and any OS you run avrdude on.

It’s major limitation is speed; it can’t go over 115200 Baud, because the protocol lacks definitions for higher speeds. It’s actually inferior to the STK500v2 protocol in this respect, this older standard can run at any speed avrdude instructs it to.

Fortunately, the current UPDI chips do not have very large flash memories, so I think this isn’t a major issue.

Example command line (windows):

avrdude -c jtag2updi -P com7 -p t1614

If all the connections are correct and the target is indeed an unlocked tiny1614, the output will be:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e9422 (probably t1614)

avrdude done.  Thank you.

If the chip is locked, the output will be:

avrdude: jtagmkII_reset(): bad response to reset command: RSP_ILLEGAL_MCU_STATE
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: jtagmkII_close(): bad response to sign-off command: RSP_ILLEGAL_MCU_STATE

avrdude done.  Thank you.

To unlock the chip, you need to erase it, using the -e option on avrdude:

avrdude -c jtag2updi -P com7 -p t1614 -e

Alternatively, you can erase the chip from interactive mode, enter it using «-t», and «-F» to override the error:
Note: You must build with DISABLE_HOST_TIMEOUT defined for terminal mode to work. See below for more information on the timeouts.

avrdude -c jtag2updi -P com7 -p t1614 -t -F

You will enter the avrdude prompt:

avrdude: jtagmkII_reset(): bad response to reset command: RSP_ILLEGAL_MCU_STATE
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0xffff00
avrdude: Expected signature for ATtiny1614 is 1E 94 22
avrdude: NOTE: Programmer supports page erase for Xmega devices.
         Each page will be erased before programming it, but no chip erase is performed.
         To disable page erases, specify the -D option; for a chip-erase, use the -e option.
avrdude>

Enter «erase» then «quit» and the chip will be unlocked (and erased).

avrdude> erase
>>> erase
avrdude: erasing chip
avrdude> quit
>>> quit

avrdude done.  Thank you.

Build


Building AVRDUDE for Windows


Windows Prerequisites

In order to build AVRDUDE on Windows, you need:

Microsoft Visual Studio 2019 with ‘Desktop development with C++’ enabled


Windows Build Instructions

To build AVRDUDE on Windows, do the following:

  • Open the solution and build the project.

Note: The folder includes pre-built files from the AVRDUDE configure and grammar generation.


Building AVRDUDE for Linux

Note that the AVRDUDE for Linux version does not contain all extra Windows features. The features that have been added to the stock version of AVRDUDE include:

  • Support Micronucleus bootloader
  • Support Teensy HalfKay bootloader


Linux Prerequisites

In order to build AVRDUDE on Linux, you need to install the following packages:

sudo apt install git make gcc automake libtool flex bison libelf-dev libusb-dev libftdi1-dev libhidapi-dev


Linux Build Instructions

To build AVRDUDE on Linux, run the following commands:

git clone --branch windows https://github.com/mariusgreuel/avrdude
cd avrdude
./bootstrap
./configure
make

To install a local build of AVRDUDE on your system, run the following command:

sudo make install


Linux udev rules

If you intent to use either the Micronucleus or Teensy bootloader, you should edit the udev rules so that you can run AVRDUDE without root.

For instance, if you are on Ubuntu and you installed the avrdude package, you would edit and add the following rules:

# Micronucleus Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="0753", TAG+="uaccess"
# Teensy Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0478", TAG+="uaccess"

History

AVRDUDE has once been started by Brian S. Dean as a private project
of an in-system programmer for the Atmel AVR microcontroller series,
as part of the Opensource and free software tools collection available for
these controllers. Originally, the software was written for the FreeBSD operating system,
maintained in a private CVS repository, and distributed under the name
avrprog.

Due to the growing interest in porting the software to other
operating systems, Brian
decided to make the project publically accessible on
savannah.nongnu.org. The name change to AVRDUDE has been chosen to
resolve the ambiguity with the avrprog utility as distributed
by Atmel together with their AVRstudio software.

Обозначения индексов микроконтроллеров

После обозначения базовой версии и серии микроконтроллера, через дефис идет индекс, указывающий вариант исполнения микроконтроллера.Индекс состоит из 1-2 цифр, которые означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания, и из 1-3 букв, которые обозначают вариант корпуса, температурный диапазон работы, и особенности изготовления.Первая буква (или две буквы) после частоты обозначает тип корпуса:P — корпус DIP (PDIP)A — корпус TQFPM — корпус MLFTS — корпус SOT-23 (ATtiny4/5/9/10)J — корпус PLCCA — корпус UDFN/USONC — корпус CBGACK — корпус LGAS — корпус EIAJ SOICSS — узкий корпус JEDEC SOICT — корпус TSOPX — корпус TSSOP

Следующая буква означает температурный диапазон и особенности изготовления:C — коммерческий температурный диапазон (0 °C — 70 °C)A — температурный диапазон −20 °C — +85 °C, с использованием бессвинцового припояI — индустриальный температурный диапазон (-40 °C — +85 °C)U — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием бессвинцового припояH — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием NiPdAuN — расширенный температурный диапазон (-40 °C — +105 °C), с использованием бессвинцового припояF — расширенный температурный диапазон (-40 °C — +125 °C)Z — автомобильный температурный диапазон (-40 °C — +125 °C)D — расширенный автомобильный температурный диапазон (-40 °C — +150 °C)
Еще в самом конце может быть буква R, которая означает, что микроконтроллеры упакованы в ленты для автоматизированных систем сборки

К примеру:ATmega8L-8AU — максимальная частота — 8 мегагерц, корпус — TQFP, индустриальный температурный диапазон (-40 °C — +85 °C), с использованием бессвинцового припояATmega8-16PN — максимальная частота — 16 мегагерц, корпус — PDIP, расширенный температурный диапазон (-40 °C — +105 °C), с использованием бессвинцового припоя

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

Линейка микроконтроллеров ATmegaЛинейка микроконтроллеров ATtiny

Маркировка микроконтроллеров AVR ATmega и ATtinyМаркировка микроконтроллеров AVR семейства ATmega и ATtiny, базовые версии и версии микроконтроллеров, индекс микроконтроллеров
Published by: Мир микроконтроллеров

Date Published: 04/27/2015

  • Как установить apk файл на компьютер windows
  • Как установить avast free antivirus на windows 10
  • Как установить apple music на windows
  • Как устанавливать иконки на windows 10
  • Как установить apple mouse на windows 10