Site Loader

Содержание

Как пользоваться avrdude, быстрый старт | avr

Наверняка у Вас уже есть макетная плата на микроконтроллере AVR (скорее всего Arduino Uno на микроконтроллере ATmega328P или какая-нибудь аналогичная), и Вы хотите научиться её программировать, т. е. прошивать программу в память кристалла микроконтроллера. Есть множество различных способов, здесь будет рассмотрен вариант использования такого универсального инструмента как avrdude.

Почему следует использовать avrdude? По многим причинам — он бесплатен, работает на любых операционных системах (Linux, Windows, MacOS), поддерживает все популярные протоколы программирования. Т. е. может работать с любым программатором (USBasp, AVR-mkII и т. д. [3]), в том числе и с загрузчиками Arduino и USBasp [4,5].

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

Поначалу это может показаться сложным, но если разобраться, то окажется, что командная строка это очень удобно, потому что предоставляет универсальный способ работы со многими средами программирования. Например, можно писать программы для AVR даже в среде Microsoft Visual Studio, запуская процесс компиляции с помощью команд makefile, и прошивать память микроконтроллера настройкой запуска внешней команды прямо из Visial Studio (подробнее см. [6]). Утилиту avrdude использует также среда программирования Arduino для прошивки памяти микроконтроллера платы через загрузчик UART.

[Где взять avrdude]

Ссылки для загрузки AVRDUDE лучше всего найти с помощью Google. Обычно avrdude.exe находится в пакете утилит разработчика WinAVR, также она входит в пакет среды разработки Arduino IDE. Поэтому скачайте и установите либо WinAVR, либо среду разработки Arduino. Как вариант, можете скачать архив [12], там найдете все необходимое для этой статьи, в том числе и утилиту avrdude.

Различные версии avrdude и PDF-документацию можно найти по ссылке http://download.savannah.gnu.org/releases/avrdude/.

Онлайн-документация: http://www.nongnu.org/avrdude/user-manual/avrdude.html.

[Запуск avrdude]

В операционной системе Windows требуется открыть окно интерпретатора команд cmd.exe. Для этого в Start Menu (кнопка ПУСК) выберите команду Run… (Выполнить…), в окне приглашения введите cmd и кликните по кнопке OK.

В операционной системе MacOS X можете использовать программу Terminal для получения доступа к интерфейсу ввода команд. Программа Terminal находится в папке Utilites.

Теперь в окне терминала введите команду avrdude и нажмите Ender, в результате утилита avrdude выдаст подсказку в виде списка основных опций.

[Описание опций AVRDUDE]

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

-p partno: эта опция просто говорит утилите, какой микроконтроллер AVR будет программироваться. Например, если Вы собрались программировать ATtiny2313, то в качестве partno введите attiny2313.

-b baudrate: эта опция используется для настройки скорости последовательной передачи данных (через RS-232, UART) для программаторов, работающих по протоколам наподобие STK200 или STK500 STK500. Часто эту опцию использовать необязательно, потому что подходит скорость, настроенная по умолчанию.

-B bitrate: эта опция меняет скорость следования бит, на которой программатор общается с программируемым чипом. Если Ваш микроконтроллер тактируется очень низкой частотой, то потребуется снизить скорость данных программирования. Обычно микроконтроллер работает на высокой частоте (8 МГц и выше, особенно если используется кварцевый резонатор), так что эта опция применяется редко.

-C config-file: это файл конфигурации, который говорит avrdude о различных способах, как ему общаться с программатором. Имеется файл конфигурации по умолчанию, который используется без указания -C опции, так что эта опция обычно не нужна.

Если путь до файла имеет пробелы, то его следует брать в двойные кавычки. Например: -C»C:\Program Files\Arduino1.0.6\hardware\tools\avr\etc\avrdude.conf».

-c programmer: эта опция задает тип программатора (его протокол). Например, если используете STK500, то укажите stk500, если используете программатор DT006, то укажите dt006, и т. д.

-D: опция запрещает очистку памяти чипа перед программированием. Скорее всего, эта опция Вам никогда не потребуется.

-P port: опция задает порт обмена данными между компьютером и программатором. Это может быть COM1, LPT1 или USB.

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

-e: опция очистки памяти чипа. Обычно её использовать не нужно, потому что очистка FLASH выполняется автоматически перед программированием.

-U memtype:r|w|v:filename[:format]: а вот эта команда уже по-настоящему важна. Именно одна задает, какое именно программирование будет произведено. Здесь memtype может быть flash или eeprom для памяти, либо hfuse, lfuse или efuse для конфигурационных фьюзов чипа. Буквы r|w|v обозначают операцию над памятью, т. е. r (read, чтение), w (write, запись) или v (verify, проверка памяти). Часть команды filename задает имя файла, который будет прочитан или записан во время выполнения команды. [:format] задает опцию формата файла. Чаще всего используется формат Intel Hex [7], и файл данных обычно получает расширение *.hex». Если Вы хотите записать, например, файл test.hex в память flash, то должны использовать -U flash:w:test.hex:i. Если хотите прочитать память eeprom в файл «eedump.hex», то должны использовать команду -U eeprom:r:eedump.hex:i.

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

-n: это означает, что никаких действий записи производиться не будет. Команда полезна, когда Вы хотите гарантировать, что ни одна из отправляемых команд не повредит содержимое памяти чипа. Это разновидность ‘блокировки безопасности’.

-V: выключает автоматическую проверку содержимого памяти при записи. Не советую использовать эту опцию, потому что проверка дает дополнительную уверенность, что память записана правильно.

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

-t: запускает режим терминала, когда Вы вводите команды строка за строкой. Не используйте этот режим, поскольку это добавляет сложности.

-E: выводит некоторые спецификации программатора, не используйте эту опцию.

-v: опция включает подробный вывод сообщений. Это может потребоваться для диагностики, чтобы получить дополнительную информацию. Обычно эта опция не нужна.

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

В этом списке красным цветом выделены те опции, которые скорее всего Вам понадобятся. Давайте рассмотрим подробнее использование этих опций.

[-c programmer]

Чтобы получить список поддерживаемых программаторов (и найти тот, который у Вас), введите команду avrdude -c qwerty (здесь qwerty это произвольный набор символов, который не соответствует ни одному из поддерживаемых программаторов). Как результат выполнения команды будет выведен список поддерживаемых программаторов.

Найдите в этом списке имя, соответствующее Вашему используемому программатору. Это имя следует подставлять в опцию -c programmer.

[-p partno]

Чтобы получить список программируемых микроконтроллеров AVR, введите команду avrdude -c avrisp (при этом не имеет значения, используете ли Вы реально программатор avrisp) без указания имени микроконтроллера. Не следует запоминать этот длинный список, он используется только для того, чтобы узнать нужное имя для программируемого микроконтроллера, которое следует подставлять в командную строку вместе с опцией -p partno.

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

Обратите внимание, что названия моделей чипов t2313 и 2313, m8 и m88, c128 и m128 выглядят очень похоже, но на самом деле это абсолютно разные модели микроконтроллеров! Поэтому во избежание ошибки советую Вам вместо псевдонима чипа ввести его полное имя. Т. е. вместо t2313 используйте attiny2313, или вместо m8 используйте atmega8. Avrdude достаточно умен, чтобы распознать правильно тип чипа по его полному имени.

Внимательно проверьте модель программируемого чипа по маркировке на его верхней стороне корпуса. К примеру, там может быть написано ATTINY2313 и ATMEGA8, Суффиксы -20PI и -16PC в маркировке просто указывают скоростные параметры микроконтроллера, и при программировании на эти суффиксы не стоит обращать внимания.

[-P port]

Эта опция говорит avrdude, где искать Ваш подключенный программатор. Если Вы используете устройство, подключенное через USB, то просто примените опцию -P usb или вообще не указывайте её. Утилита avrdude автоматически распознает подключение для программатора, который является устройством USB.

Если Вы используете параллельный (LPTx) или последовательный (COMx) порт для подключения программатора (что сейчас уже почти не актуально, потому что компьютеры с такими портами уже практически не выпускаются), то должны использовать эту опцию, чтобы показать порт, к которому подключен программатор. На операционной системе Windows в 99% случаев это будет lpt1 (для параллельного порта) или com1 (для последовательного порта), но Вы можете всегда проверить это через просмотр раздела «Ports (COM & LPT)», по-русски это раздел «Порты (COM и LPT)» дерева Device Manager (Менеджер Устройств). Откройте управляющую панель System Properties (Свойства Системы), и выберите закладку Hardware (Оборудование):

Кликните на кнопке Device Manager (Менеджер Устройств), и разверните пункт Ports (Порты).

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

На компьютерах Mac не бывает традиционных параллельных и последовательных портов. Однако если Вы используете адаптер USB-serial (что делает возможным использовать программаторы STK500 или AVRISP v1 вместе с компьютером Mac), то для avrdude нужно указать последовательный порт. Не пока знаю надежного способа определять порт подключения, однако использую для этого окно терминала, где нужно ввести команду ls -l /dev/cu.* (скорее всего, на Linux подойдет примерно такой же способ, или можно использовать команду dmesg). Ниже приведен скриншот примера вывода этой команды.

/dev/cu.Bluetooth это встроенный порт bluetooth, он не нужен. /dev/cu.modem это модем (если он имеется на Вашем компьютере), его также не нужно использовать. Обратите внимание на порты наподобие /dev/cu.usbserial или /dev/cu.KeySerial1. В моем случае это порт /dev/cu.usbserial-FTCTYG5U.

[-U memtype:r|w|v:filename:format]

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

memtype может быть либо flash, либо eeprom, либо hfuse (старший байт фьюзов), либо lfuse (младший байт фьюзов) или efuse (расширенный байт фьюзов).

r|w|v может быть либо r (read, чтение), w (write, запись), v (verify, проверка).

filename имя входного (для записи или проверки) или выходного (для чтения) файла.

[:format] не обязательная опция, указывающая формат файла. Можно опустить эту опцию при записи, но для чтения указывайте i, чтобы выходной файл получил формат Intel Hex [7] (это наиболее распространенный формат файла).

Для примера, чтобы записать файл firmware.hex в память программ (flash), используйте команду -U flash:w:firmware.hex, чтобы проверить содержимое памяти eeprom на соответствие файлу mydata.eep, используйте команду -U eeprom:v:mydata.eep, и для чтения младшего байта фьюзов используйте команду -U lfuse:r:lfusefile.hex:i.

[Как программировать]

В примерах ниже я буду использовать программатор mkII-slim [8] (это клон фирменного AVRISP-mkII компании Atmel) и загрузчик USBasp на примере программирования чипов ATmega328P и ATmega32A через интерфейс ISP и через интерфейс USB. Само собой, Вы должны будете ориентироваться на Ваш конкретный программатор, программируемый чип и его фьюзы.

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

Прошивать я буду тестовый пример, мигающий светодиодом на плате (так называемый Hello World для мира микроконтроллеров). Если кому-то интересно, то код этого примера приведен во врезке, или можете скачать его проект AVR Studio по ссылке [12] (см. папку HelloWorld архива).

Запишите файл прошивки (Hello-World-Arduino-ATmega328.hex, Hello-World-metaboard-ATmega328.hex или Hello-World-ATmega32A.hex, или другой, в зависимости от микроконтроллера, который будете программировать) в заранее известный каталог на диске, например C:\temp. Этот путь до файла будем использовать для команды -U. Готовые прошивки можно взять из папке HEX архива [12].

Все платы Arduino обычно программируются одинаково, через интерфейс USB. При этом используется загрузчик UART (интерфейс USB организован аппаратно, с помощью специального отдельного чипа). В этом примере в плату Arduino Nano будет записана прошивка HEX\Hello-World-Arduino-ATmega328.hex. Загрузчик использует функцию самопрограммирования памяти программ AVR [9]. Обратите внимание, что фьюзы таким способом записать нельзя (самопрограммирование памяти программ микроконтроллера AVR не распространяется на фьюзы).

При компилировании прошивки Hello-World-Arduino-ATmega328.hex было учтено, что светодиод подключен к порту PB5 (цифровой порт D13 Arduino).

#define LED    PB5      //Для плат Arduino Uno и metaboard.

Подключите плату Arduino Nano через USB (при этом на микроконтроллер ATmega328 будет подано питание), и выполните команду:

avrdude -C"C:\Program Files\Arduino1.0.6\hardware\tools\avr\etc\avrdude.conf" -pm328p -carduino
 -PCOM20 -b57600 -Uflash:w:c:\temp\HEX\Hello-World-Arduino-ATmega328.hex:i

Примечание: здесь подразумевается, что виртуальный COM-порт, через который подключена плата Arduino, имеет имя COM20.

При компилировании прошивки Hello-World-ATmega2560.hex было учтено, что светодиод подключен к порту PB7 (цифровой порт D13 Arduino).

#define LED    PB7      //Для платы Arduino MEGA 2560

Подключите плату Arduino MEGA 2560 через USB (при этом на микроконтроллер платы будет подано питание), и выполните команду:

avrdude -C"C:\Program Files\Arduino1.0.6\hardware\tools\avr\etc\avrdude.conf"
 -patmega2560 -cwiring -P\\.\COM155 -b115200 -D -Uflash:w:c:\temp\Hello-World-ATmega2560.hex.hex

Примечание: здесь подразумевается, что виртуальный COM-порт, через который подключена плата Arduino, имеет имя COM155.

В плату metaboard [11] записан загрузчик USBasp, эмулирующий поведение программатора USBasp. Интерфейс USB реализован программно, с помощью библиотеки V-USB. Как и в предыдущем примере с Arduino, фьюзы записать нельзя, мы будем записывать только память программ.

При компилировании прошивки Hello-World-metaboard-ATmega328.hex было учтено, что светодиод подключен к порту PB5.

#define LED    PB5      //Для плат Arduino Uno и metaboard.

Для записи прошивки подключите плату metaboard через USB, удерживая при подключении кнопку S1 Reset, после подключения к USB кнопку отпустите (это активирует работу загрузчика), и выполните команду:

avrdude -patmega328 -cusbasp -Uflash:w:c:\temp\Hello-World-metaboard-ATmega328.hex:i

Чтобы убедиться, что записанная программа работает и светодиод мигает, подключите его через резистор 330..470 ом к порту PB5 (ножка 6 коннектора IP2 платы metaboard), что соответствует цифровому порту D13 Arduino.

На плату AVR-USB-MEGA16 установлен микроконтроллер ATmega32A, и также используется загрузчик USBasp на основе все той же библиотеки V-USB. Поэтому программирование будет осуществляться аналогично. Перед подключением платы AVR-USB-MEGA16 к USB установите перемычку между контактами 4 и 6 коннектора U1 ISP, это активирует работу загрузчика:

И запустите следующую команду:

avrdude -patmega32 -cusbasp -Uflash:w:c:\temp\Hello-World-ATmega32A.hex:i

После программирования будет мигать светодиод D1, подключенный к ножке PB1 микроконтроллера, см. схему платы в статье [10]. При компилировании прошивки Hello-World-ATmega32A.hex было учтено, что светодиод подключен к порту PB0.

#define LED    PB0      //Для платы AVR-USB-MEGA16.

Здесь рассматривается другой способ программирования — через интерфейс ISP, с помощью программатора mkII-slim [8]. Этот способ позволяет программировать также и фьюзы, однако требует наличия программатора.

Подключите сначала программируемую плату к программатору через интерфейс ISP. Перемычка питания на программаторе mkII-slim должна быть установлена в положение «5V». Обратите внимание, что в данном примере питание на программируемую плату подается через программатор, поэтому подключать плату AVR-USB-MEGA16 к USB не обязательно.

Для подключения через ISP понадобится плоский кабель из 6 проводов мама-мама:

1 ————-MISO———— 1
2 ————-VCC————- 2
3 ————-SCK————- 3
4 ————-MOSI———— 4
5 ————-~RST———— 5
6 ————-GND————- 6

После того, как соединили кабелем ISP программируемую плату и программатор, подключите программатор через USB и для программирования памяти программ выполните команду:

avrdude -p atmega32 -P usb -c avrispmkii -e -U flash:w:c:\temp\Hello-World-ATmega32A.hex

Как программировать фьюзы:

avrdude -p atmega32 -P usb -c avrispmkii -U lfuse:w:0xCF:m -U hfuse:w:0x98:m

Программирование платы Arduino Uno, на которой установлен микроконтроллер ATmega168, плата подключена к компьютеру через виртуальный порт COM4:

avrdude -F -v -pm168 -cstk500v1 -P\\.\COM4 -b19200 -D -Uflash:w:"firmware.hex":i

Программирование ATtiny2313 с помощью программатора USBtiny [2]:

type in avrdude -c usbtiny -p attiny2313 -U flash:w:firmware.hex

Программирование через параллельный bitbang-программатор DT006 (такой как MiniPOV2):

avrdude -c dt006 -P lpt1 -p attiny2313 -U flash:w:firmware.hex

Программирование через последовательный bitbang-программатор DASA (такой как MiniPOV3):

avrdude -c dasa -P com1 -p attiny2313 -U flash:w:firmware.hex

Программирование платы разработчика STK500 (она работает как одноименный программатор):

avrdude -c stk500 -P com1 -p attiny2313 -U flash:w:firmware.hex

Программирование через программатор AVRISP v2 USB:

avrdude -c avrispv2 -p attiny2313 -U flash:w:firmware.hex

[Ссылки]

1. Starting out with avrdude site:ladyada.net.
2. USBtiny site:dicks.home.xs4all.nl.
3. Программаторы для AVR.
4. Arduino bootloader.
5. AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32.
6. Использование MS Visual Studio IDE для программирования AVR/Arduino.
7. Intel HEX: описание формата файла.
8. AVR-USB162MU: макетирование и изготовление программатора AVRISP-MKII в домашних условиях.
9. AVR109: самопрограммирование AVR.
10. Макетная плата AVR-USB-MEGA16.
11. Макетная плата metaboard.
12. 170305avrdude.zip.

Avrdude — консольная программа прошивки микроконтроллеров — IST Knowledge

Avrdude (AVR Downloader-Uploader) — бесплатная кросплатформенная программа, предназначенная для прошивания микроконтроллеров компании ATMEL. Поддерживает практически все имеющиеся официальные типы программаторов, а также некоторые сторонние программаторы.

Сайт программы: http://www.nongnu.org/avrdude/ Лицензия: GPL Операционная система: Кросплатформенный Особенностью программы Avrdude является то, что она имеет консольный интерфейс пользователя, что потребует от пользователя определенных навыков. Тем не менее для любителей графического интерфейса имеется ряд сторонних графических оболочек для этой программы. Хотя графический интерфейс является во многом удобным и предпочтительным, для выполнения повседневных однотипных задач все же лучше использовать программу из скриптов cmd, что будет рассмотрено в данном документе. Альтернативным способом прошивания микроконтроллеров являются встроенные средства, входящие в состав средств разработки, такие как AVR Studio. Но они удобны только в процессе разработки и отладки программ. Avrdude больше полезен в процессе серийного прошивания готовых изделий, т.к. не потребует для работы установки среды разработки, а для прошивки микроконтроллера достаточно только дважды щелкнуть мышью по заранее подготовленному ярлыку (естественно с указанными параметрами запуска программы).

Итак, для работы с программой потребуется:

  1. Установить программу;
  2. Разобраться с параметрами командной строки и сформировать команду запуска программы.

После чего программа готова к использованию.

Установка Avrdude

Avrdude входит в состав пакета WinAVR, поэтому установка сводится к установке данного пакета. Скачать WinAVR можно здесь: http://sourceforge.net/projects/winavr/. После установки пакета WinAVR можно запускать Avrdude, для чего откройте командную строку и выполните команду: avrdude После чего на экране вы должны увидеть краткую инструкцию команды:

Параметры программы

Синтаксис команды Avrdude: Avrdude [опции] Где [опции] задают параметры команды в формате -ключ_значение. Рассмотрим наиболее значимые опции команды.

Задаем тип микроконтроллера (-p)

Avrdude -p <partno>

где <partno> — тип микроконтроллера. Данная команда указывает какой тип микроконтроллера используется. Например, для микроконтроллера Atmega32 <partno> будет равен m32.

Задаем скорость порта для программатора (-b)

Avrdude -b <baudrate> 

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

Задаем скорость обмера данными программатора с микроконтроллером (-B)

Avrdude -B <bitclock> 

где < bitclock> переопределяет скорость обмена данными программатора с микроконтроллером. Данный параметр может потребоваться если частота микроконтроллера слишком низкая и не позволяет производить программирование на скорости по умолчанию. В таком случае с помощью данного параметра скорость программирования может быть снижена.

Запрещаем автоматическую очистку памяти микроконтроллера перед прошиванием (-D)

Avrdude -D Если нам не нужно выполнять автоматическую очистку flash-памяти микроконтроллера, выполняемую перед ее прошиваением, то используем данную опцию.

Указываем порт, к которому подключен программатор (-P)

Avrdude -P <port> Указывается коммуникационный порт по которому к компьютеру подключен программатор. Среди возможных значений могут быть COM1 для последовательного интерфейса или LPT1 для параллельного или USB.

Отключение проверки сигнатуры микроконтроллера (-F)

Avrdude -F Опция отключает проверку сигнатуры микроконтроллера при прошивке. Не рекомендуется использовать данную опцию, т.к. проверка сигнатуры позволяет проверять тот ли тип микроконтроллера подключен, что мы предполагаем или нет.

Очистка микроконтроллера (-e)

Avrdude -e Производит очистку flash-памяти микроконтроллера. Данная операция производится автоматически при прошивании.

Манипуляции с памятью микроконтроллера (-U)

Avrdude -U <memtype>:r|w|v:<filename>[:format] Наиболее значимая опция команды, которая непосредственно отвечает за программирование микроконтроллера. Параметр memtype задает какой тип памяти будет затронут командой:

  • flash — флеш память микроконтроллера;
  • eeprom — энергонезависимая память микроконтроллера;
  • hfuse — старший байт фьюзов микроконтроллера;
  • lfuse —  младший байт фьюзов микроконтроллера;
  • efuse —  еще один байт фьюзов микроконтроллера (если поддерживается микроконтроллером).

Что сделать с памятью определяет следующий за memtype параметр через двоеточие, который обозначает запись в память (r), чтение содержимого памяти микроконтроллера и проверка памяти (v). Далее после двоеточего следует имя файла <filename> (можно полный путь с указанием диска в кавычках) куда следует сохранить или откуда надо загрузить содержимое памяти. Необязательный параметр format определяет формат файла, в котором хранится участок памяти. Наиболее типичным для flash памяти будет формат «Intel Hex», обозначаемый символом i. Таким образом, команда на запись в микроконтроллера прошивки, содержащейся в файле test.hex будет следующей: Avrdude -U flash:w:test.hex:i 

Команда на чтение содержимого энергонезависимой памяти микроконтроллера в файл  eedump.hex будет следующей:Avrdude -U eeprom:r:eedump.hex:i

Блокировать любую запись в микроконтроллер (-n)

Avrdude -n Опция заблокирует любые попытки записать что-либо в микроконтроллер. Может потребоваться если вы собираетесь попробовать выполнить команду, но пока в чем-то не уверены и хотите сначала ее проверить, т.к. боитесь, что испортите микроконтроллер.

Разрешение на изменение фьюзов (-u)

Avrdude -u Если вы собираетесь изменить фьюзы микроконтроллера, то необходимо подтвердить это намерение с помощью данной опции.

Открытие терминала программатора (-t)

Avrdude -t Данная опция позволяет работать с программатором в режиме терминала. Эта опция полезна для продвинутых пользователей.

Выключить автоматическую проверку записи (-V)

Avrdude -V Опция запрещает производить проверку данных при записи.

Задаем тип программатора (-c)

С помощью опции -c <programmer> возможен выбор одного из следующих программаторов:

2232HIOFT2232H based generic programmer
4232hFT4232H based generic programmer
89ispAtmel at89isp cable
abcminiABCmini Board, aka Dick Smith HOTCHIP
alfNightshade ALF-PgmAVR, http://nightshade.homeip.net/
arduinoArduino
arduino-ft232rArduino: FT232R connected to ISP
atispAT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/&gt;
avr109Atmel AppNote AVR109 Boot Loader
avr910Atmel Low Cost Serial Programmer
avr911Atmel AppNote AVR911 AVROSP
avrftdiFT2232D based generic programmer
avrispAtmel AVR ISP
avrisp2Atmel AVR ISP mkII
avrispmkIIAtmel AVR ISP mkII
avrispv2Atmel AVR ISP V2
bascomBascom SAMPLE programming cable
blasterAltera ByteBlaster
bsdBrian Dean’s Programmer, http://www.bsdhome.com/avrdude/
buspirateThe Bus Pirate
buspirate_bbThe Bus Pirate (bitbang interface, supports TPI)
butterflyAtmel Butterfly Development Board
butterfly_mkMikrokopter.de Butterfly
bwmegaBitWizard ftdi_atmega builtin programmer
c2n232iserial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts
dapaDirect AVR Parallel Access cable
dasaserial port banging, reset=rts sck=dtr mosi=txd miso=cts
dasa3serial port banging, reset=!dtr sck=rts mosi=txd miso=cts
diecimilaalias for arduino-ft232r
dragon_dwAtmel AVR Dragon in debugWire mode
dragon_hvspAtmel AVR Dragon in HVSP mode
dragon_ispAtmel AVR Dragon in ISP mode
dragon_jtagAtmel AVR Dragon in JTAG mode
dragon_pdiAtmel AVR Dragon in PDI mode
dragon_ppAtmel AVR Dragon in PP mode
dt006Dontronics DT006
ere-isp-avrERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf&gt;
frank-stk200Frank STK200
ft232rFT232R Synchronous BitBang
ft245rFT245R Synchronous BitBang
futurlecFuturlec.com programming cable.
jtag1Atmel JTAG ICE (mkI)
jtag1slowAtmel JTAG ICE (mkI)
jtag2Atmel JTAG ICE mkII
jtag2avr32Atmel JTAG ICE mkII im AVR32 mode
jtag2dwAtmel JTAG ICE mkII in debugWire mode
jtag2fastAtmel JTAG ICE mkII
jtag2ispAtmel JTAG ICE mkII in ISP mode
jtag2pdiAtmel JTAG ICE mkII PDI mode
jtag2slowAtmel JTAG ICE mkII
jtag3Atmel AVR JTAGICE3 in JTAG mode
jtag3dwAtmel AVR JTAGICE3 in debugWIRE mode
jtag3ispAtmel AVR JTAGICE3 in ISP mode
jtag3pdiAtmel AVR JTAGICE3 in PDI mode
jtagkeyAmontec JTAGKey, JTAGKey-Tiny and JTAGKey2
jtagmkIAtmel JTAG ICE (mkI)
jtagmkIIAtmel JTAG ICE mkII
jtagmkII_avr32Atmel JTAG ICE mkII im AVR32 mode
lm3s811Luminary Micro LM3S811 Eval Board (Rev. A)
mib510Crossbow MIB510 programming board
mkbutterflyMikrokopter.de Butterfly
nibobeeNIBObee
o-linkO-Link, OpenJTAG from http://www.100ask.net
openmokoOpenmoko debug board (v3)
pavrJason Kyle’s pAVR Serial Programmer
pickit2MicroChip’s PICkit2 Programmer
picowebPicoweb Programming Cable, http://www.picoweb.net/
pony-stk200Pony Prog STK200
ponyserdesign ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts
siprogLancos SI-Prog <http://www.lancos.com/siprogsch.html&gt;
sp12Steve Bolt’s Programmer
stk200STK200
stk500Atmel STK500
stk500hvspAtmel STK500 V2 in high-voltage serial programming mode
stk500ppAtmel STK500 V2 in parallel programming mode
stk500v1Atmel STK500 Version 1.x firmware
stk500v2Atmel STK500 Version 2.x firmware
stk600Atmel STK600
stk600hvspAtmel STK600 in high-voltage serial programming mode
stk600ppAtmel STK600 in parallel programming mode
usbaspUSBasp, http://www.fischl.de/usbasp/
usbasp-cloneAny usbasp clone with correct VID/PID
usbtinyUSBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
wiringWiring
xilXilinx JTAG cable

Пример команды: C:>avrdude -c avrisp ...

Скрипт для автоматической прошивки микроконтроллера

Для того, чтобы прошивка микроконтроллера производилась с помощью программы avrdude автоматически можно написать небольшой скрипт. Далее приведу небольшой пример, написанный для программатора AVR-JTAG-USB. К данному программатору можно обращаться через COM-порт, который создается при установке его драйвера, поэтому скрипт первым делом спрашивает номер порта, к которому подключен программатор, далее пытается с ним соединиться. Если не удается, то программа возвращается к выбору последовательного порта. Иначе производит прошивку платы.

set AVRDUDECMD="<путь к папке с avrdude>avrdude.exe"
set FIRMWARESOURCEDIR=<путь к папке с текущей прошивкой>
set FIRMWAREDIR=%TMP%firmware

:SELECTPORT
set /P port="Выберите номер порта COM"
echo %AVRDUDECMD%

echo Проверка подключения...
%AVRDUDECMD% -c jtagmkI -p m32 -P COM%port%
IF %ERRORLEVEL% EQU 9009 GOTO SELECTPORT

echo Удаляем временные файлы
rmdir /S /Q %FIRMWAREDIR%
echo Копируем прошивку во временную папку
mkdir %FIRMWAREDIR%
xcopy "%FIRMWARESOURCEDIR%*.*"  "%FIRMWAREDIR%"

echo Прошиваем микроконтроллер
@echo on
%AVRDUDECMD% -c jtagmkI -p m32 -P COM%port% -U flash:w:"%FIRMWAREDIR%firmware.>:m

Здесь указывается, что будет использован программатор AVR-JTAG-USB, микроконтроллер Atmega32, порт COM[номер порта вводится пользователем с клавиатуры]. В строке команды указываются значения фьюзов — hfuse=0x91 иlfuse=0xFF в шестнадцатиричном формате.
Значения фьюзов в шестнадцатиричном формате можно подобрать с помощью встроенных инструментов AVR-Studio, предназначенных для прошивания миктроконтроллеров.

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



Выберите номер порта COM2
"\centerПрошивки для платavrdudeavrdude.exe"
Проверка подключения...
avrdude.exe: jtagmkI_open(): failed to synchronize to ICE
avrdude.exe: jtagmkI_close(): unsupported baudrate -1

avrdude.exe done.  Thank you.

Удаляем временные файлы
Копируем прошивку во временную папку
\centerПрошивки для платМОС-Универсальныйrevision01.00version01.00MOS.hex
Скопировано файлов: 1.
Прошиваем микроконтроллер

C:WINDOWS>"\centerПрошивки для платavrdudeavrdude.exe" -c jtagmkI -p m32 -P COM2 -U flash:w:"C:DOCUME~1valeyevLOCALS~
1TempfirmwareMOS.hex":i -U hfuse:w:<0x91>:m -U lfuse:w:<0xFF>:m

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude.exe: Device signature = 0x1e9502
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "C:DOCUME~1valeyevLOCALS~1TempfirmwareMOS.hex"
avrdude.exe: writing flash (19104 bytes):

Writing | ################################################## | 100% 7.19s

avrdude.exe: 19104 bytes of flash written
avrdude.exe: verifying flash memory against C:DOCUME~1valeyevLOCALS~1TempfirmwareMOS.hex:
avrdude.exe: load data flash data from input file C:DOCUME~1valeyevLOCALS~1TempfirmwareMOS.hex:
avrdude.exe: input file C:DOCUME~1valeyevLOCALS~1TempfirmwareMOS.hex contains 19104 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 4.11s

avrdude.exe: verifying ...
avrdude.exe: 19104 bytes of flash verified
avrdude.exe: reading input file "<0x91>"
avrdude.exe: invalid byte value (<0x91>) specified for immediate mode
avrdude.exe: write to file '<0x91>' failed

avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

Для продолжения нажмите любую клавишу . . .

Понравилось это:

Нравится Загрузка...

Похожее

  • Микроконтроллеры AVR

USBasp | AVRDUDE | Программирование микроконтроллеров AVR ⋆ diodov.net

Чтобы перенести нашу программу с компьютера в микроконтроллер нам понадобится программатор USBasp и программа AVRDUDE. Сегодня существует широкий выбор программаторов, предназначенных для программирования микроконтроллеров AVR. Среди них можно найти много самодельных, который даже трудно назвать программаторами, поскольку они с помощью всего лишь нескольких резисторов напрямую подключаются к COM порту. Однако современные компьютеры и ноутбуки уже практически не оборудываются COM портами, поэтому одним из основных критериев при выборе программатора является возможность подключения его к USB порту. Наиболее дешевый, простой и очень распространенный – это программатор USBasp. Его можно приобрести практически в любом радиомагазине по доступной цене. Стоимость его в китайских интернет магазина находится в пределах от 1,5 $ до 3 $.

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

Связь компьютера с микроконтроллером осуществляется посредством программатора USBasp через USB порт, а данные передаются по интерфейсу SPISerial Peripheral Interface (последовательный периферийный интерфейс). Для связи МК с программатором задействуются специальные выводы: MOSI, MISO, SCK, RESET, VCC, GND. Хотя SPI предполагает использование всего трех выводов MOSI, MISO и SCK, но мы будем задействовать все шесть выводов.

При обмене данными по интерфейсу SPI микроконтроллер может одновременно либо принимать (вывод MISO) либо передавать данные (вывод MOSI). Установка режима приема или передачи данных осуществляется путем подачи определенного импульса на вывод SCK.

Разъем программатора, как правило, имеет 10 пинов и подключается к микроконтроллеру с помощью 10 проводного шлейфа. Однако удобней пользоваться шлейфами, которые имеют переходник на 6 пин, так как в таком случае все пины заняты. У десяти пинового разъема одни пин остается не занятым, а четыре пина подключены к общему проводу (GND).

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

Фото подсоединенного программатора к микроконтроллеру ATmega8 приведено ниже.

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

Настройка AVRDUDE

Теперь нам осталось выполнить финальный шаг. Запускаем программу AVRDUDE. По умолчанию открывается вкладка Program. В нижней части окна в меню Настройки выбираем тип программатора usbasp. Далее в категории Микроконтроллер выбираем наш микроконтроллер ATmega8. Ниже, в категории Flash кликаем по значку троеточия и в открывшемся меню указываем путь к скомпилированному файлу с расширением hex. Путь к файлу и сам файл будут теми же, что мы ранее задавали в Proteus.

Чтобы убедится в том, что программатор определен операционной системой (драйвер программатора корректно установлен) и правильно подключен к микроконтроллеру, кликаем по кнопке Чтение. Если ошибок нет, то появится окно с записью “Калибровочные ячейки генератора считаны!” И в верхнем окошке отобразится шестнадцатеричное число. У каждого МК это число индивидуальное.

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

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

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

Первая наша программа очень проста, а частота работы микроконтроллера оставлена по умолчанию и для ATmega8 равна 1 МГц. В случае изменения частоты или подключения внешнего кварцевого резонатора, необходимо внести некоторые изменения во вкладке Fuses, путем установки галочек в соответственные чекбоксы CKSEL0… CKSEL3.

Подробно настройки данной вкладки мы рассмотрим в статье Fuses (биты настройки или биты защиты) микроконтроллера.

Скачать USBasp драйвер

Скачать AVRDUDE

Еще статьи по данной теме

AVRDUDE

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

AVRDUDE (сокращение от AVR Downloader-Uploader) представляет собой мощную утилиту, позволяющую посредством консольного интерфейса работать с памятью и прошивать микроконтроллеры от компании Atmel. AVRDUDE основана на распространенном интерфейсе обмена данными с микросхемами – SPI. Программа позволяет прошивать FLASH- и EEPROM-память, программировать фьюзы, выполнять верификацию FLASH-памяти с выбранным HEX-файлом, работать в терминальном режиме и многое другое.
Данный софт получил огромную популярность вследствие поддержки широчайшего спектра микроконтроллеров и программаторов (FT2232, Atmel AVR ISP, Altera ByteBlaster, Atmel STK500 и STK600, USBasp, Brian Dean’s Programmer, Dontronics DT006, Pony Prog STK200, Bascom SAMPLE programming cable и многих-многих других), работающих через интерфейсы параллельного и последовательного портов. Кроме официальных программных аппаратных средств от Atmel возможна работа с любительскими изделиями, не поддерживаемыми AVR Studio.

Главной особенностью программы является консольный интерфейс, требующий определенных навыков работы. Однако сторонними разработчиками для AVRDUDE был создан ряд удобных графических оболочек полезных при изучении содержимого памяти микроконтроллеров, изменения отдельных байтов EEPROM, Lock- и Fuse-битов. Программировать же всю память кристалла удобно из командной строки AVRDUDE.

В отличие от AVR Studio, полезной лишь в процессе создания и отладки программного кода, AVRDUDE больше подходит для серийного прошивания готовых продуктов. Для работы с повседневными однотипными задачами пользователю не требуется каждый раз набирать команды вручную, поскольку программа может работать с пакетными файлами. Для этого необходимо создать bat-файл и прописать в нем ключи, указать файл с прошивкой и, самое главное, верно внести в командную строку Fuse-биты. В дальнейшем будет достаточно лишь запускать bat-файл на выполнение. Для разных устройств необходимо создавать свой батник.

Программное обеспечение AVRDUDE имеет статус GNU GPL, что дает возможность каждому пользователю свободно скачивать ее, изменять по собственному желанию и распространять дальше. Благодаря этому AVRDUDE вошла в состав различных сред для разработки программ микроконтроллеров AVR, например WinAVR.

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

Первоначальный код AVRDUDE был создан английским программистом Брайеном Дином (http://www.bsdhome.com/). Программа была написана для операционной системы FreeBSD и распространялась под названием AVRprog. В связи с растущим интересом к данному продукту Брайан решил портировать его на другие операционные системы и выложить в свободном доступе. Изменение названия на AVRDUDE произошло, чтобы не было путаницы с утилитой AVRprog, распространяемой компанией Atmel в составе AVR Studio.

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

Программа AVRDUDE представлена в вариантах для Windows и Linux. Windows-версия поддерживает все известные операционные системы Microsoft, включая Vista и 7. Поскольку в Windows 2000 и Windows XP возможность работать напрямую с параллельным портом компьютера заблокирована, для нормального функционирования AVRDUDE потребуется самостоятельно установить драйвер giveio.sys, поставляемый с программой. В Windows 98 дополнительные настройки не требуются.

Распространение программы: Freeware (бесплатная)

Официальный сайт программы "AVRDUDE": http://download.savannah.gnu.org/releases/avrdude/

Скачать AVRDUDE

Обсуждение программы на форуме

AVRDUDE_PROG


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

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 (24.02.2014)

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

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

Размер файла: 690КБ
Статус программы: бесплатная
ОС: Windows NT/2000/XP/VISTA/WINDOWS 7
Интерфейс: русский, 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)

Скачать.

 

AVRDUDE_PROG 3.1

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

Скачать.

 

AVRDUDE_PROG 3.0

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

Скачать.

AVRDudeR — встраиваем avrdude в IDE / Хабр

Arduino — хорошая платформа для самоделкиных вроде меня.

Удобная, все в ней уже есть.

В чем проблема?

Программная часть мне далеко не всем нравится. Особенно ужасна Arduino IDE. Каждый файл открывается в новом окне, оставляя пустое запущенное окно IDE. И прочие мелкие глупости, которые привыкших к удобству Visual Studio, Borland/Embarcadero RAD IDE расстраивают и вызывают неудовольствие.

К счастью, мы можем использовать любую IDE какая понравится. Для готовых проектов, которые только скомпилировать и прошить или собственных пробных поделок вполне годится тот огрызок Wiring, который компилируется Arduino IDE.

Для удобства работы я использую Visual Micro Arduino — удобство Visual Studio, быстрая компиляция, прошивка стандартными средствами.

Arduino без Arduino IDE

Ступенькой выше стоит прямая работа с микроконтроллером, тут уж в вольны делать что захотите. Часто это удобнее чем разбираться в начинке библиотек Arduino. Но приходится использовать либо AVR Studio либо стороннюю IDE и компилятор от Atmel (благо, он совершенно бесплатный и входит в AVR Tools).

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


Кому неинтересны детали, переходите сразу к делу,

скачиваем и настраиваем

.

AVR Studio неплохая среда, правда версия 4 довольно примитивная, а 5я тяжеловесна. Ни та ни другая кроме как через фирменный программатор прошивать не умеют. Засада.
Я взял проект бутлоадера, который совместим с AVR Studio, притворяясь AVRISP программатором. Интерфейс же с ним в AVR Studio оказался далеко не самым удачным.

Что делать?

Есть AVRDUDE — бесплатный прошивальщик, который работает почти со всеми программаторами для ATMEL микроконтроллеров. Но он консольный. Вроде бы не проблема, написал cmd или bat файл и все дела, запускай его после компиляции и всего делов. Но у меня, как, наверное, у многих, не одна плата. А каждая плата Arduino видится в системе как отдельный COM-порт. Каждый программатор тоже. В платах установлены разные микроконтроллеры (Atmega168P, Atmega328P). Не считая самодельных Arduino-совместимых плат или вообще с голым микроконтроллером и обвязкой.

Каждый раз лазать в bat файл и править настройки под разные платы или переключаться в другое приложение чтобы его запустить для прошивки, чтобы проверить работу когда я поменял пару байт в коде, лично мне надоедает, да и ошибок возникает немало, так и контроллер убить недолго. Хуже того, с FTBB программатором работает только отдельная версия avrdude, пропатченная под него и ничего не знающая про arduino. А значит, если мы прошиваем через него, то нужно держать еще один bat файл.

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

Автоматизация запуска avrdude с нужными параметрами

Мне эта ситуация надоела и я написал небольшую программку, которая получает в командной строке 2 параметра:

— имя конфигурационного файла

— имя файла прошивки

Утилита сама запускает avrdude с параметрами, указанными в конфигурационном файле (просто файл с готовыми настройками для прошивания), дожидается прошивки и закрывается. Это позволяет прошивать проект в любой имеющийся микроконтроллер в процессе отладки в 2 клика прямо из Code::Blocks.
Если запустить с одним параметром, прочитает соответствующий файл конфигурации, если с двумя, попытается автоматически залить прошивку из второго параметра.

Если заинтересовало, качаем AVRDudeR

Встраивается в IDE очень просто (дольше рассказывать, чем сделать):
Добавляем в меню Tools два пункта меню — для изменения настрек и для прошивки

Для изменения настроек прописываем:

Для прошивки:

По сути в настройках прописаны: первый параметр — файл avrdude.ini, который мы сохраняем при настройке в папку проекта, второй параметр — имя файла прошивки.

Процесс настройки выглядит так:

  • Подключаем программатор или плату Arduino с которой будем работать, чтобы в системе появился нужный COM порт.
  • Запускаем Tools->R AVRduder: Setup, выбираем настройки и сохраняем файл с настройками в каталоге своего проекта под именем avrduder.ini (или то, которое указали в настройках). Закрываем утилитку

Теперь скомпилировав проект, выбираем в меню Tools->R AVRDudeR: Flash и готово.

Обе версии avrdude уже лежат в архиве, ничего настраивать и прописывать в AVRDudeR не нужно.

Немного о настройках:


MCU

— микроконтроллер (понятное имя и код для командной строки avrdude программа берет из mcu.lst)


Programmer

— программатор. FTBB, Arduino с соответствующей прошивкой в качестве ISP программатора (ArduinoISP), или подключенная напрямую Arduino. (Текст пунктов меню и коды для строки программатора в файле programmers.lst)


Port

: ну собственно COM порт программатора или Arduino (поэтому нужно чтобы плата была подключена во время настройки).


Baud rate

: скорость порта. Для Arduino до UNO — 57600, UNO — 115200. В вашем загрузчике сами знаете какую настроили, а для FTBB режима этот параметр игнорируется.


Dude type

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

Галка

Show Result

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


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

Если сменился контроллер или подключили в другой порт, через другой программатор, просто выбираем Tools->R AVRDuder: Setup и открывается файл с настройками этого проекта (или настройками по умолчанию, если в папке с проектом avrduder.ini отсутствует). Меняем порт или программатор, контроллер или что там у нас поменялось и сохраняем обратно avrduder.ini в папку проекта. Все.

Да, avrdude.ini можно просто таскать из проекта в проект, если работате с одинаковыми платами/программаторами. Просто скопируйте его в папку нового проекта и можно ничего не настраивать вообще.
Ах да, чуть на забыл, в Code:Blocks я выбрал GNU AVR GCC Compiler и указал только папку к AVR Tools. А проект настроил вот так:

Тогда компилятор создает файл .elf.hex, который мы и прошиваем. Если у вас по-другому, измените второй параметр, передаваемый в AVRDudeR, чтобы он передавал имя файла прошивки.

Надеюсь, кому-то это сбережет нервы, повысит производительность и позволит сосредоточиться на собственно работе над идеей, а не возиться с кучей приблуд при каждой компиляции и заливке проекта.
Если утилита окажется полезной, пользуйтесь на здоровье.
UPD Утилита все-таки пригодилась.
Новая версия доступна на google code

Прошивка AT89S52 с помощью AVRDUDE — Документация Creative Club 1

Для тех случаев, когда у вас нет под рукой подходящего программатора для AT89S52, или когда текущий программатор по какой-то причине не работает - можно использовать Arduino (например, Arduino Nano) в паре с AVRDUDE и GUI к нему AVRDUDESS.

1. Превращаем Arduino в программатор

В первую очередь, нам необходимо прошить Arduino Nano в качестве программатора. Для этого можно использовать скетч Arduino ISP, который находится в меню «Examples» Arduino IDE и продублирован тут: https://git.io/fA17x.

В скетче на строке 142-143 лучше заменить скорость порта UART (baudrate) на значение 115200. Больше скорость - быстрее прошивка AT89S52. Значение 115200 протестировано и работает, но, возможно, скорость можно поднять еще выше.

2. Установка утилит

Следующий пункт - установка AVRDUDESS. AVRDUDESS является простой графической оболочкой для AVRDUDE - утилиты, которая позволяет прошивать МК семейства AVR. Скачать можно тут: http://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/.

Продолжаем движение. Поскольку AVRDUDE отвечает за прошивку МК семейства AVR, то AT89S52 не поддерживается «из коробки». Чтобы добавить эту поддержку, придется немного поправить конфигурационный файл avrdude.conf. Файл avrdude.conf находится в той же папке, где был установлен сам AVRDUDE, список изменений нахожится тут: https://git.io/fA15B. Посмотреть итоговый файл можно с помощью кнопки «view» в правом верхнем углу.

3. Настройки AVRDUDESS

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

Последнее, что нам нужно сделать - выбрать правильные настройки в окне AVRDUDESS. В качестве программатора выбираем «STK500 firmware version 1», скорость (baud rate) - 115200, микроконтроллер (MCU) - AT89S52, порт (port) - COM4 или любой другой порт, на который подключена Arduino.

На этом все. Осталось подключить AT89S52 к портам ISP Arduino.

Использованные материалы:

Использование программы avrdude

Примечание
Этот раздел был добавлен Брайаном Дином [bsd @ b.nosp @ m.sdho.nosp @ m.me.co.nosp @ m.m].
Программа avrdude ранее называлась avrprog. Название было изменено, чтобы избежать путаницы с программой avrprog, которую Atmel поставляет вместе с AvrStudio.

avrdude - это программа, которая используется для обновления или чтения флэш-памяти и памяти EEPROM микроконтроллеров Atmel AVR на FreeBSD Unix. Он поддерживает протокол последовательного программирования Atmel с использованием параллельного порта ПК и может загружать либо необработанный двоичный файл, либо файл в формате Intel Hex.Его также можно использовать в интерактивном режиме для индивидуального обновления ячеек EEPROM, битов предохранителей и / или битов блокировки (если их доступ поддерживается протоколом последовательного программирования Atmel). Основная флэш-память команд AVR также может быть запрограммирована в интерактивный режим, однако это не очень полезно, потому что можно только отключить биты. Единственный способ включить флэш-биты - это стереть всю память (с помощью опции avrdude -e ).

avrdude является частью системы портов FreeBSD.Чтобы установить его, просто сделайте следующее:

 # компакт-диск / usr / порты / devel / avrdude
# сделать установку
 

После установки avrdude может программировать процессоры, используя содержимое файла .hex, указанного в командной строке. В этом примере файл main.hex записан во флэш-память:

 # avrdude -p 2313 -e -m flash -i main.hex

avrdude: устройство AVR инициализировано и готово принимать инструкции

avrdude: подпись устройства = 0x1e9101

avrdude: стирающий чип
avrdude: готово.avrdude: чтение входного файла "main.hex"
avrdude: входной файл main.hex автоматически определяется как Intel Hex

avrdude: запись flash:
1749 0x00
avrdude: записано 1750 байт флеш-памяти
avrdude: проверка флэш-памяти по main.hex:
avrdude: чтение данных флеш-памяти на кристалле:
1749 0x00
avrdude: проверяем ...
avrdude: проверено 1750 байт флэш-памяти

avrdude сделано. Спасибо.
 

Опция -p 2313 позволяет avrdude знать, что мы работаем на микросхеме AT90S2313. Эта опция указывает идентификатор устройства и сопоставляется с устройством с таким же идентификатором в файле конфигурации avrdude ( / usr / local / etc / avrdude .conf). Чтобы перечислить допустимые детали, укажите опцию -v . Опция -e дает команду avrdude выполнить стирание микросхемы перед программированием; это почти всегда необходимо перед программированием вспышки. Параметр -m flash указывает, что мы хотим загрузить данные во флэш-память, а параметр -i main.hex указывает имя входного файла.

EEPROM загружается таким же образом, с той лишь разницей, что вы использовали бы -m eeprom вместо -m flash .

Чтобы использовать интерактивный режим, используйте опцию -t :

 # avrdude -p 2313 -t
avrdude: устройство AVR инициализировано и готово принимать инструкции
avrdude: подпись устройства = 0x1e9101
avrdude>

'?' команда отображает список допустимых
команды:

avrdude>?
>>>?
Допустимые команды:

  dump: dump memory: dump   
  читать: псевдоним для дампа
  запись: запись в память: запись    ... 
  erase: выполнить стирание чипа
  sig: отображать байты подписи устройства
  part: отображение информации о текущей детали
  send: отправить необработанную команду: отправить    
  Помогите помогите
  ? : помощь
  выйти: выйти

Используйте команду 'part', чтобы отобразить допустимые типы памяти для использования с
команды «сброс» и «запись».

avrdude>
 

Запись шестнадцатеричных файлов на Atmel AVR с использованием USBasp и AVRdude - блог Embedded Electronics

AVRdude - отличная программа для записи шестнадцатеричного кода в микроконтроллер Atmel AVR .USBasp - отличный USB-программатор Atmel AVR. В этом руководстве мы увидим, как использовать AVRdude для записи шестнадцатеричных файлов в микроконтроллер AVR с помощью USBasp.

AVRdude доступен для установок Windows и Linux. Его можно загрузить с портала загрузки avrdude, указанного ниже.

Введение

Для программирования микроконтроллера AVR вам понадобится файл .HEX. Это не что иное, как машинный код микроконтроллера. Этот файл создается ассемблером AVR, который преобразует ассемблерный код в машинный код.Ассемблерный код может быть создан сторонним программным обеспечением кросс-компилятора C или может быть написан от руки. Обычно все используют Atmel Studio или среду Arduino для написания программ на языке C. После компиляции эти инструменты генерируют файл .hex в качестве своего вывода.

Исполняемые файлы

AVRdude для Windows (или архив tar для Linux) можно найти по адресу:
Все выпуски: http://download.savannah.gnu.org/releases/avrdude/ найдите версию 6.3
Windows exe: http: // загрузить .savannah.gnu.org / Release / avrdude / avrdude-6.3-mingw32.zip

Загрузите и распакуйте этот исполняемый файл в подходящую папку. Я лично использовал usbasp и avrdude на платформах Windows 7 и Windows 10.

ПРИМЕЧАНИЕ 1. Убедитесь, что путь к папке avrdude добавлен в переменную среды PATH, иначе «avrdude.exe» не будет доступен из любого случайного каталога в командной строке. На этой странице описано, как добавить путь к переменной среды PATH.

ПРИМЕЧАНИЕ 2: Когда вы подключаете оборудование USBasp к компьютеру с Windows 10, вам нужно будет загрузить и установить драйверы для него.

Подключения

- Подключите USBasp к ПК.
- Подключите контакты программирования SPI USBasp к микроконтроллеру AVR. На следующем рисунке показан пример схематической схемы. Если у вас другой AVR, подключите выводы MOSI, MISO, SCK, RESET и GND этого uC к соответствующим выводам USBasp.

- Подать питание + 5В на микроконтроллер.
- VIMP: Если вы записываете новый микроконтроллер, замкните перемычку Slow Serial Clock USBasp. Поскольку многие новые микроконтроллеры запрограммированы на заводе для работы с внутренним генератором 1 МГц.USBasp использует очень высокоскоростные последовательные часы для более быстрого программирования. Таким образом, вам нужно будет специально указать USBasp использовать медленные последовательные часы. Эта установка выполняется с помощью вышеупомянутой перемычки.

ПРИМЕЧАНИЕ: Если у вас есть микроконтроллер с включенным внутренним генератором, и после программирования вы не планируете возвращать его биты предохранителя к настройке внешних часов, то вы можете пропустить кварцевый резонатор.

Выполнение AVRdude:

К счастью, AVRdude - это инструмент командной строки, так что вы можете быть очень уверены в том, что вы делаете со своим uC. Или, к сожалению, AVRdude - это инструмент командной строки, поэтому вам придется потратить немного времени, чтобы познакомиться с ним 🙂

  • Откройте командную строку.(Нажмите WinKey + R. Появится диалоговое окно «Выполнить». Введите cmd и нажмите Enter.)
  • Перейдите в каталог, в котором находится файл .hex. Например:
 > cd D: \ mega16_kitCD \ образец кода \ ex01_simple_input_output \ Exe
> d:
  

  • Если вы НЕ добавили путь avrdude к системному пути, выполните следующую команду с своим путем . В противном случае пропустите этот шаг.
 > установить PATH =% PATH%; c: \ avrdude_6_3 \;
  
  • Чтобы записать шестнадцатеричный файл, введите следующую команду.Рассмотрим, например, имя моего шестнадцатеричного файла io.hex :
 > avrdude –c usbasp –p m16 –u –U flash: w: io.hex
  

Вы должны увидеть что-то вроде этого:

Вот и все !!! Это так просто! 🙂

Объяснение команды

avrdude –c usbasp –p m16 –u –U flash: w: io.hex

-c: указывает тип программатора. Поскольку мы используем программатор USBasp, упоминается аргумент «usbasp».

-p: Процессор. Мы используем ATmega16, отсюда «m16». Примечание ATmega16 имеет два варианта: ATmega16L (низкоскоростная версия) и обычная версия ATmega16 с частотой 16 МГц. Однако их сигнатура устройства одинакова, и, следовательно, вам придется использовать «m16» в качестве параметра для обоих AVR. Это относится ко всем АРН, имеющим «L» вариант.

-u: Отключает режим по умолчанию: считывание предохранителей три раза перед программированием с последующей проверкой в ​​конце программирования, что предохранители не были заменены.Всегда используйте эту опцию. Часто случается, что мы забываем включить питание +5 В на AVR, а затем в конце цикла программирования avrdude обнаруживает несовместимые предохранители и пытается их перепрограммировать. Отсутствие питания приводит к неправильному программированию предохранителей и отказу всего микроконтроллера (средства становятся бесполезными). Поэтому всегда используйте эту опцию.

-U: memtype: op: filename [: format]

Выполните операцию с памятью. Можно указать несколько параметров «-U» для работы с несколькими ячейками памяти при одном вызове из командной строки.

тип памяти

Поле типа памяти определяет тип памяти, с которой будет работать.

калибровка Один или несколько байтов данных калибровки RC-генератора.
eeprom EEPROM устройства.
efuse Расширенный байт предохранителя.
flash Флэш-ПЗУ устройства.
предохранитель Байт предохранителя в устройствах, которые имеют только один байт предохранителя.
hfuse Старший байт предохранителя.
lfuse Младший байт предохранителя.
lock Байт блокировки.

op

В поле ввода указывается, какую операцию выполнять:

r считывает указанную память устройства и записывает в указанный файл
w считывает указанный файл и записывает его в указанную память устройства
v считывает указанную память устройства и указанный файл и выполняет операцию проверки

имя файла

Укажите имя файла в шестнадцатеричном формате.Если файла нет в текущем каталоге, укажите имя файла с соответствующим путем.

формат

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

Как сделать это быстро: командный файл:

Чрезвычайно утомительно набирать такую ​​длинную команду каждый раз, когда вы программируете uC. Поэтому, чтобы избежать этого, вы можете создать что-то, называемое пакетным файлом. Это текстовый файл, содержащий серию команд, которые будут выполняться процессором команд dos.Чтобы создать командный файл, выполните следующие действия:

  • Открыть блокнот
  • Введите нашу команду avrdude. т.е. скопируйте и вставьте следующую строку в блокнот.
    avrdude –c usbasp –p m16 –u –U flash: w: io.hex
  • Сохраните файл с именем «burn.bat» и поместите его в каталог, в котором находится шестнадцатеричный файл.

Теперь, когда вы перекомпилируете свою программу и захотите ее записать, просто дважды щелкните на burn.bat. Это выполнит введенную нами команду avrdude.

Возможные ошибки и проблемы


1) не удалось найти usbasp:

найдено 5 шин
найдено 5 шин
avrdude: ошибка: не удалось найти USB-устройство «USBasp» с vid = 0x16c0 pid = 0x5dc

Это происходит, когда USBasp не подключен или не распознается ПК.Попробуйте подключить его к другому USB-порту. Убедитесь, что перемычка «Самопрограммирование» USBasp разомкнута. Всегда отключайте AVR от USBasp перед подключением USBasp к ПК.

2) цель не отвечает

найдено 5 автобусов

avrdude: error: programm enable: target не отвечает. 1
avrdude: ошибка инициализации, rc = -1
Дважды проверьте соединения и попробуйте еще раз, или используйте -F для отмены
этой проверки.

avrdude сделано.Спасибо.

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

Я надеюсь, что этот пост поможет вам начать работу с AVRdude. Обратная связь приветствуется.

Номер ссылки

Полную документацию по AVRdude можно найти по адресу:
http: // download.savannah.gnu.org/releases/avrdude/avrdude-doc-6.3.pdf

# atmel-avr #avrdude #usbasp # запись # прошивка # программирование

[Всего: 9 Среднее: 2.9 / 5]

Нравится:

Нравится Загрузка ...

Связанные

Карманный программатор AVR Руководство по подключению

Добавлено в избранное Любимый 10

Использование AVRDUDE через командную строку

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

Если у вас есть Arduino, значит, у вас уже установлен AVRDUDE - это инструмент, который Arduino использует для загрузки скетчей. Если вам нужно установить AVRDUDE отдельно, ознакомьтесь с документацией в разделе загрузок AVRDUDE. Файлы avrdude-doc-X.XX.pdf (т.е. avrdude-doc-6.3.pdf ) особенно полезны при установке AVRDUDE для вашей операционной системы, если у вас есть проблемы с использованием команд AVRDUDE в любом каталоге через командную строку. .

Проверка работоспособности - пути AVRDUDE

AVRDUDE - это инструмент командной строки , поэтому, чтобы использовать его, вам нужно открыть «Командную строку» (Windows) или «Терминал» (Mac / Linux). Чтобы убедиться, что AVRDUDE работает, лучше сначала провести небольшую проверку работоспособности. Откройте командную строку и введите следующую команду.

  язык: bash
Avrdude
  

Вы должны увидеть результат, подобный изображению ниже.

Проверка работоспособности - проверка подписи устройства

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

Чтобы убедиться, что AVRDUDE работает, и ваш карманный программатор AVR подключен правильно, хорошо провести еще одну небольшую проверку работоспособности. Введите это в командную строку:

  язык: bash
avrdude -c usbtiny -p atmega328p
  

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

Эта базовая команда определяет тип используемого вами программатора и AVR, с которым он разговаривает.AVRDUDE попытается прочитать сигнатуру устройства с вашего AVR, которая отличается для каждого типа AVR. Каждый ATmega328P должен иметь подпись устройства 0x1E950F .

Flash-программирование

Внимание! В этом примере предполагается, что биты предохранителя (т.е. младший, высокий и расширенный) установлены уже перед прошивкой файла .hex. Поскольку мы используем RedBoard, запрограммированный с Arduino, мы можем записать на плату файл .hex.

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

Предупреждение! Записав следующий файл blink.hex на микронтроллер AVR, он перезапишет то, что находится в памяти. В этом файле нет загрузчика Arduino, поэтому вы не сможете загрузить его через последовательный порт с помощью Arduino IDE, пока не переустановите загрузчик с соответствующим микроконтроллером.Если вы используете RedBoard, запрограммированный с помощью Arduino, вы все равно можете переустановить загрузчик для повторной загрузки через последовательный порт. На плате используется optiboot_atmega328.hex . Вы можете найти это в программной папке Arduino, похожей на этот путь ... \ arduino-1.8.5 \ hardware \ arduino \ avr \ bootloaders \ optiboot или в « Reinstalling the RedBoard's Arduino Bootloader » далее в этом руководстве.

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

Скачать Blink Here (ZIP)

Эта команда выполнит базовую запись во флэш-память с использованием файла HEX.

  язык: bash
avrdude -c usbtiny -p atmega328p -U flash: w: blink.hex
  

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

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

Совет: В некоторых случаях вам может потребоваться указать файл * .hex, , который вы прошиваете. Обычно это необязательно, но вы можете получить сообщение об ошибке, если AVRDUDE не сможет прочитать файл.

Неверный формат файла

Чтобы указать, вы можете добавить : i , чтобы указать, что это шестнадцатеричный формат Intel:

avrdude -c usbtiny -p atmega328p -U flash: w: blink.hex: i

Или : a для автоматического определения формата:

avrdude -c usbtiny -p atmega328p -U flash: w: blink.hex: a

Для получения дополнительной информации попробуйте проверить AVRDUDE в Интернете Документация в разделе «Описание параметра», где описывается команда « -U memtype: op: filename [: format] ». Онлайн-документация

AVRDUDE: описание опций
Чтение вспышки

Команда -U также может использоваться для чтения содержимого памяти AVR.Например, команда, подобная приведенной ниже, прочитает содержимое вашего AVR и сохранит его в файл с именем « mystery.hex ».

  язык: bash
avrdude -c usbtiny -p atmega328p -U flash: r: mystery.hex: r
  

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

Переустановка загрузчика Arduino RedBoard

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

RedBoard, запрограммированный с помощью загрузчика Arduino (HEX)

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

  язык: bash
avrdude -c usbtiny -p atmega328p -U flash: w: optiboot_atmega328_2012_with_1s_watchdog.hex
  

Если все пойдет хорошо, вы должны получить сообщение о том, что он был написан, проверен и завершил загрузку. Вы должны получить результат, аналогичный приведенному ниже. В этом случае файл конфигурации (т.е.е. avrdude.conf ) и загрузчик ( * .hex ) не находились в одном рабочем каталоге. Чтобы указать, где искать файлы, потребовались две дополнительные команды. Кроме того, формат * .hex необходимо было автоматически определять при прошивке файла путем добавления : a .

Вернитесь к Arduino IDE, отсоедините USB-кабель от вашего программатора и подключитесь к USB-порту RedBoard, чтобы посмотреть, сможете ли вы загрузить простое мигание .ino делает скетч обратно на плату через последовательный порт. Перед загрузкой убедитесь, что выбрали соответствующее определение платы и COM-порт. Вы должны увидеть знакомое сообщение, указывающее, что IDE Arduino - это "Done Uploading" по завершении, а встроенный светодиодный индикатор на контакте 13 начнет мигать.

Примечание: Ищете дополнительную информацию об установке загрузчика Arduino? Ознакомьтесь с нашим руководством ниже о различных методах прошивки загрузчика Arduino на микросхему AVR!

Установка загрузчика Arduino

4 декабря 2013 г.

Из этого туториала Вы узнаете, что такое загрузчик и зачем его нужно устанавливать или переустанавливать.Мы также рассмотрим процесс записи загрузчика, записав шестнадцатеричный файл в микроконтроллер Arduino.


Полезные опции

Вот лишь несколько последних советов и приемов AVRDUDE, прежде чем мы познакомим вас с миром AVR.

Укажите программатор и устройство AVR

Для использования AVRDUDE требуются два варианта: программатор типа и устройство AVR Спецификация :

  • Определение программатора , если вы используете карманный программатор AVR, будет -c usbtiny .Если вам нужно использовать другой программатор, просмотрите эту страницу и CTRL + F на « -c programmer-id ».

  • Устройство АРН Тип определяется опцией -p . Мы показали несколько примеров с ATmega328P, но что, если вы используете ATtiny85? В этом случае вы захотите поставить вместо него -p t85 . Ознакомьтесь с исчерпывающим списком совместимых типов устройств AVR в верхней части этой страницы.

Подробный вывод

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


Там еще много всего. Ознакомьтесь с онлайн-документацией AVRDUDE в разделе Описания опций для получения полного списка команд.

Онлайн-документация AVRDUDE: описание опций

← Предыдущая страница
Программирование через Arduino Руководство по подключению программатора карманного AVR

Добавлено в избранное Любимый 10

Введение

Вам нужно больше контроля над своими AVR? Будь то ATmega328, ATmega32U4, ATtiny85, если это AVR, есть большая вероятность, что карманный программатор AVR сможет его запрограммировать.

Карманный программатор AVR

В наличии PGM-09825

В этой новой версии используется заголовок SMD 5x2. Это простой в использовании программатор USB AVR. Он невысокий, прост в использовании, отлично работает…

53

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

рассматривается в этом учебном пособии

В этом руководстве мы познакомим вас со всеми важными аспектами карманного программатора AVR. Он разделен на серию разделов, охватывающих:

  • Обзор платы - Обзор аппаратных компонентов, из которых состоит карманный программатор AVR.
  • Установка драйверов - Как установить карманные программаторы AVR на машину Windows (пользователи Mac и Linux могут пропустить эту страницу) .
  • Программирование через Arduino - Как использовать вездесущую "простую" среду разработки AVR IDE для загрузки эскизов через карманный программатор AVR.
  • Использование AVRDUDE через командную строку - более продвинутый подход на основе командной строки к использованию карманного программатора AVR.
  • Устранение неполадок - Несколько советов по устранению неполадок для устранения некоторых ошибок AVRDUDE, с которыми вы можете столкнуться.

Необходимые материалы

Самое главное, чтобы следовать этому руководству, вам понадобится карманный программатор AVR и AVR для программирования . Кроме того, для подключения программатора к компьютеру требуется кабель USB mini-B.

Этот микроконтроллер, который должен быть запрограммирован, может быть любым AVR с 64K или менее флэш-памятью . ATmega328 на Arduino Uno или RedBoard работает отлично, но ATmega2560 на Arduino Mega не работает с .

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

  • Прямые штыревые заголовки - Если у вас есть AVR на плате разработки - например, Arduino Pro - заголовок ISP 2x3 (или 2x5) может быть не заполнен. Вы можете использовать прямые штекерные разъемы (также доступны в версии с длинными контактами), чтобы установить временный контакт между кабелем интернет-провайдера и вашей платой разработчика. Также существует версия 2x3 контакта.
  • ISP Pogo Adapter - как и заголовки, этот адаптер ISP предназначен для обеспечения временного электрического соединения между адаптером и AVR. Это отличная и более надежная альтернатива заголовкам.
Примечание: Если ваш AVR находится на макетной плате, у вас, вероятно, нет интерфейса со стандартной распиновкой 2x3 ISP. Наша старая простая коммутационная плата сделала возможным сопряжение программатора с вашей макетной схемой. Мы рекомендуем использовать адаптер ISP Pogo, указанный выше, теперь, когда коммутационная плата удалена из каталога.

Рекомендуемая литература

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

  • Что такое Ардуино? - Если вы не знакомы с AVR, ознакомьтесь с этим руководством, чтобы узнать о самом популярном из них.
  • Установка Arduino - Arduino не требуется для использования программатора, но может упростить задачу, особенно если вы все еще хотите программировать свой AVR с использованием библиотек Arduino.
  • Последовательный периферийный интерфейс (SPI) - карманный программатор использует интерфейс SPI для отправки данных в AVR и обратно. Щелкните этот учебник, чтобы узнать значение слов «MOSI», «MISO» и «SCK».

Что такое Ардуино?

Что вообще такое «Ардуино»? В этом руководстве подробно рассказывается о том, что такое Arduino, а также о проектах и ​​виджетах Arduino.

Установка Arduino IDE

Пошаговое руководство по установке и тестированию программного обеспечения Arduino в Windows, Mac и Linux.

Обзор платы

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

  • USB-разъем - это данные и вход питания для программатора. Сюда подключается USB-кабель mini-B, который соединяет ваш компьютер с программатором.
  • 2x5 заголовок ISP - этот закрытый заголовок соединяется с прилагаемым кабелем для программирования и позволяет отправлять программные сигналы на AVR.Он поляризован, чтобы убедиться, что вы не можете подключить что-либо наоборот.
  • Power Target Switch - В отличие от многих других интернет-провайдеров, карманный программатор AVR может подавать питание на AVR, который должен быть запрограммирован. Переведите этот переключатель в сторону «Power Target», чтобы подать 5V на AVR. Подробнее об этом ниже.
  • ATtiny2313 - Это чип, который творит волшебство программирования. Он преобразует USB и SPI, чтобы превратить команды с вашего компьютера в слова и инструкции для загрузки в ваш AVR, который должен быть запрограммирован.Если вы не хотите настраивать прошивку Tiny ISP, вы можете оставить этот чип в покое .
    • Незаполненный заголовок ISP, расположенный над ATtiny2313, разбивается на случай, если этот чип необходимо запрограммировать. В основном он используется в продакшене теми, кто программирует программистов.
  • 74AC125 Buffer - Этот чип помогает добавить некоторую защиту программисту путем буферизации выходных сигналов линии данных. Другой IC в основном игнорировать.

На плате также имеется множество светодиодов для индикации питания, состояния и передачи данных.

Распиновка ISP для AVR

AVR

программируются через интерфейс SPI. Для связи между ISP и AVR требуется шесть уникальных сигналов: VCC, GND, Reset, MOSI, MISO и SCK.

Для маршрутизации этих сигналов между устройствами есть два стандартных разъема - один 10-контактный разъем 2x5 и другой 6-контактный разъем 2x3:

Распиновка AVR ISP - вид сверху.

Карманный программатор AVR оснащен встроенным разъемом 2x5, а прилагаемый кабель программирования AVR имеет разъемы 2x5 и 2x3.

Переключатель мощности

Если вы работаете с AVR на макетной плате или прототипе, может быть трудно найти питание. Карманный программатор AVR позволяет вам направить 5V на ваш AVR. Он может выдавать более 500 мА до отключения встроенного датчика PTC.

Если переключатель находится в положении Power Target , он направит 5 В на ваш AVR. В противном случае, если переключатель указывает на No Power , сигнал не будет подключен к контакту 5V на разъеме ISP.

Предупреждение! Будьте осторожны при использовании этой функции! Он будет выдавать 5V и только 5V ! Если вы работаете с системой 3,3 В или 1,8 В, убедитесь, что этот переключатель находится в положении No Power , и используйте преобразователь логического уровня.

Установка драйверов

Установка драйвера требуется только на Windows-машинах . Если вы используете Mac или Linux , вам не нужно устанавливать драйверы .Просто подключите плату и переходите к следующему разделу. В противном случае следуйте инструкциям ниже, пока мы рассмотрим процесс установки.

Pocket AVR Programmer Hookup Guide - Программирование через Arduino

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


Автоматическая установка драйверов с Zadig

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

Щелкните ссылку ниже, чтобы загрузить программное обеспечение и драйверы Zadig:

Загрузите драйверы Zadig USBtiny (ZIP)

Используйте свой любимый распаковщик, чтобы распаковать ZIP-файл. Не забывайте, куда вы положили извлеченную папку!

После того, как вы подключили карманный программатор AVR к вашему компьютеру и ваша машина выполнила процесс проверки и неудачной установки драйверов, перейдите к « zadig_v2.0.1.160 ", которую вы только что разархивировали. Затем Запустите программу zadig.exe .

Zadig - замечательный инструмент, который может установить драйверы практически на любую платформу Windows. При открытии программы вы должны увидеть такое окно:

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

  • Выберите устройство. - Верхний раскрывающийся список определяет, для какого устройства вы хотите установить драйвер. Надеюсь, у вас есть только один вариант, что-то вроде « Неизвестное устройство # 1 ».Если у вас есть несколько вариантов, проверьте диспетчер устройств, чтобы понять, какое из них есть (обычно помогает подключение и отключение устройства).
  • Выберите драйвер - нажимайте стрелки в этом поле, пока не найдете libusb-win32 (vx.x.x.x) , это драйвер, который мы хотим установить.

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

Проблемы с установкой драйвера Zadig

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

📌 Совет по поиску и устранению неисправностей: В этом случае драйверы WinUSB были выбраны вместо драйверов libusb-win32 . Чтобы решить эту проблему, просто просмотрите руководство еще раз, чтобы переустановить правильные драйверы libusb-win32 .


📌 Совет по поиску и устранению неисправностей : В других случаях он также может инициализироваться где-нибудь в диспетчере устройств как Неизвестное USB-устройство (сбой запроса дескриптора устройства) , даже если вы установили правильные драйверы:
Попробуйте отключить и снова подключить Pocket AVR Programmer к USB-порту. Или замените кабель USB mini-B на заведомо исправный. В некоторых случаях ваш карманный программатор AVR может отображаться под устройствами libusb-win32 как Unknown Device # 1 .Пока он отображается в дереве устройств libusb-win32 , все будет в порядке! Молодец! Вы успешно установили драйверы на свой компьютер. Однако драйвер по-прежнему отображается как Unknown Device # 1 . Но вы знаете, что это такое! При желании вы можете использовать программу Zadig для переименования порта USB. Когда ваш программатор подключен к вашему компьютеру и программное обеспечение открыто, перейдите к порту программатора. Установите флажок рядом с Изменить .
Введите имя вашего порта. Это может быть « USBtiny » или, в данном случае, « SparkFun Pocket AVR Programmer ». Убедитесь, что выбран правильный драйвер.
Щелкните Переустановить драйвер . Драйвер будет переустановлен, и вы должны увидеть то же сообщение, указывающее, что драйверы были успешно установлены. Возможно, вам придется отключить и снова подключить программатор к компьютеру, чтобы дать ему секунду для повторного обновления.
Откройте диспетчер устройств, и вы должны увидеть переименованное устройство!

В случае успеха закройте программу Zadig и переходите к следующему разделу!

Pocket AVR Programmer Hookup Guide - Программирование через Arduino

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


Установка драйверов libUSB вручную

Если по какой-то причине Задиг у вас не работал. Прочтите приведенные ниже инструкции, чтобы вручную установить драйверы. Щелкните ссылку ниже, чтобы скачать драйверы :

Загрузите драйверы USBtiny (ZIP)

Используйте свой любимый распаковщик, чтобы распаковать ZIP-файл. Не забывайте, куда вы положили извлеченную папку!

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

  1. Откройте диспетчер устройств. - Есть несколько способов открыть диспетчер устройств.
    • Вы можете перейти на панель управления , затем щелкнуть Оборудование и звук , затем щелкнуть Диспетчер устройств .

    • Или просто откройте средство запуска (нажмите клавиши Windows + R) и запустите devmgmt.msc .
  2. В диспетчере устройств вы должны увидеть « Другие устройства > Неизвестное устройство ». Щелкните правой кнопкой мыши «Неизвестное устройство» и выберите Обновление программного обеспечения драйвера ... .

  3. Щелкните Найдите на моем компьютере драйверы в всплывающем окне «Обновить программное обеспечение Diver - Неизвестное устройство».

  4. Щелкните « Обзор ... » и перейдите к папке « ../usbtinyisp_libusb-win32_1.2.1.0 », которую вы только что загрузили. Затем нажмите Далее .

  5. Windows начнет установку драйвера и сразу же уведомит вас о том, что драйвер не подписан. Нажмите Установить этот драйвер в любом случае вариант , чтобы продолжить установку.

  6. Через несколько секунд драйвер должен успешно установиться. Вам будет предложено окно « Windows успешно обновила ваш драйвер ». Закройте его, и вы увидите запись « USBtiny » в диспетчере устройств под деревом « LibUSB-Win32 Devices ».

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

📌 Драйверы все еще не устанавливаются? Если у вас , все еще возникают проблемы с установкой драйверов, попробуйте посмотреть этот совет по устранению неполадок и драйвер от нашей службы технической поддержки: GitHub SparkFunTechSupport:... \ PGM-11801

Дышите спокойно! После того, как вы установили драйверы USBtiny на свой компьютер, вам больше не придется делать это снова. Пришло время что-нибудь запрограммировать!

Программирование через Arduino

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

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

Сначала подключим программатор к нашему Arduino.Большинство Arduinos выламывают стандартизированный заголовок ISP 2x3 ближе к краю платы. Вставьте конец 2x5-коннектора прилагаемого программного кабеля в карманный программатор AVR, затем подсоедините другой конец 2x3 к Arduino.

Обратите внимание на выемку на разъеме, направленную в том же направлении, что и контакт 1 (отмечен здесь небольшой белой линией) на разъеме 2x3 Arduino.

При подключении кабеля для программирования к Arduino убедитесь, что соответствует полярности ! Кабель имеет «выемку» на одной стороне пластикового корпуса.Это должно указывать на контакт 1 заголовка ISP Arduino. Штифт 1 обычно обозначается полосой рядом с отверстием или штифтом.

Если на вашем Arduino не установлены контакты ISP, просмотрите нижнюю часть этой страницы, чтобы узнать о некоторых советах и ​​приемах, которые мы использовали на протяжении многих лет.

Энергия мишени

При подключении программатора еще раз проверьте, чтобы переключатель «Power Target» был в правильном положении. Программатор может запитать вашу Arduino только ! Если вы хотите, чтобы он справился с этой задачей, переместите его в положение Power Target .

Функция «Power Target» особенно полезна, если у вас есть только один USB-разъем / кабель.

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

Программирование через Arduino

Теперь, когда программатор подключен к вашей Arduino, откройте IDE. Затем откройте пример скетча, например, Blink ( Файл> Примеры> 1.Основы> Blink ).

Перед загрузкой нам нужно сообщить Arduino, какой программатор мы используем. Перейдите к Tools > Programmer и выберите USBtinyISP .

Также убедитесь, что правильно настроил опцию «Board» ! Выбор последовательного порта не требуется для загрузки скетча, но все же необходим, если вы что-то делаете с последовательным монитором.

Чтобы загрузить эскиз с помощью выбранного вами программатора, перейдите к File > Upload using Programmer .Если вы будете делать это часто, привыкните нажимать CTRL + SHIFT + U (COMMAND + SHIFT + U на Mac).

Примечание: В зависимости от версии Arduino IDE это может быть в другом меню. Попробуйте найти этот вариант в разделе Sketch > Загрузить с помощью Programmer .

Arduino выполнит обычный процесс компиляции. После компиляции скетча программатор начнет всюду светиться синим цветом - загорятся светодиоды «D +» и «D-», а также светодиод «Stat2».Когда светодиод «Stat2» погаснет, загрузка будет завершена. Проверьте область состояния вашей Arduino IDE, чтобы убедиться, что скетч находится в состоянии «Выгрузка завершена».

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

Программирование загрузчика

В Arduino IDE также есть встроенная функция, позволяющая (повторно) загружать загрузчик в AVR.Вот как:

Убедитесь, что вы правильно установили опцию Board - среди прочего, это установит , какой загрузчик вы будете загружать. Затем просто перейдите к Tools > Burn Bootloader в самом низу меню.

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

Процесс загрузки загрузчика завершен, когда сообщение «Запись загрузчика на плату ввода-вывода (это может занять минуту) ...» изменится на «Запись загрузчика завершена». Это действительно требует времени - он не врет, когда говорит, что «может занять минуту».

Pogo Pins или пресс для угловой жатки

Большинство плат Arduino должны иметь штыревые контакты на этом разъеме 2x3. Если на вашей доске нет штифтов, выходящих из этих отверстий, есть несколько вариантов.

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

Другой вариант без пайки - использование адаптера ISP Pogo Adapter, который обеспечит более надежное электрическое соединение.

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

Использование AVRDUDE через командную строку

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

Если у вас есть Arduino, значит, у вас уже установлен AVRDUDE - это инструмент, который Arduino использует для загрузки скетчей. Если вам нужно установить AVRDUDE отдельно, ознакомьтесь с документацией в разделе загрузок AVRDUDE.Файлы avrdude-doc-X.XX.pdf (т.е. avrdude-doc-6.3.pdf ) особенно полезны при установке AVRDUDE для вашей операционной системы, если у вас есть проблемы с использованием команд AVRDUDE в любом каталоге через командную строку. .

Проверка работоспособности - пути AVRDUDE

AVRDUDE - это инструмент командной строки , поэтому, чтобы использовать его, вам нужно открыть «Командную строку» (Windows) или «Терминал» (Mac / Linux). Чтобы убедиться, что AVRDUDE работает, лучше сначала провести небольшую проверку работоспособности.Откройте командную строку и введите следующую команду.

  язык: bash
Avrdude
  

Вы должны увидеть результат, подобный изображению ниже.

Проверка работоспособности - проверка подписи устройства

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

Чтобы убедиться, что AVRDUDE работает, и ваш карманный программатор AVR подключен правильно, хорошо провести еще одну небольшую проверку работоспособности. Введите это в командную строку:

  язык: bash
avrdude -c usbtiny -p atmega328p
  

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

Эта базовая команда определяет тип используемого вами программатора и AVR, с которым он разговаривает. AVRDUDE попытается прочитать сигнатуру устройства с вашего AVR, которая отличается для каждого типа AVR.Каждый ATmega328P должен иметь подпись устройства 0x1E950F .

Flash-программирование

Внимание! В этом примере предполагается, что биты предохранителя (т.е. младший, высокий и расширенный) установлены уже перед прошивкой файла .hex. Поскольку мы используем RedBoard, запрограммированный с Arduino, мы можем записать на плату файл .hex.

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

Предупреждение! Записав следующий файл blink.hex на микронтроллер AVR, он перезапишет то, что находится в памяти. В этом файле нет загрузчика Arduino, поэтому вы не сможете загрузить его через последовательный порт с помощью Arduino IDE, пока не переустановите загрузчик с соответствующим микроконтроллером. Если вы используете RedBoard, запрограммированный с помощью Arduino, вы все равно можете переустановить загрузчик для повторной загрузки через последовательный порт.На плате используется optiboot_atmega328.hex . Вы можете найти это в программной папке Arduino, похожей на этот путь ... \ arduino-1.8.5 \ hardware \ arduino \ avr \ bootloaders \ optiboot или в « Reinstalling the RedBoard's Arduino Bootloader » далее в этом руководстве.

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

Скачать Blink Here (ZIP)

Эта команда выполнит базовую запись во флэш-память с использованием файла HEX.

  язык: bash
avrdude -c usbtiny -p atmega328p -U flash: w: blink.hex
  

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

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

Совет: В некоторых случаях вам может потребоваться указать файл * .hex, , который вы прошиваете. Обычно это необязательно, но вы можете получить сообщение об ошибке, если AVRDUDE не сможет прочитать файл.

Неверный формат файла

Чтобы указать, вы можете добавить : i , чтобы указать, что это шестнадцатеричный формат Intel:

avrdude -c usbtiny -p atmega328p -U flash: w: blink.hex: i

Или : a для автоматического определения формата:

avrdude -c usbtiny -p atmega328p -U flash: w: blink.hex: a

Для получения дополнительной информации попробуйте проверить онлайн-документацию AVRDUDE в разделе «Описание параметра», где описывается команда « -U memtype: op: filename [: format] ». Онлайн-документация

AVRDUDE: описание опций
Чтение вспышки

Команда -U также может использоваться для чтения содержимого памяти AVR. Например, команда, подобная приведенной ниже, прочитает содержимое вашего AVR и сохранит его в файл под названием « mystery.шестигранник ".

  язык: bash
avrdude -c usbtiny -p atmega328p -U flash: r: mystery.hex: r
  

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

Переустановка загрузчика Arduino RedBoard

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

RedBoard, запрограммированный с помощью загрузчика Arduino (HEX)

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

  язык: bash
avrdude -c usbtiny -p atmega328p -U flash: w: optiboot_atmega328_2012_with_1s_watchdog.hex
  

Если все пойдет хорошо, вы должны получить сообщение о том, что он был написан, проверен и завершил загрузку. Вы должны получить результат, аналогичный приведенному ниже. В этом случае файл конфигурации (т.е.е. avrdude.conf ) и загрузчик ( * .hex ) не находились в одном рабочем каталоге. Чтобы указать, где искать файлы, потребовались две дополнительные команды. Кроме того, формат * .hex необходимо было автоматически определять при прошивке файла путем добавления : a .

Вернитесь к Arduino IDE, отсоедините USB-кабель от вашего программатора и подключитесь к USB-порту RedBoard, чтобы посмотреть, сможете ли вы загрузить простое мигание .ino делает скетч обратно на плату через последовательный порт. Перед загрузкой убедитесь, что выбрали соответствующее определение платы и COM-порт. Вы должны увидеть знакомое сообщение, указывающее, что IDE Arduino - это "Done Uploading" по завершении, а встроенный светодиодный индикатор на контакте 13 начнет мигать.

Примечание: Ищете дополнительную информацию об установке загрузчика Arduino? Ознакомьтесь с нашим руководством ниже о различных методах прошивки загрузчика Arduino на микросхему AVR!

Установка загрузчика Arduino

4 декабря 2013 г.

Из этого туториала Вы узнаете, что такое загрузчик и зачем его нужно устанавливать или переустанавливать.Мы также рассмотрим процесс записи загрузчика, записав шестнадцатеричный файл в микроконтроллер Arduino.


Полезные опции

Вот лишь несколько последних советов и приемов AVRDUDE, прежде чем мы познакомим вас с миром AVR.

Укажите программатор и устройство AVR

Для использования AVRDUDE требуются два варианта: программатор типа и устройство AVR Спецификация :

  • Определение программатора , если вы используете карманный программатор AVR, будет -c usbtiny .Если вам нужно использовать другой программатор, просмотрите эту страницу и CTRL + F на « -c programmer-id ».

  • Устройство АРН Тип определяется опцией -p . Мы показали несколько примеров с ATmega328P, но что, если вы используете ATtiny85? В этом случае вы захотите поставить вместо него -p t85 . Ознакомьтесь с исчерпывающим списком совместимых типов устройств AVR в верхней части этой страницы.

Подробный вывод

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


Там еще много всего. Ознакомьтесь с онлайн-документацией AVRDUDE в разделе Описания опций для получения полного списка команд.

Онлайн-документация AVRDUDE: описание опций

Устранение неполадок

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


AVRDUDE Не распознается

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

  язык: bash
avrdude не распознается как внутренняя или внешняя команда, работающая программа или командный файл
  

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

Одним из решений может быть попытка следовать инструкциям AVRDUDE, чтобы установить его для вашей ОС. Для Windows вы можете автоматически установить WinAVR 20100110 , как вкратце объясняется на странице 35 документов AVRDUDE v6.3.

AVRDUDE Documents v6.3 (PDF)

В противном случае вы можете перейти в программную папку Arduino IDE, где находится avrdude.exe . Попробуйте выполнить поиск в папке программы Arduino, чтобы определить путь. Затем перейдите к месту, где он находится, с помощью компакт-диска .. и cd команды. В этом случае Arduino IDE v1.8.5 была установлена ​​и расположена в папке Program Files моего диска C: \ в папке ... \ program files \ arduino-1.8.5 \ hardware \ tools \ avr \ bin . Введите команды изменения каталога, чтобы перейти в нужное место в командной строке. Как показано на снимке экрана с ошибкой, мне нужно было переместить каталог вверх с помощью следующей команды.

  язык: bash
CD..
  

Затем мне нужно было перейти в программную папку Arduino, которая находится в C: & bsol; привод.

  язык: bash
cd программные файлы \ arduino1.8.5 \ оборудование \ инструменты \ avr \ bin
  

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

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


Файл конфигурации не найден

Если у вас возникли проблемы с чтением подписи устройства AVR, проверьте устройство с помощью команды avrdude -c usbtiny -p atmega328P ; и вы получаете эту ошибку:

  язык: bash
         Общесистемный файл конфигурации: ""
avrdude: невозможно открыть файл конфигурации "": недопустимый аргумент
avrdude: ошибка чтения общесистемного файла конфигурации ""
  

Вероятно, это связано с тем, как AVRDUDE был установлен на компьютер.В этом случае AVRDUDE не смог найти расположение файла avrdude.conf . Вероятно, это связано с переменными окружения или настройками вашего компьютера, которые мешают вам правильно использовать AVRDUDE. Если вы помните из предыдущего совета по устранению неполадок, AVRDUDE находился в папке программы Arduino IDE. Хотя рабочий каталог был правильным, файл avrdude.conf находился в другой папке, как вы можете видеть на изображении ниже в ОС Windows.

Самым простым решением было бы настроить параметры среды, автоматически установив его для вашей ОС, как описано в avrdude-docs (v6.3). Для Windows вы можете установить WinAVR 20100110 , как вкратце объясняется на странице 35 документов AVRDUDE v6.3.

Документы AVRDUDE v6.3 (PDF)

В противном случае вы можете использовать команду -C и указать путь в кавычках ( "... \ avrdude.conf" ), где находится файл avrdude.conf . Для Arduino IDE v1.8.5 он находился в каталоге ... arduino-1.8.5 & bsol; hardware & bsol; tools & bsol; avr & bsol; etc . Предполагая, что у вас есть AVRDUDE в рабочем каталоге, команда должна быть похожа на команду ниже, чтобы прочитать ATmega328P.

  язык: bash
avrdude -C "C: \ Program Files \ arduino-1.8.5 \ hardware \ tools \ avr \ etc \ avrdude.conf" -c usbtiny -p atmega328p
  

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


Проблемы, связанные с драйверами

Если вы запускаете команды AVRDUDE и получаете эту ошибку ниже, проблема может быть связана с драйверами для программатора AVR, чей идентификатор устройства - 0x1781 / 0xc9f . Либо драйверы не установлены, либо возник конфликт драйверов.

  язык: bash
avrdude: Ошибка: не удалось найти устройство USBtiny (0x1781 / 0xc9f)
  
Драйверы не установлены

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

Конфликты драйверов

Если вы установили правильные драйверы, как описано ранее, возможно, возник конфликт драйверов.Вы получите ту же ошибку, но решение может быть не таким интуитивным, как вы думаете. Вывод на снимке экрана ниже произошел при использовании Tiny AVR Programmer для проверки подписи устройства ATtiny85. Драйверы были установлены правильно и работали с Pocket AVR Programmer. Однако Tiny AVR Programmer все еще не был признан.

Открыв диспетчер устройств, Tiny AVR Programmer обнаружился как другой драйвер (например, FabISP ) и имя, как показано ниже.

Примечание: В некоторых случаях драйвер может отображаться под устройствами libusb-win32 > FabISP . Если драйверы, перечисленные в дереве
устройств libusb-win32 , не работают, вам нужно будет следовать инструкциям по переустановке драйвера.

Решением было щелкнуть правой кнопкой мыши и удалить драйвер. Просто щелкните правой кнопкой мыши COM-порт, на котором он указан, и выберите « Удалить устройство ».

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

После удаления выключите и снова включите программатор, отключив / снова отключив Tiny AVR Programmer от USB-порта. Вернитесь в раздел «Установка драйверов» и следуйте инструкциям по автоматической установке драйверов с помощью Zadig.

Установка драйверов: автоматическая установка драйверов с помощью Zadig

Ошибка подключения к программатору AVR

Если вы получаете сообщение об ошибке, подобное приведенному ниже, вероятно, это связано с подключением к программатору AVR.

  язык: bash
avrdude: ошибка: usbtiny_transmit:
avrdude: инициализация не удалась, rc = -1
         Дважды проверьте соединения и попробуйте еще раз, или используйте -F для отмены этой проверки.


avrdude: ошибка: usbtiny_transmit:
  

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


Внимание! Ниже приведены лишь некоторые ошибки, с которыми мы столкнулись при использовании AVRDUDE. Чтобы просмотреть другие распространенные проблемы и способы их устранения, вы можете попробовать проверить онлайн-руководство AVRDUDE. Онлайн-руководство AVRDUDE: Устранение неполадок
Или выполните поиск в Интернете с ошибкой, которая у вас возникла, и проверьте разные форумы, чтобы узнать, не сталкивался ли кто-нибудь с теми же проблемами, что и вы.

Ресурсы и дальнейшее развитие

Теперь, когда вы успешно настроили и запустили свой Pocket AVR Programmer, пришло время включить его в свой собственный проект!

Вот еще несколько ресурсов, связанных с AVR Pocket Programmer, если они вам понадобятся:

У нас есть еще много руководств по этому поводу. Если вы хотите узнать больше или ищете вдохновения для проекта, ознакомьтесь с этими уроками!

Установка загрузчика Arduino

Из этого туториала Вы узнаете, что такое загрузчик и зачем его нужно устанавливать или переустанавливать.Мы также рассмотрим процесс записи загрузчика, записав шестнадцатеричный файл в микроконтроллер Arduino.

Использование Arduino Pro Mini 3,3 В

Это руководство - ваш путеводитель по Arduino Pro Mini. В нем объясняется, что это такое, а что нет, и как начать его использовать.

Вы хотите использовать Pi для прошивки файлов большего размера на микроконтроллеры AVR? Попробуйте попробовать шляпу программиста Pi AVR!

Pi AVR Programmer HAT Hookup Guide

26 июля 2018

В этом руководстве мы будем использовать Raspberry Pi 3 и Pi AVR Programmer HAT для программирования цели ATMega328P.Мы собираемся сначала запрограммировать загрузчик Arduino через SPI, а затем загрузить скетч Arduino через последовательный COM-порт USB.

Справочная страница

avrdude - Общие команды

Описание

Avrdude - это программа для загрузки кода и данных в микроконтроллеры Atmel AVR. Avrdude поддерживает программатор Atmel STK500, устройства Atmel AVRISP и AVRISP mkII, Atmel STK600, Atmel JTAG ICE (mkI, mkII и 3, последние два также в режиме ISP), программистов, соответствующих AppNote AVR910 и AVR109 (включая Butterfly), а также простой программируемый программатор, подключенный непосредственно к параллельному порту ppi (4) или parport (4), или к стандартному последовательному порту.В простейшем случае оборудование состоит только из кабеля, соединяющего соответствующие сигнальные линии AVR с параллельным портом.

MCU запрограммирован в режиме последовательного программирования , поэтому для программатора на основе ppi (4) MCU сигнализирует « / RESET », « SCK », « MISO » и « MOSI ». 'необходимо подключить к параллельному порту. По желанию, некоторые неиспользуемые выходные контакты параллельного порта могут использоваться для подачи питания на блок микроконтроллера, поэтому также возможно сконструировать пассивное автономное устройство программирования.Некоторые светодиоды состояния, указывающие текущее рабочее состояние программатора, могут быть подключены, и доступен сигнал для управления IC 74LS367 (или 74HCT367) буфера / драйвера. Последний может быть полезен для отделения параллельного порта от MCU при использовании внутрисистемного программирования.

Также поддерживается ряд столь же простых адаптеров для программирования бит-взрыва, которые подключаются к последовательному порту, среди них популярный последовательный адаптер Ponyprog и адаптеры DASA и DASA3, которые раньше поддерживались uisp (1).Обратите внимание, что эти адаптеры предназначены для подключения к физическому последовательному порту. Подключение к последовательному порту, имитируемому поверх USB, скорее всего, вообще не сработает или будет работать ужасно медленно.

Если у вас есть система Linux с как минимум 4 доступными аппаратными GPIO (как почти все встроенные платы Linux), вы можете обойтись без какого-либо дополнительного оборудования - просто подключите их к контактам MOSI, MISO, RESET и SCK на AVR и используйте тип программиста linuxgpio. Он разбивает строки с помощью интерфейса Linux sysfs GPIO.Конечно, следует позаботиться о совместимости уровней напряжения. Кроме того, хотя это не является строго обязательным требованием, настоятельно рекомендуется каким-либо образом защитить контакты GPIO от ситуаций перегрузки по току. Самым простым было бы просто подключить несколько резисторов последовательно или, еще лучше, использовать драйвер буфера с 3 состояниями, такой как 74HC244. Взгляните на http://kolev.info/avrdude-linuxgpio для более подробного руководства по использованию этого типа программиста.

Программатор Atmel STK500 также поддерживается и подключается к последовательному порту.Обе версии прошивки 1.x и 2.x могут обрабатываться, но требуют другой спецификации типа программатора (на данный момент). При использовании прошивки версии 2 также поддерживается высоковольтное программирование, как параллельное, так и последовательное (типы программаторов stk500pp и stk500hvsp).

Поддерживаются монтажные платы, использующие протокол STK500 V2.x, но для перевода плат в режим программирования используется простой переключатель DTR / RTS. Тип программатора - `` проводка ''.

Arduino (очень похож на STK500 1.x) поддерживается собственной спецификацией типа программиста `` arduino ''.

BusPirate - это универсальный инструмент, который также можно использовать в качестве программатора AVR. К одному BusPirate можно подключить до 3 независимых AVR. См. Подробности в разделе о расширенных параметрах ниже.

Программатор Atmel STK600 поддерживается в режимах ISP и программирования высокого напряжения и подключается через USB. Для устройств ATxmega STK600 поддерживается в режиме PDI. Для устройств ATtiny4 / 5/9/10 STK600 и AVRISP mkII поддерживаются в режиме TPI.

Простой последовательный программатор, описанный в примечании к приложению Atmel AVR910, и загрузчик, описанный в примечании к приложению Atmel AVR109 (который также используется оценочной платой AVR Butterfly), поддерживаются через последовательный порт.

Atmel JTAG ICE (mkI, mkII и 3) также поддерживается для загрузки или загрузки областей памяти из / в целевой AVR (без поддержки отладки на кристалле). Для JTAG ICE mkII поддерживаются режимы JTAG, debugWire и ISP при условии, что версия прошивки не ниже 4.14 (десятичный). JTAGICE3 также поддерживает все режимы JTAG, debugWIRE и ISP. См. Ниже ограничения debugWire. Для устройств ATxmega JTAG ICE mkII поддерживается в режиме PDI при условии, что он имеет версию 1 аппаратного и микропрограммного обеспечения не менее 5,37 (десятичная). Для устройств ATxmega JTAGICE3 поддерживается в режиме PDI.

Atmel-ICE (ARM / AVR) поддерживается во всех режимах (JTAG, PDI для Xmega, debugWIRE, ISP).

Платы Atmel XplainedPro, использующие протокол EDBG (совместимые с CMSIS-DAP), поддерживаются с использованием типа программатора "jtag3".

Платы Atmel XplainedMini, использующие протокол mEDBG, также поддерживаются с использованием типа программатора «jtag3».

AVR Dragon поддерживается во всех режимах (ISP, JTAG, HVSP, PP, debugWire). При использовании в режимах JTAG и debugWire AVR Dragon ведет себя аналогично JTAG ICE mkII, поэтому все комментарии, относящиеся к конкретному устройству, также будут применяться. При использовании в режиме ISP AVR Dragon ведет себя аналогично AVRISP mkII (или JTAG ICE mkII в режиме ISP), поэтому здесь будут применяться все комментарии, относящиеся к конкретному устройству.В частности, Dragon запускается с довольно быстрой тактовой частотой ISP, поэтому для обеспечения стабильной связи ISP может потребоваться опция -B bitclock . Для устройств ATxmega AVR Dragon поддерживается в режиме PDI при условии, что у него версия прошивки не ниже 6.11 (десятичная).

Адаптеры avrftdi, USBasp ISP и USBtinyISP также поддерживаются при условии, что avrdude скомпилирован с поддержкой libusb. USBasp ISP и USBtinyISP имеют простые реализации USB только для прошивки, работающие на ATmega8 (или ATmega88) или ATtiny2313 соответственно.Если libftdi была скомпилирована в avrdude , устройство avrftdi добавляет поддержку для многих программистов, использующих части FTDI 2232C / D / H и 4232H, работающие в режиме MPSSE, который жестко кодирует (в микросхеме) SCK в бит 1, MOSI в бит 2 и MISO на бит 3. Сброс обычно - это бит 4.

Загрузчик Atmel DFU поддерживается как в протоколе FLIP версии 1 (устройства AT90USB * и ATmega * U *), так и в версии 2 (устройства Xmega). . Ниже приведены некоторые подсказки о поведении протокола FLIP версии 1.

Могут быть предоставлены входные файлы, а выходные файлы могут быть записаны в различных форматах файлов, таких как необработанные двоичные файлы, содержащие данные для загрузки в чип, шестнадцатеричный формат Intel или формат S-записи Motorola.Для создания этих файлов доступен ряд инструментов, например asl (1) в качестве автономного ассемблера или avr-objcopy (1) для заключительного этапа цепочки инструментов GNU для микроконтроллера AVR.

При условии, что libelf (3) присутствовала при компиляции avrdude , входной файл также может быть окончательным файлом ELF, созданным компоновщиком. Соответствующие разделы ELF будут проверены в соответствии с областью памяти для записи.

Avrdude может программировать ячейки памяти EEPROM и flash ROM поддерживаемых частей AVR.Там, где это поддерживается последовательным набором инструкций, также могут быть запрограммированы биты предохранителей и биты блокировки. Они реализованы в avrdude как отдельные типы памяти и могут быть запрограммированы с использованием данных из файла (см. Параметр -m ) или из режима терминала (см. Команды dump и write ). Также возможно прочитать чип (при условии, что он, конечно, не был ранее защищен кодом) и сохранить данные в файле. Наконец, доступен `` терминальный '' режим, который позволяет интерактивно общаться с MCU, а также отображать или программировать отдельные ячейки памяти.На программаторе STK500 и STK600 несколько рабочих параметров (целевое напряжение питания, целевое напряжение Aref, основные часы) также могут быть проверены и изменены в терминальном режиме.

Опции

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

-p partno

Это единственная опция, которая является обязательной для каждого вызова avrdude . Он определяет тип MCU, подключенного к программатору.Они читаются из файла конфигурации. Для поддерживаемых в настоящее время типов MCU используйте? как partno, это напечатает список идентификаторов деталей и официальных названий деталей на терминале. (Оба могут использоваться с опцией -p.)

Следующие части требуют особого внимания:

AT90S1200

Протокол программирования ISP AT90S1200 несколько отличается от протокола других AVR. Таким образом, не все программисты поддерживают это устройство. Известно, что все непосредственные программисты bitbang работают и все программисты, использующие протокол STK500v2.

AT90S2343

AT90S2323 и ATtiny22 используют один и тот же алгоритм.

ATmega2560, ATmega2561

Адресация флэш-памяти размером более 128 КБ не поддерживается всем программным оборудованием. Известны программисты jtag2, stk500v2 и bit-bang.

ATtiny11

ATtiny11 можно программировать только в высоковольтном последовательном режиме.

-b baudrate

Отменить скорость передачи данных для соединения RS-232, указанную в соответствующей записи программиста в файле конфигурации.

-B bitclock

Укажите период битовой синхронизации для интерфейса JTAG или ISP (только для JTAG ICE). Значение представляет собой число с плавающей запятой в микросекундах. В качестве альтернативы, значение может быть дополнено суффиксом «Гц», «кГц» или «МГц», чтобы указать тактовую частоту битов, а не период. Значение по умолчанию для JTAG ICE составляет около 1 микросекунды, что подходит для целевых микроконтроллеров, работающих с тактовой частотой 4 МГц и выше. В отличие от некоторых параметров в STK500, JTAG ICE сбрасывает все свои параметры до значений по умолчанию, когда программное обеспечение для программирования выходит из ICE, поэтому для микроконтроллеров, работающих на более низких тактовых частотах, этот параметр должен быть указан в командной строке.Вы можете использовать ключевое слово default_bitclock в файле $ {HOME} /. Avrduderc , чтобы назначить значение по умолчанию, чтобы избежать необходимости указывать эту опцию при каждом вызове.

-c id-программиста

Используйте программатор, указанный в аргументе. Программисты и их конфигурации контактов считываются из файла конфигурации (см. Параметр -C). Новые конфигурации контактов могут быть легко добавлены или изменены с помощью файла конфигурации, чтобы заставить avrdude работать с разными программистами, если программист поддерживает метод последовательного программирования Atmel AVR.Вы можете использовать ключевое слово default_programmer в файле $ {HOME} /. Avrduderc , чтобы назначить программиста по умолчанию, которому не нужно указывать эту опцию при каждом вызове. Полный список всех поддерживаемых программаторов выводится на терминал с помощью? как идентификатор программиста.

-C файл конфигурации

Используйте указанный файл конфигурации для загрузки данных конфигурации. Этот файл содержит определения всех программаторов и деталей, о которых знает avrdude .См. Файл конфигурации, расположенный по адресу $ {PREFIX} /etc/avrdude/avrdude.conf , который содержит описание формата.

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

-D

Отключить автоматическое стирание для флэш-памяти.Когда указана опция -U с флэш-памятью, avrdude выполнит стирание чипа перед запуском любой из операций программирования, поскольку обычно ошибочно программировать флэш-память без предварительного стирания. Эта опция отключает это. Автоматическое стирание не используется для устройств ATxmega, поскольку эти устройства могут использовать стирание страниц перед записью каждой страницы, поэтому явное стирание чипа не требуется. Однако обратите внимание, что любая страница, на которую не влияет текущая операция, сохранит свое предыдущее содержимое.

-e

Вызывает выполнение стирания микросхемы. Это сбросит содержимое флэш-ПЗУ и EEPROM на значение « 0xff » и очистит все биты блокировки. За исключением устройств ATxmega, которые могут использовать стирание страниц, это, по сути, предварительная команда перед повторным программированием флэш-ПЗУ. Единственное исключение было бы, если бы новое содержимое привело бы к исключительному программированию битов со значения « 1 » на « 0 ». Обратите внимание, что для перепрограммирования ячеек EERPOM не требуется явного предварительного стирания чипа, поскольку MCU обеспечивает цикл автоматического стирания в этом случае перед программированием ячейки.

-E exitspec [, exitspec ]

По умолчанию avrdude оставляет параллельный порт в том же состоянии при выходе, что и при запуске. Эта опция изменяет состояние линий « / RESET » и « Vcc », на которых остается параллельный порт, согласно предоставленным аргументам exitspec , следующим образом:

reset

The ' Сигнал / RESET 'останется активным при выходе из программы, то есть он будет удерживать низкий уровень , чтобы впоследствии сохранить MCU в состоянии сброса.В частности, обратите внимание, что алгоритм программирования для устройства AT90S1200 требует, чтобы сигнал « / RESET » был активен до того, как включит питание MCU, поэтому в случае использования внешнего источника питания для этого типа MCU, предыдущий вызов avrdude с указанной опцией является одним из возможных способов гарантировать это условие.

noreset

Строка « / RESET » будет деактивирована при выходе из программы, что позволит целевой программе MCU работать, пока аппаратное обеспечение программирования остается подключенным.

vcc

Эта опция оставит активными те выводы параллельного порта (т.е. high ), которые можно использовать для подачи питания « Vcc » на MCU.

novcc

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

d_high

Эта опция оставит 8 контактов данных на параллельном порту активными. (т.е. high )

d_low

Эта опция оставит 8 контактов данных на параллельном порте неактивными.(т.е. младший )

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

-F

Обычно avrdude пытается убедиться, что подпись устройства, считанная из части, является допустимой, прежде чем продолжить. Поскольку время от времени может случиться так, что устройство имеет поврежденную (стертую или перезаписанную) подпись устройства, но в остальном работает нормально, эта опция предоставляется для отмены проверки. Кроме того, для программистов, таких как Atmel STK500 и STK600, которые могут настраивать параметры локально для инструмента программирования (независимо от фактического подключения к целевому контроллеру), эту опцию можно использовать вместе с -t для продолжения работы в терминальном режиме.

-i delay

Для программистов типа bitbang задержка примерно задержка микросекунд между каждым изменением состояния бита. Если хост-система очень быстрая или цель работает с медленными часами (например, кристалл 32 кГц или внутренний RC-генератор 128 кГц), это может стать необходимым для удовлетворения требования о том, что тактовая частота ISP не должна быть выше, чем 1/4 тактовой частоты процессора. Это реализовано как задержка цикла вращения, позволяющая даже очень короткие задержки.В операционных системах типа Unix цикл вращения изначально откалиброван по системному таймеру, поэтому количество микросекунд может быть довольно реалистичным, если предположить, что загрузка системы постоянна, пока работает avrdude . В операционных системах Win32 предполагается заранее сконфигурированное количество циклов в микросекунду, которое может быть немного неверным для очень быстрых или очень медленных машин.

-l файл журнала

Используйте файл журнала вместо stderr для вывода результатов диагностики.Обратите внимание, что первоначальные диагностические сообщения (во время анализа параметров) все равно записываются на stderr .

-n

No-write - отключает фактическую запись данных в MCU (полезно для отладки avrdude ).

-O

Выполните калибровку времени работы RC-генератора в соответствии с указаниями по применению Atmel AVR053. Это поддерживается только на оборудовании STK500v2, AVRISP mkII и JTAG ICE mkII. Обратите внимание, что результат будет сохранен в ячейке EEPROM по адресу 0.

-P порт

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

В операционных системах Win32 параллельные порты обозначаются как lpt1 - lpt3, ссылаясь на адреса 0x378, 0x278 и 0x3BC соответственно.Если к параллельному порту можно получить доступ через другой адрес, этот адрес можно указать напрямую, используя обычную нотацию языка C (т.е. шестнадцатеричные значения имеют префикс « 0x »).

Для JTAG ICE mkII и JTAGICE3, если avrdude был настроен с поддержкой libusb, порт можно также указать как usb [: серийный номер ]. Это заставит avrdude искать программатор на USB. Если также указан серийный номер , он будет сопоставлен с серийным номером, считанным с любого JTAG ICE mkII, найденного на USB.Сопоставление выполняется после удаления любых существующих двоеточий из данного серийного номера и справа налево, поэтому необходимо указать только наименее значимые байты серийного номера.

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

Для USB-программатора «AVR-Doper», работающего в режиме HID, порт должен быть указан как avrdoper. Поддержка Libusb требуется в Unix, но не в Windows. Для получения дополнительной информации о AVR-Doper см. Http: // www.obdev.at/avrusb/avrdoper.html.

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

Для программистов, которые подключаются к последовательному порту с использованием какого-либо протокола более высокого уровня (в отличие от программистов в стиле bit-bang), порт может быть указан как net : host : port .В этом случае вместо попытки открыть локальное устройство устанавливается сетевое соединение TCP с (TCP) портом на хосте . Предполагается, что удаленная конечная точка является терминальным или консольным сервером, который соединяет сетевой поток с локальным последовательным портом, к которому подключен настоящий программист. Предполагается, что порт настроен правильно, например, используется прозрачное 8-битное соединение для передачи данных без контроля четности на скорости 115200 бод для STK500.

-q

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

-s

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

-t

Сообщает avrdude о переходе в интерактивный режим терминала вместо загрузки или загрузки файлов.См. Ниже подробное описание режима терминала.

-u

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

Если в одном из файлов конфигурации есть строка

default_safemode = no;

Безопасный режим по умолчанию отключен. В этом случае действие опции -u отменяется, т.е. е. включает безопасный режим .

Безопасный режим всегда отключен для устройств AVR32, Xmega и TPI.

-U тип памяти : op : имя_файла [: формат ]

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

калибровка

Один или несколько байтов данных калибровки RC-генератора.

eeprom

EEPROM устройства.

efuse

Расширенный байт предохранителя.

flash

Flash ROM устройства.

предохранитель

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

hfuse

Старший байт предохранителя.

lfuse

Младший байт предохранителя.

блокировка

Байт блокировки.

подпись

Три байта подписи устройства (идентификатор устройства).

предохранитель N

Байты предохранителей устройств ATxmega, N - это целое число для каждого предохранителя, поддерживаемого устройством.

приложение

Область флэш-памяти приложений устройств ATxmega.

apptable

Флэш-область таблицы приложений устройств ATxmega.

boot

Область загрузочной флэш-памяти устройств ATxmega.

prodsig

Область производственной сигнатуры (калибровки) устройств ATxmega.

usersig

Область подписи пользователей устройств ATxmega.

Поле op указывает, какую операцию выполнять:

r

чтение памяти устройства и запись в указанный файл

w

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

v

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

Поле filename указывает имя файла для чтения или записи.Формат Поле является необязательным и содержит формат файла для чтения или записи. Формат может быть одним из:

i

Intel Hex

s

Motorola S-record

r

raw binary; порядок байтов с прямым порядком байтов, в случае данных флэш-ПЗУ

e

ELF (исполняемый и связываемый формат)

m

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

a

автоматическое определение; действительно только для ввода, и только если ввод не указан на stdin .

d

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

h

шестнадцатеричный; к каждому значению будет добавлена ​​строка 0x .

o

восьмеричный; каждому значению будет добавлено 0 , если оно не меньше 8, и в этом случае префикса не будет.

b

двоичный; к каждому значению будет добавлена ​​строка 0b .

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

При чтении любой области флеш-памяти (включая различные подобласти в устройствах Xmega) результирующий выходной файл будет усечен, чтобы не содержать завершающих байтов 0xFF, которые указывают на незапрограммированную (стертую) память. Таким образом, если вся память не запрограммирована, это приведет к выходному файлу, в котором вообще нет содержимого.

В качестве сокращения форма -U filename эквивалентна указанию -U flash: w: filename : a. Это будет работать, только если в filename нет двоеточия.

-v

Включить подробный вывод. Дополнительные параметры -v увеличивают уровень детализации.

-V

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

-x extended_param

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

Режим терминала

В этом режиме avrdude только инициализирует связь с MCU, а затем ожидает пользовательских команд на стандартном вводе. Команды и параметры могут быть сокращены до кратчайшей однозначной формы. Режим терминала обеспечивает историю команд с помощью readline (3), поэтому ранее введенные командные строки можно вызывать и редактировать.В настоящее время реализованы следующие команды:

dump memtype addr nbytes

Прочитать nbytes байт из указанной области памяти и отобразить их в обычном шестнадцатеричном виде и в формате ASCII.

dump

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

write memtype addr byte1 ... byteN

Вручную запрограммировать соответствующие ячейки памяти, начиная с адреса addr , используя значения от byte1 до byteN .Эта функция не реализована для памяти с адресом банка, такой как флэш-память устройств ATMega.

стереть

Выполнить стирание чипа.

send b1 b2 b3 b4

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

sig

Отображение байтов подписи устройства.

spi

Войдите в режим прямого SPI. Вывод pgmled действует как выбор ведомого. Поддерживается только параллельными программаторами bitbang.

часть

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

pgm

Возврат в режим программирования (из прямого режима SPI).

Напряжение vtarg

Установите напряжение питания цели на напряжение Вольт. Поддерживается только программатором STK500 и STK600.

varef [ канал ] напряжение

Установите регулируемый источник напряжения на напряжение Вольт. Это напряжение обычно используется для управления входом Aref цели на STK500.На Atmel STK600 доступны два опорных напряжения, которые можно выбрать с помощью дополнительного аргумента channel (0 или 1). Поддерживается только программатором STK500 и STK600.

fosc freq [M | k]

Установите задающий генератор на частоту Гц. Необязательная завершающая буква M умножается на 1E6, завершающая буква k - на 1E3. Поддерживается только программатором STK500 и STK600.

fosc off

Выключите задающий генератор. Поддерживается только программатором STK500 и STK600.

период sck

Только для программатора STK500 и STK600: Установите период тактовой частоты SCK на период микросекунд.

Только JTAG ICE: Установите период тактовой частоты битов JTAG ICE на период микросекунд. Обратите внимание, что в отличие от настроек STK500, эта настройка будет возвращена к своему значению по умолчанию (приблизительно 1 микросекунда), когда программное обеспечение для программирования выйдет из JTAG ICE.Этот параметр также можно использовать на JTAG ICE mkII, JTAGICE3 и Atmel-ICE, чтобы указать период тактовой частоты ISP при работе ICE в режиме ISP.

parms

Только для программатора STK500 и STK600: Отображение текущего напряжения и параметров задающего генератора.

Только JTAG ICE: Отображает текущее целевое напряжение питания и тактовую частоту / период битов JTAG.

подробный [ уровень ]

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

?
help

Дайте краткую онлайн-сводку доступных команд.

выйти

Выйти из режима терминала и, таким образом, avrdude .

Подключение контактов параллельного порта по умолчанию

(их можно изменить, см. Параметр -c)

Номер контакта Функция
2-5 Vcc (дополнительный источник питания к MCU)
7 / RESET (к MCU)
8 SCK (к MCU)
9 MOSI (к MCU)
MCU)
18-25 GND

Ограничения debugWire

Протокол debugWire - это собственный однопроводный (плюс земля) протокол Atmel, позволяющий внутрисхемную эмуляцию небольших устройств AVR с использованием ' / СБРОС 'строка.Режим DebugWire запускается срабатыванием предохранителя « DWEN » и последующим выключением и включением питания цели. Хотя этот режим в основном предназначен для отладки / эмуляции, он также предлагает ограниченные возможности программирования. Фактически, единственные области памяти, которые могут быть прочитаны или запрограммированы в этом режиме, - это флэш-ПЗУ и EEPROM. Также можно зачитать подпись. Все остальные области памяти недоступны. В режиме debugWire нет функции стирания микросхемы ; вместо этого при перепрограммировании флэш-ПЗУ каждая страница флэш-ПЗУ стирается непосредственно перед ее обновлением.Это делается прозрачно с помощью JTAG ICE mkII (или AVR Dragon). Единственный способ вернуться из режима debugWire - инициировать специальную последовательность команд для JTAG ICE mkII (или AVR Dragon), чтобы режим debugWire был временно отключен, а к цели можно было получить доступ с помощью обычного программирования ISP. Эта последовательность автоматически запускается при использовании JTAG ICE mkII или AVR Dragon в режиме ISP, когда они обнаруживают, что в режим ISP невозможно войти.

Особенности FLIP версии 1

Загрузчики, использующие протокол FLIP версии 1, ведут себя очень специфично.

Эти загрузчики не имеют возможности доступа к областям памяти, кроме флэш-памяти и EEPROM.

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

Иногда кажется, что загрузчик с уже отключенным режимом безопасности больше не отвечает разумными данными конфигурации, а только 0xFF для всех запросов. Поскольку эти запросы используются для получения эквивалента подписи, avrdude может продолжить работу только в этой ситуации, принудительно переопределив проверку подписи с помощью опции -F.

Стирание микросхемы может оставить EEPROM не очищенным, по крайней мере, в некоторых версиях загрузчика.

Программисты, принимающие расширенные параметры

JTAG ICE mkII
JTAGICE3
Atmel-ICE
AVR Dragon

mel в режиме JTAG принимается следующий расширенный параметр:

jtagchain = UB, UA, BB, BA

Настройка цепочки сканирования JTAG для UB единиц до, UA единиц после, BB бит до и BA бит после целевого AVR соответственно.Каждый блок AVR в цепочке сдвигается на 4 бита. Для других модулей JTAG может потребоваться другой счетчик сдвига битов.

AVR910
devcode = VALUE

Отмените выбор кода устройства, используя VALUE в качестве кода устройства. У программиста не запрашивается список поддерживаемых кодов устройств, и указанное ЗНАЧЕНИЕ не проверяется, а используется непосредственно в команде « T », отправляемой программисту. ЗНАЧЕНИЕ можно указать, используя обычную числовую запись языка программирования C.

no_blockmode

Отключает стандартную проверку возможности передачи блоков. Используйте no_blockmode , только если ваш программатор AVR910 создает ошибки во время начальной последовательности.

buspirate
reset = {cs, aux, aux2}

По умолчанию предполагается, что выходной контакт BusPirate CS подключен к контакту RESET на стороне AVR.Однако возможно несколько AVR, подключенных к одному и тому же BP, с общими для всех линиями MISO, MOSI и SCK. В таком случае один AVR должен иметь свой RESET, подключенный к выводу BusPirate CS , второй AVR RESET должен быть подключен к выводу BusPirate AUX , и если ваш BusPirate имеет вывод AUX2 (доступно только в версии BusPirate v1a с прошивкой 3.0 или новее ) используйте это, чтобы активировать СБРОС на третьем AVR.

Может быть хорошей идеей отделить шины SPI BusPirate и AVR друг от друга с помощью буфера шины с 3 состояниями.Например, 74HC125 или 74HC244 являются хорошими кандидатами с защелками, управляемыми соответствующим выводом сброса (cs, aux или aux2). В противном случае трафик SPI в одной активной цепи может помешать программированию AVR в другой схеме.

spifreq = <0..7>

Скорость SPI для двоичного режима SPI Bus Pirate:

0 .. 30 кГц (по умолчанию)
1 .. 125 кГц
2 .. 250 кГц
3 .. 1 МГц
4 .. 2 МГц
5 .. 2,6 МГц
6 .. 4 МГц
7 .. 8 МГц
         
rawfreq = <0..3>

Устанавливает скорость SPI и использует двоичный "raw-wire" режим Bus Pirate:

0 .. 5 кГц
1 .. 50 кГц
2 .. 100 кГц (только прошивка v4.2 +)
3 .. 400 кГц (v4.2 +)
         

Единственное преимущество режима "raw-wire" - это разные доступные частоты SPI. Постраничная запись в этом режиме не реализована.

ascii

Попытка использовать режим ASCII, даже если прошивка поддерживает BinMode (двоичный режим).BinMode поддерживается в прошивке 2.7 и новее, более старые прошивки либо не имеют BinMode, либо их BinMode содержит ошибки. Режим ASCII медленнее и делает недоступными указанные выше параметры reset = , spifreq = и rawfreq = . Имейте в виду, что режим ASCII не гарантирует работу с новыми версиями микропрограмм и сохраняется только для обеспечения совместимости со старыми версиями микропрограмм.

nopagedwrite

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

nopagedread

Более новые версии прошивки поддерживают в двоичном режиме SPI-команды для некоторых расширенных команд AVR. Использование функции Bulk Memory Read from Flash приводит к значительному увеличению скорости чтения. Если использование этого режима по какой-либо причине нежелательно, эта опция отключает его.

cpufreq = <125..4000>

Устанавливает вывод AUX на выходную частоту n кГц.Подключив вывод AUX к выводу XTAL1 вашего MCU, вы можете предоставить ему часы, например, когда ему нужны внешние часы из-за неправильной настройки предохранителей. Убедитесь, что частота процессора как минимум в четыре раза превышает частоту SPI.

serial_recv_timeout = <1 ...>

Устанавливает тайм-аут последовательного приема на заданное значение. Тайм-аут происходит каждый раз, когда avrdude ожидает приглашения BusPirate. Это происходит очень часто, особенно в режиме ascii, поэтому установка меньшего значения может значительно ускорить программирование.Значение по умолчанию - 100 мс. Использование 10 мс может работать в большинстве случаев.

Подключение

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

snooze = <0..32767>

После выполнения фазы открытия порта, AVRDUDE будет ждать / откладывать в течение откладывать миллисекунд, прежде чем перейти к фазе синхронизации протокола. Переключение DTR / RTS не выполняется, если snooze больше 0.

PICkit2

Подключение к программатору PICkit2:

(AVR) (PICkit2)
RST - VPP / MCLR (1)
VDD - VDD Target (2) - возможно, опционально, если AVR имеет автономное питание
ЗЕМЛЯ - ЗЕМЛЯ (3)
MISO - PGD (4)
SCLK - PDC (5)
MOSI - AUX (6)

     

Расширенные параметры командной строки:

clockrate =

Устанавливает частоту синхронизации SPI в Гц (по умолчанию 100 кГц).В качестве альтернативы можно использовать параметры -B или -i для установки периода.

timeout =

Устанавливает время ожидания для чтения и записи USB в миллисекундах (по умолчанию 1500 мс).

Справочная страница Ubuntu: using_avrprog - Использование программы avrdude

Предоставлено: avr-libc_2.0.0 + Atmel3.6.2-1.1_all
 
НАИМЕНОВАНИЕ
       using_avrprog - Использование программы avrdude

         Примечание 
           Этот раздел был создан Брайаном Дином [bsd @ bsdhome.com].

           Программа avrdude ранее называлась avrprog. Название было изменено, чтобы избежать
           путаница с программой avrprog, поставляемой Atmel с AvrStudio.

       avrdude - это программа, которая используется для обновления или чтения флэш-памяти и памяти EEPROM Atmel.
       Микроконтроллеры AVR на FreeBSD Unix. Он поддерживает протокол последовательного программирования Atmel.
       используя параллельный порт ПК и может загружать либо необработанный двоичный файл, либо Intel Hex
       форматировать файл. Его также можно использовать в интерактивном режиме для индивидуального обновления EEPROM.
       ячеек, предохранителей и / или битов блокировки (если их доступ поддерживается последовательным
       протокол программирования.) Основная флэш-память с инструкциями AVR также может быть запрограммирована.
       в интерактивном режиме, однако, это не очень полезно, потому что можно только отключить биты.
       Единственный способ включить флэш-биты - это стереть всю память (используя avrdude -e
       вариант).

       avrdude является частью системы портов FreeBSD. Чтобы установить его, просто сделайте следующее:

       # cd / usr / ports / devel / avrdude
       # сделать установку

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

       # avrdude -p 2313 -e -m flash -i main.hex

       avrdude: устройство AVR инициализировано и готово принимать инструкции

       avrdude: подпись устройства = 0x1e9101

       avrdude: стирающий чип
       avrdude: готово.
       avrdude: чтение входного файла "main.hex"
       avrdude: входной файл main.hex автоматически определяется как Intel Hex

       avrdude: запись flash:
       1749 0x00
       avrdude: записано 1750 байт флеш-памяти
       avrdude: проверка флэш-памяти по сравнению с main.шестнадцатеричный:
       avrdude: чтение данных флеш-памяти на кристалле:
       1749 0x00
       avrdude: проверяем ...
       avrdude: проверено 1750 байт флэш-памяти

       avrdude сделано. Спасибо.

       Параметр -p 2313 позволяет avrdude знать, что мы работаем на микросхеме AT90S2313. Этот
       опция указывает идентификатор устройства и сопоставляется с устройством с таким же идентификатором в
       Файл конфигурации avrdude (/usr/local/etc/avrdude.conf). Чтобы перечислить допустимые части, укажите
       параметр -v. Параметр -e указывает avrdude выполнить стирание чипа перед программированием;
       это почти всегда необходимо перед программированием вспышки.Параметр -m flash
       указывает, что мы хотим загрузить данные во флэш-память, а -i main.hex указывает
       имя входного файла.

       EEPROM загружается таким же образом, с той лишь разницей, что вы должны использовать -m
       eeprom вместо -m flash.

       Чтобы использовать интерактивный режим, используйте параметр -t:

       # avrdude -p 2313 -t
       avrdude: устройство AVR инициализировано и готово принимать инструкции
       avrdude: подпись устройства = 0x1e9101
       avrdude>

       '?' команда отображает список допустимых
       команды:

       avrdude>?
       >>>?
       Допустимые команды:

         dump: dump memory: dump   
         читать: псевдоним для дампа
         запись: запись в память: запись    ... 
         erase: выполнить стирание чипа
         sig: отображать байты подписи устройства
         part: отображение информации о текущей детали
         send: отправить необработанную команду: отправить    
         Помогите помогите
         ? : помощь
         выйти: выйти

       Используйте команду 'part', чтобы отобразить допустимые типы памяти для использования с

       avrdude>
 

avrdude (1) - справочная страница Linux

Это единственная опция, которая является обязательной для каждого вызова avrdude .Он определяет тип MCU, подключенного к программатору. Эти читать из файла конфигурации. Если avrdude не знает об имеющейся у вас части, просто добавьте ее в файл конфигурации (обязательно и отправьте патч обратно в автора, чтобы его можно было включить в следующую версию). См. Пример файла конфигурации для определения формата. В настоящее время понимаются следующие типы MCU:

HTML-ИЗОБРАЖЕНИЕ Тег опции Официальное название детали 1200 AT90S1200 2313 AT90S2313 2333 AT90S2333 2343 AT90S2343 (*) 4414 AT90S4414 4433 AT90S4433 4434 AT90S4434 8515 AT90S8515 8535 AT90S8535 c128 AT90CAN128 c32 AT90CAN32 c64 AT90CAN64 m103 ATmega103 m128 ATmega128 m1280 ATmega1280 m1281 ATmega1281 m1284p ATmega1284P m128rfa1 ATmega128RFA1 m16 ATmega16 m161 ATmega161 m162 ATmega162 m163 ATmega163 m164 ATmega164 m164p ATmega164P m168 ATmega168 m169 ATmega169 m2560 ATmega2560 (**) m2561 ATmega2561 (**) m32 ATmega32 m324p ATmega324P m325 ATmega325 m3250 ATmega3250 m328p ATmega328P m329 ATmega329 m3290 ATmega3290 m329p ATmega329P m3290p ATmega3290P m32u4 ATmega32U4 m48 ATmega48 m64 ATmega64 m640 ATmega640 m644p ATmega644P m644 ATmega644 m645 ATmega645 m6450 ATmega6450 m649 ATmega649 m6490 ATmega6490 m8 ATmega8 m8515 ATmega8515 m8535 ATmega8535 m88 ATmega88 pwm2 AT90PWM2 pwm2b AT90PWM2B pwm3 AT90PWM3 pwm3b AT90PWM3B t10 ATtiny10 t12 ATtiny12 (***) t13 ATtiny13 t15 ATtiny15 t2313 ATtiny2313 t25 ATtiny25 t26 ATtiny26 t261 ATtiny261 t4 ATtiny4 t44 ATtiny44 t45 ATtiny45 t461 ATtiny461 t5 ATtiny5 t84 ATtiny84 t85 ATtiny85 t861 ATtiny861 t88 ATtiny88 t9 ATtiny9 ucr2 AT32uca0512 usb1286 ATmega1286 usb1287 ATmega1287 usb162 ATmega162 usb646 ATmega647 usb647 ATmega647 usb82 ATmega82 x128a1 ATxmega128A1 x128a1d ATxmega128A1revD x128a3 ATxmega128A3 x128a4 ATxmega128A4 x16a4 ATxmega16A4 x192a ATxmega192A1 x192a3 ATxmega192A3 x256a1 ATxmega256A1 x256a3 ATxmega256A3 x256a3b ATxmega256A3B x32a4 ATxmega32A4 x64a1 ATxmega64A1 x64a3 ATxmea464A3 x64a3 ATxmea464A3 ATxmega64A4 HTML-IMAGE-END.Bl -tag -width "(**)"

(*) 'AT90S2323 и ATtiny22 используют один и тот же алгоритм.

(**) 'Адресация флэш-памяти размером более 128 КБ поддерживается не всем программным оборудованием. Известны программисты jtag2, stk500v2 и bit-bang.

(***)
ATtiny11 использует тот же алгоритм, но его можно запрограммировать только в высоковольтном последовательном режиме.
Отменить скорость передачи данных для соединения RS-232, указанную в соответствующей записи программиста в файле конфигурации.
Укажите период тактовой частоты бит для интерфейса JTAG или тактовый сигнал ISP (только JTAG ICE).Значение представляет собой число с плавающей запятой в микросекундах. Значение по умолчанию JTAG ICE дает около 1 микросекунды битового периода, что подходит для целевых микроконтроллеров, работающих с тактовой частотой 4 МГц и выше. В отличие от некоторых параметров в STK500, JTAG ICE сбрасывает все свои параметры до значений по умолчанию, когда программное обеспечение для программирования выходит из ICE, поэтому для микроконтроллеров, работающих на более низких тактовых частотах скорости, этот параметр должен быть указан в командной строке.
Используйте конфигурацию контактов, указанную в аргументе.Конфигурации контактов считываются из файла конфигурации (см. Параметр -C ). Новые конфигурации контактов могут быть легко добавить или изменить с помощью файла конфигурации, чтобы заставить avrdude работать с разными программистами, если программист поддерживает Atmel Метод последовательной программы AVR. Вы можете использовать ключевое слово default_programmer в вашем файле $ {HOME} /. Avrduderc , чтобы назначить программиста по умолчанию, чтобы необходимость указывать эту опцию при каждом вызове.
Используйте указанный файл конфигурации для загрузки данных конфигурации.Этот файл содержит определения всех программаторов и деталей, о которых знает avrdude . Если у тебя есть программатор или деталь, о которой avrdude не знает, вы можете добавить ее в файл конфигурации (обязательно отправьте патч обратно автору, чтобы он мог быть включены в следующую версию). См. Файл конфигурации, расположенный по адресу $ {PREFIX} /etc/avrdude/avrdude.conf , который содержит описание формата.
Отключить автоматическое стирание вспышки. Если указана опция -U с флэш-памятью, avrdude выполнит стирание микросхемы перед запуском любого из операции программирования, так как обычно является ошибкой программировать вспышку без предварительного стирания.Эта опция отключает это. Авто стирание нет используется для устройств ATxmega, поскольку эти устройства могут использовать стирание страниц перед записью каждой страницы, поэтому явное стирание чипа не требуется. Обратите внимание, однако, что ни одна страница не затронутые текущей операцией, сохранят свое предыдущее содержимое.
Вызывает выполнение стирания чипа. Это сбросит содержимое флэш-ПЗУ и EEPROM на значение «0xff» и очистит все биты блокировки. Кроме ATxmega устройства, которые могут использовать стирание страницы, это, по сути, предварительная команда перед повторным программированием флэш-ПЗУ.Единственное исключение будет, если новый содержимое будет приводить к программированию исключительно битов от значения «1» до «0». Обратите внимание, что для перепрограммирования ячеек EERPOM не требуется явного предварительного стирания чипа. требуется, поскольку в этом случае MCU обеспечивает цикл автоматического стирания перед программированием ячейки.
[, exitspec ]
По умолчанию avrdude оставляет параллельный порт в том же состоянии при выходе, что и при запуске. Эта опция изменяет состояние '/ RESET' и строки 'Vcc', на которых остается параллельный порт, согласно предоставленным аргументам exitspec , а именно:

сброс 'Сигнал' / RESET 'останется активным при выходе из программы, то есть он будет удерживаться на низком уровне , чтобы держать MCU в состоянии сброса после.В частности, обратите внимание, что алгоритм программирования для устройства AT90S1200 требует, чтобы сигнал '/ RESET' был активен перед включением питания MCU, поэтому в случае, если для этого типа MCU используется внешний источник питания, предыдущий вызов avrdude с указанной опцией является одним из возможные способы гарантировать это условие.

noreset
Строка «/ RESET» будет деактивирована при выходе из программы, что позволит целевой программе MCU работать, пока аппаратное обеспечение программирования остается подключенным.

vcc 'Эта опция оставит активными те выводы параллельного порта (т.е. high ), которые можно использовать для подачи питания Vcc на MCU.

novcc 'Эта опция опускает контакты «Vcc» параллельного порта при выходе из программы.

Несколько аргументов exitspec можно разделить запятыми.
Обычно avrdude пытается проверить правильность считанной сигнатуры устройства перед продолжением.Поскольку это может происходить время от времени что устройство имеет поврежденную (стертую или перезаписанную) подпись устройства, но в остальном работает нормально, эта опция предоставляется для отмены проверки. Также, для программистов, таких как Atmel STK500 и STK600, которые могут настраивать параметры локально для инструмента программирования (независимо от фактического подключения к целевому объекту). контроллер), эту опцию можно использовать вместе с -t для продолжения работы в терминальном режиме.
Для программистов типа bitbang: задержка примерно , задержка микросекунд между каждым изменением состояния бита.Если хост-система очень быстрая или целевая работает с медленными часами (например, кристалл 32 кГц или внутренний RC-генератор 128 кГц), это может стать необходимым для удовлетворения требования, чтобы частота ISP частота не должна быть выше 1/4 тактовой частоты процессора. Это реализовано как задержка цикла вращения, позволяющая даже очень короткие задержки. В стиле Unix операционных систем, цикл вращения изначально откалиброван по системному таймеру, поэтому количество микросекунд может быть довольно реалистичным, если предположить, что загрузка системы во время работы avrdude .В операционных системах Win32 предполагается предварительно настроенное количество циклов в микросекунду, которое может немного отличаться. для очень быстрых или очень медленных машин.
No-write - отключает фактическую запись данных в MCU (полезно для отладки avrdude ).
Выполните калибровку времени работы RC-генератора в соответствии с указаниями по применению Atmel AVR053. Поддерживается только на STK500v2, AVRISP mkII и JTAG ICE mkII. аппаратное обеспечение. Обратите внимание, что результат будет сохранен в ячейке EEPROM по адресу 0.
Используйте порт для идентификации устройства, к которому подключен программатор.По умолчанию используется порт / dev / ppi0 , но если тип программиста обычно подключается к последовательному порту, порт / dev / cuaa0 используется по умолчанию. Если вам нужно использовать другой параллельный или последовательный порт, используйте эту опцию, чтобы указать альтернативное имя порта.

В операционных системах Win32 параллельные порты обозначаются как lpt1 - lpt3, ссылаясь на адреса 0x378, 0x278 и 0x3BC соответственно. Если к параллельному порту можно получить доступ через другой адрес, этот адрес можно указать напрямую, используя общепринятую нотацию языка C (т.е., шестнадцатеричный значения имеют префикс '0x').

Для JTAG ICE mkII, если avrdude был настроен с поддержкой libusb, порт можно также указать как usb [: серийный номер ]. Это заставит avrdude искать JTAG ICE mkII на USB. Если также указан серийный номер , он будет сопоставлен с серийный номер, считанный с любого JTAG ICE mkII, найденного на USB. Сопоставление выполняется после удаления всех существующих двоеточий из данного серийного номера и справа налево, поэтому необходимо указать только младшие байты серийного номера.

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

Для USB-программатора «AVR-Doper», работающего в режиме HID, порт должен быть указан как avrdoper. Поддержка Libusb требуется в Unix, но не в Windows. Для получения дополнительной информации о AVR-Doper см. Http://www.obdev.at/avrusb/avrdoper.html.

Для программистов, которые подключаются к последовательному порту с использованием какого-либо протокола более высокого уровня (в отличие от программистов в стиле бит-взрыва), порт может быть указано как net : host : port .В этом случае вместо попытки открыть локальное устройство сетевое соединение TCP с (TCP) порт на хост установлен. Предполагается, что удаленная конечная точка является терминальным или консольным сервером, который подключает сетевой поток к локальному последовательному порту, где фактический программист был прикреплен к. Предполагается, что порт настроен правильно, например, используется прозрачное 8-битное соединение для передачи данных без контроля четности на 115200 бод для STK500. Эта функция в настоящее время не реализована для систем Win32.
Отключить (или подавить) вывод индикатора выполнения при чтении или записи на устройство. Для еще более тихой работы укажите его второй раз.
Отключить подсказку безопасного режима. Когда безопасный режим обнаруживает, что один или несколько предохранителей были непреднамеренно изменены, он запрашивает подтверждение относительно того, или нет он должен пытаться восстановить предохранитель бит (s). Установка этого флага отключает приглашение и предполагает, что плавкий предохранитель бит (s) должен быть восстановлен без сначала просят подтверждения.
Указывает avrdude перейти в интерактивный "терминальный" режим вместо загрузки или загрузки файлов. См. Ниже подробное описание терминала. режим.
Отключить проверку битов предохранителей безопасного режима. Безопасный режим включен по умолчанию и предназначен для предотвращения непреднамеренного изменения битов предохранителей. При включении безопасный режим будет выдает предупреждение, если при выходе из программы выясняется, что какие-либо биты предохранителя отличаются от тех, которые были при вызове avrdude . Safemode не изменяет биты предохранителей сам, но будет запрашивать инструкции, если терминал не является неинтерактивным, и в этом случае безопасный режим отключен.См. Вариант -s , чтобы отключить подсказку безопасного режима.
: op: filename
[: format ]
Выполните операцию с памятью, как указано. Поле memtype указывает тип памяти для работы. Доступные типы памяти зависят от устройства, фактическую конфигурацию можно просмотреть с помощью команды part в терминальном режиме. Как правило, конфигурация памяти устройства, по крайней мере, содержит типы памяти. flash и eeprom .Все известные в настоящее время типы памяти:
калибровка
Один или несколько байтов данных калибровки RC-генератора.
eeprom 'EEPROM устройства.
efuse 'Расширенный байт предохранителя.
flash 'Флэш-ПЗУ устройства.
fuse 'Байт предохранителя в устройствах, которые имеют только один байт предохранителя.
hfuse 'Старший байт предохранителя.
lfuse 'Младший байт предохранителя.
lock 'Байт блокировки.
signature 'Три байта подписи устройства (идентификатор устройства).
fuse N 'Байты предохранителей устройств ATxmega, N - это целое число для каждого предохранителя, поддерживаемого устройством.
application
Область приложения flash для устройств ATxmega.
apptable 'Флэш-область таблицы приложений устройств ATxmega.
boot 'Область загрузочной флэш-памяти устройств ATxmega.
prodsig 'Область производственной сигнатуры (калибровки) устройств ATxmega.
usersig 'Область подписи пользователей устройств ATxmega.

Поле op указывает, какую операцию выполнять:

r 'чтение памяти устройства и запись в указанный файл

w 'чтение данных из указанного файла и запись в память устройства

v 'считывать данные как с устройства, так и из указанного файла и выполнять проверку

Поле filename указывает имя файла для чтения или записи.Формат Поле является необязательным и содержит формат файла для чтения. или напишите. Формат может быть одним из:

i 'Intel Hex

s 'Motorola S-рекордер

r 'необработанный двоичный файл; порядок байтов с прямым порядком байтов, в случае данных флэш-ПЗУ

м 'сразу; фактические значения байтов, указанные в командной строке, разделенные запятыми или пробелами. Это хорошо для программирования байтов предохранителей без для создания однобайтового файла или входа в режим терминала.

'автоматическое определение; действительно только для ввода, и только если ввод не указан на stdin .

d 'десятичный; этот и следующие форматы действительны только для вывода. Они генерируют одну строку вывода для соответствующего раздела памяти, образуя Список значений, разделенных запятыми. Это может быть особенно полезно для последующей обработки, например, для настройки битов предохранителей.

h 'шестнадцатеричный; к каждому значению будет добавлена ​​строка 0x .

o 'восьмеричный; каждому значению будет добавлено 0 , если оно не меньше 8, и в этом случае префикса не будет.

b 'двоичный; к каждому значению будет добавлена ​​строка 0b .

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

В качестве сокращения форма -U имя_файла эквивалентна указанию -U flash: w: filename : a. Это будет работать, только если имя_файла не имеет двоеточия.
Включить подробный вывод.
Отключить автоматическую проверку при загрузке данных.
Передайте extended_param выбранной реализации программиста в качестве расширенного параметра. Интерпретация расширенного параметра зависит от сам программист.См. Ниже список программистов, принимающих расширенные параметры.
Указывает avrdude использовать последние четыре байта памяти EEPROM подключенных частей для отслеживания количества стирания данных с устройства. Когда этот вариант используется и флаг -e указывается для генерации стирания чипа, предыдущий счетчик будет сохранен до стирания чипа, затем он увеличивается на единицу, и записывается обратно после завершения цикла стирания. Предположительно, устройство будет стерто только непосредственно перед программированием, и, таким образом, это может быть использовано для указание того, сколько циклов стирания-перезаписи претерпела деталь.Поскольку флэш-память может выдержать только конечное число циклов стирания-перезаписи, можно используйте эту опцию, чтобы отслеживать, когда деталь приближается к пределу. Типичный предел для Atmel AVR FLASH составляет 1000 циклов. Конечно, если приложению нужен последний четыре байта памяти EEPROM, эту опцию использовать не следует.
Дает команду avrdude инициализировать счетчик циклов стирания-перезаписи, находящийся в последних четырех байтах памяти EEPROM, до указанного значения. Если приложению требуются последние четыре байта памяти EEPROM, этот параметр не следует использовать.

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

dump memtype addr nbytes
Прочитать nbytes байт из указанной области памяти и отобразить их в обычном шестнадцатеричном виде и в формате ASCII.

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

запись memtype addr byte1 ... byteN
Вручную запрограммировать соответствующие ячейки памяти, начиная с адреса addr , используя значения от byte1 до byteN . Эта функция не реализован для адресной памяти банка, такой как флэш-память устройств ATMega.

стереть
Выполнить стирание чипа.

отправить b1 b2 b3 b4
Отправить необработанные коды инструкций на устройство AVR. Если вам нужен доступ к функции части AVR, которая напрямую не поддерживается avrdude , эта команда позволяет использовать его, даже если avrdude не реализует команду. При использовании прямого режима SPI можно пропустить до 3 байтов.

sig 'Отображение байтов подписи устройства.

spi 'Войдите в режим прямого SPI. Вывод pgmled действует как выбор ведомого. Поддерживается только параллельными программаторами bitbang.

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

pgm 'Возврат в режим программирования (из режима прямого SPI).

vtarg Voltage
Установите напряжение питания цели на Voltage Volts. Поддерживается только программатором STK500 и STK600.

varef [
канал
] напряжение
Установите регулируемый источник напряжения на напряжение Вольт. Это напряжение обычно используется для управления входом Aref цели на STK500. На Атмеле STK600, доступны два опорных напряжения, которые можно выбрать с помощью дополнительного аргумента канал (0 или 1). Поддерживается только на STK500 и программатор STK600.

fosc freq [M | k]
Установите задающий генератор на частоту Гц.Необязательная завершающая буква M умножается на 1E6, завершающая буква k - на 1E3. Поддерживается только на программатор СТК500 и СТК600.

fosc off
Выключите задающий генератор. Поддерживается только программатором STK500 и STK600.

период sck
Только программатор STK500 и STK600:
Установите период тактовой частоты SCK на период микросекунд.

Только JTAG ICE: Установите период тактовой частоты бита JTAG ICE на период микросекунд.Обратите внимание, что в отличие от настроек STK500, этот параметр будет возвращен к его значение по умолчанию (приблизительно 1 микросекунда), когда программное обеспечение для программирования выходит из JTAG ICE. Этот параметр также можно использовать на JTAG ICE mkII. для указания периода времени ISP при работе ICE в режиме ISP.

parms
Только для программатора STK500 и STK600:
Отображение текущего напряжения и параметров задающего генератора.

Только JTAG ICE: Отображает текущее целевое напряжение питания и тактовую частоту / период битов JTAG.

? '

help 'Кратко опишите доступные команды в режиме онлайн.

quit 'Выйти из режима терминала и, таким образом, avrdude .

Соединения контактов параллельного порта по умолчанию
(их можно изменить, см. Опцию -c ) HTML-IMAGEll. Номер контакта Функция 2-5 Vcc (дополнительный источник питания для MCU) 7 / RESET (для MCU) 8 SCK (для MCU) 9 MOSI (к MCU) 10 MISO (от MCU) 18-25 GND HTML-IMAGE-END.Ограничения ss debugWire Протокол debugWire является проприетарным однопроводным (плюс заземление) Atmel. протокол, позволяющий внутрисхемную эмуляцию небольших устройств AVR, используя строку '/ RESET'. Режим DebugWire запускается при срабатывании предохранителя DWEN и затем выключите и снова включите цель. Хотя этот режим в основном предназначен для отладки / эмуляции, он также предлагает ограниченные возможности программирования. Фактически, только те области памяти, которые могут быть прочитаны или запрограммированы в этом режиме, - это флэш-ПЗУ и EEPROM. Также можно зачитать подпись.Все остальные области памяти недоступен. В режиме debugWire нет функции стирания микросхемы ; вместо этого при перепрограммировании флэш-ПЗУ каждая страница флэш-ПЗУ стирается прямо перед обновлением. Это делается прозрачно с помощью JTAG ICE mkII (или AVR Dragon). Единственный способ вернуться из режима debugWire - запустить специальный последовательность команд для JTAG ICE mkII (или AVR Dragon), поэтому режим debugWire будет временно отключен, а к цели можно будет получить доступ с помощью обычного интернет-провайдера программирование.Эта последовательность автоматически запускается при использовании JTAG ICE mkII или AVR Dragon в режиме ISP, когда они обнаруживают, что в режим ISP невозможно войти.

Программисты, принимающие расширенные параметры

JTAG ICE mkII

AVR Dragon
При использовании JTAG ICE mkII или AVR Dragon в режиме JTAG допустим следующий расширенный параметр:

jtagchain = UB, UA, BB, BA
Настройте цепочку сканирования JTAG для UB единиц до, UA единиц после, BB бит до и BA бит после целевого AVR, соответственно.Каждый Блок AVR в цепочке сдвигается на 4 бита. Для других модулей JTAG может потребоваться другой счетчик сдвига битов.

AVR910

devcode = VALUE
Отмените выбор кода устройства, используя VALUE в качестве кода устройства. У программиста не запрашивается список поддерживаемых кодов устройств, и указанное ЗНАЧЕНИЕ не проверяется, но используется непосредственно в команде 'T', отправляемой программисту. ЗНАЧЕНИЕ можно указать с помощью обычного числовое обозначение языка программирования C.

no_blockmode
Отключает стандартную проверку возможности передачи блоков. Используйте no_blockmode только в том случае, если ваш программатор AVR910 создает ошибки во время начального последовательность.

буспират

reset = {cs, aux, aux2}
По умолчанию предполагается, что выходной контакт BusPirate CS подключен к контакту RESET на стороне AVR. Однако возможно подключение нескольких AVR к один и тот же БП с общими для всех линиями MISO, MOSI и SCK.В таком случае один AVR должен иметь свой RESET, подключенный к выводу BusPirate CS , второй AVR. СБРОС подключен к выводу BusPirate AUX , и если ваш BusPirate имеет вывод AUX2 (доступен только в BusPirate версии v1a с прошивкой 3.0 или новее) используйте это, чтобы активировать СБРОС на третьем AVR.

Может быть хорошей идеей отделить шины SPI BusPirate и AVR друг от друга с помощью буфера шины с 3 состояниями. Например, 74HC125 или 74HC244 - это некоторые хорошие кандидаты с защелками, управляемыми соответствующим выводом сброса (cs, aux или aux2).

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *