Avrdude — консольная программа прошивки микроконтроллеров
Avrdude (AVR Downloader-Uploader) — бесплатная кросплатформенная программа, предназначенная для прошивания микроконтроллеров компании ATMEL. Поддерживает практически все имеющиеся официальные типы программаторов, а также некоторые сторонние программаторы.
- Установить программу;
- Разобраться с параметрами командной строки и сформировать команду запуска программы.
Оглавление
- 1 Установка Avrdude
- 2 Параметры программы
- 2.1 Задаем тип микроконтроллера (-p)
- 2.2 Задаем скорость порта для программатора (-b)
- 2.3 Задаем скорость обмера данными программатора с микроконтроллером (-B)
- 2.4 Запрещаем автоматическую очистку памяти микроконтроллера перед прошиванием (-D)
- 2.5 Указываем порт, к которому подключен программатор (-P)
- 2.6 Отключение проверки сигнатуры микроконтроллера (-F)
- 2.7 Очистка микроконтроллера (-e)
- 2.8 Манипуляции с памятью микроконтроллера (-U)
- 2.9 Блокировать любую запись в микроконтроллер (-n)
- 2.10 Разрешение на изменение фьюзов (-u)
- 2.11 Открытие терминала программатора (-t)
- 2.12 Выключить автоматическую проверку записи (-V)
- 2.13 Задаем тип программатора (-c)
- 3 Скрипт для автоматической прошивки микроконтроллера
Установка Avrdude
avrdude
Параметры программы
Avrdude
[опции]
[опции]
задают параметры команды в формате -ключ_значение
.Задаем тип микроконтроллера (-p)
Avrdude -p <partno>
где <partno>
— тип микроконтроллера. Данная команда указывает какой тип микроконтроллера используется. Например, для микроконтроллера Atmega32 <partno>
будет равен m32
.
Задаем скорость порта для программатора (-b)
Avrdude -b <baudrate>
где <baudrate> переопределяет скорость обмена данными с программатором по последовательному интерфейсу (относится не ко всем типам программаторов). Не рекомендуется изменять данный параметр без особых причин, т.к. программаторы обычно оптимизированы на скорость по умолчанию.
Avrdude -B <bitclock>
где < bitclock> переопределяет скорость обмена данными программатора с микроконтроллером. Данный параметр может потребоваться если частота микроконтроллера слишком низкая и не позволяет производить программирование на скорости по умолчанию. В таком случае с помощью данного параметра скорость программирования может быть снижена.
Отключение проверки сигнатуры микроконтроллера (-F)
Avrdude -F
Очистка микроконтроллера (-e)
Avrdude -e
Манипуляции с памятью микроконтроллера (-U)
Avrdude -U <
memtype
>:r|w|v:<filename>[:format]
- flash — флеш память микроконтроллера;
- eeprom — энергонезависимая память микроконтроллера;
- hfuse — старший байт фьюзов микроконтроллера;
- lfuse — младший байт фьюзов микроконтроллера;
- efuse — еще один байт фьюзов микроконтроллера (если поддерживается микроконтроллером).
test.hex
будет следующей:Avrdude -U flash:w:test.hex:i
Команда на чтение содержимого энергонезависимой памяти микроконтроллера в файл eedump
.hex
будет следующей:
Avrdude -U eeprom:r:eedump.hex:i
Блокировать любую запись в микроконтроллер (-n)
Avrdude -n
Разрешение на изменение фьюзов (-u)
Avrdude -u
Задаем тип программатора (-c)
С помощью опции -c <programmer>
возможен выбор одного из следующих программаторов:
- t10 = ATtiny10
- t8 = ATtiny9
- t5 = ATtiny5
- t4 = ATtiny4
- ucr2 = 32UC3A0512
- x128a4 = ATXMEGA128A4
- x64a4 = ATXMEGA64A4
- x32a4 = ATXMEGA32A4
- x16a4 = ATXMEGA16A4
- x256a3b = ATXMEGA256A3B
- x256a3 = ATXMEGA256A3
- x192a3 = ATXMEGA192A3
- x128a3 = ATXMEGA128A3
- x64a3 = ATXMEGA64A3
- x256a1 = ATXMEGA256A1
- x192a1 = ATXMEGA192A1
- x128a1d = ATXMEGA128A1REVD
- x128a1 = ATXMEGA128A1
- x64a1 = ATXMEGA64A1
- m6450 = ATMEGA6450
- m3250 = ATMEGA3250
- m645 = ATMEGA645
- m325 = ATMEGA325
- usb82 = AT90USB82
- usb162 = AT90USB162
- usb1287 = AT90USB1287
- usb1286 = AT90USB1286
- usb647 = AT90USB647
- usb646 = AT90USB646
- m32u4 = ATmega32U4
- t84 = ATtiny84
- t44 = ATtiny44
- t24 = ATtiny24
- m128rfa1 = ATMEGA128RFA1
- m2561 = ATMEGA2561
- m2560 = ATMEGA2560
- m1281 = ATMEGA1281
- m1280 = ATMEGA1280
- m640 = ATMEGA640
- t85 = ATtiny85
- t45 = ATtiny45
- t25 = ATtiny25
- pwm3b = AT90PWM3B
- pwm2b = AT90PWM2B
- pwm3 = AT90PWM3
- pwm2 = AT90PWM2
- t2313 = ATtiny2313
- m328p = ATMEGA328P
- t88 = attiny88
- m168 = ATMEGA168
- m88 = ATMEGA88
- m48 = ATMEGA48
- t861 = ATTINY861
- t461 = ATTINY461
- t261 = ATTINY261
- t26 = ATTINY26
- m8535 = ATMEGA8535
- m8515 = ATMEGA8515
- m8 = ATMEGA8
- m161 = ATMEGA161
- m32 = ATMEGA32
- m6490 = ATMEGA6490
- m649 = ATMEGA649
- m3290p = ATMEGA3290P
- m3290 = ATMEGA3290
- m329p = ATMEGA329P
- m329 = ATMEGA329
- m169 = ATMEGA169
- m163 = ATMEGA163
- m162 = ATMEGA162
- m1284p = ATMEGA1284P
- m644p = ATMEGA644P
- m644 = ATMEGA644
- m324p = ATMEGA324P
- m164p = ATMEGA164P
- m16 = ATMEGA16
- c32 = AT90CAN32
- c64 = AT90CAN64
- c128 = AT90CAN128
- m128 = ATMEGA128
- m64 = ATMEGA64
- m103 = ATMEGA103
- 8535 = AT90S8535
- 8515 = AT90S8515
- 4434 = AT90S4434
- 4433 = AT90S4433
- 2343 = AT90S2343
- 2333 = AT90S2333
- 2313 = AT90S2313
- 4414 = AT90S4414
- 1200 = AT90S1200
- t15 = ATtiny15
- t13 = ATtiny13
- t12 = ATtiny12
- t11 = ATtiny11
C:\>avrdude -c avrisp ...
Скрипт для автоматической прошивки микроконтроллера
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.hex":i -U hfuse:w:^<0x91^>:m -U lfuse:w:^<0xFF^>:m @echo off pause
Как работает скрипт?
- AVRDUDECMD — полный путь к программе avrdude.exe
- FIRMWARESOURCEDIR — Полный путь к папке с прошивкой
- FIRMWAREDIR — путь к временной папке, в которую будут скопированы файлы прошивки. Данная папка необходима для успешного выполнения программы avrdude на случай, если FIRMWARESOURCEDIR окажется сетевой папкой. В случае, если папка с прошивкой окажется сетевой, то программа avrdude выдаст ошибку.
Имя файла с прошивкой должно быть firmware.hex
и располагаться в папке FIRMWARESOURCEDIR
.
Выберите номер порта COM2 "\\center\Прошивки для плат\avrdude\avrdude.exe" Проверка подключения... avrdude.exe: jtagmkI_open(): failed to synchronize to ICE avrdude.exe: jtagmkI_close(): unsupported baudrate -1 avrdude.exe done. Thank you. Удаляем временные файлы Копируем прошивку во временную папку \\center\Прошивки для плат\МОС-Универсальный\revision01.00\version01.00\MOS.hex Скопировано файлов: 1. Прошиваем микроконтроллер C:\WINDOWS>"\\center\Прошивки для плат\avrdude\avrdude.exe" -c jtagmkI -p m32 -P COM2 -U flash:w:"C:\DOCUME~1\valeyev\LOCALS~ 1\Temp\firmware\MOS.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~1\valeyev\LOCALS~1\Temp\firmware\MOS.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~1\valeyev\LOCALS~1\Temp\firmware\MOS.hex: avrdude.exe: load data flash data from input file C:\DOCUME~1\valeyev\LOCALS~1\Temp\firmware\MOS.hex: avrdude.exe: input file C:\DOCUME~1\valeyev\LOCALS~1\Temp\firmware\MOS.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. Для продолжения нажмите любую клавишу . . .
Добавить комментарий