Avrdude linux: опции запуска и примеры использования, графическая оболочка для linux

Работаем с AT89S52 под Linux — Документация Creative Club 1

Один из рекомендованных спобосов для работы с микроконтролерами семейства С51 — это написание прошивки в среде Keil C51 и прошивка с помощью нормальных програматоров.

В статье Прошивка AT89S52 с помощью AVRDUDE мы уже сделали небольшое отступление в сторону и начали прошивать микроконтролер AT89S52 с помощью avrdude и Arduino.

К сожалению, Keil C51 доступна только под Windows. Поэтому мы сделаем еще один шаг и начнем писать прошивки под Linux, с использованием только открытого ПО.

1. Подготовка оборудования

В рамках этой инструкции подразумевается, что для прошивки используется способ, описанный в Прошивка AT89S52 с помощью AVRDUDE. Ниже описывается процесс установки утилиты avrdudess и IDE «MCU 8051 IDE» под Ubuntu, Elementary OS и подобные системы.

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

Первый пункт — установка утилит для прошивки МК. Точно так же, как и на Windows, для прошивки МК нам поможет avrdude и графический интерфейс avrdudess.

  1. Установите avrdude и другие завивимости вручную.

    Полный список зависимостей указан на странице загрузки avrdudess. Коротко это: avrdude, утилита для прошивки, и mono, реализация .NET Framework под Linux.

    Чтобы не тратить время, этот список приведен ниже:

    sudo apt install libmono-system-windows-forms4.0-cil avrdude gcc-avr
    
  2. Загрузите свежую версию avrdudess

    Свежую версию утилиты можно найти по ссылке https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/.

    Для Linux загрузите ZIP-архив с программой. Распакуйте архив в любую папку, которая вам нравится.

Примечание

В этой инструкции подразумевается, что avrdudess будет находится в папке /home/srgk/.local_apps/avrdudess. Замените этот путь на тот, который используется в вашей системе.

  1. Запустите avrdudess

    Для запуска avrdudess используется mono:

    mono /home/srgk/.local_apps/avrdudess/avrdudess.exe
    

    Для простоты использования эту консольную команду можно заменить на desktop файл.

    Но это уже тема для другого разговора.

    В любом случае, перед вами должен появиться интерфейс avrdudess.

  2. Изменение конфигурации avrdude

    В директории /home/srgk/.local_apps/avrdudess измените файл avrdude.conf.

    В этот файл нужно добавить секции, которые отвечают за поддержку микрокнтроллеров AT89S52 и AT89S51. Тут все аналогично с версией для Windows: просто откройте список изменений по адресу https://git.io/fA15B и сделайте аналогичные изменения для вашего файла конфигурации.

  3. Изменение настроек avrdudess

    Нажмите кнопку «Options» и перейдите в настройки avrdudess.

    В поле «File locations» -> «avrdude.conf» укажите путь к папке с новым файлом avrdude.conf:

    /home/srgk/.local_apps/avrdudess
    

    На этом базовая настройка avrdudess закончена. Дальше следуйте по инструкции Прошивка AT89S52 с помощью AVRDUDE, секция «Настройки AVRDUDESS».

3. Установка IDE

Теперь перейдем к установке IDE для разработки под AT89S52.

Выбор у нас не большой. Один из основных вариантов — это довольно старая открытая среда «MCU 8051 IDE» в паре с компилятором «ssdc». Именно эти компоненты мы и установим:

sudo apt install ssdc mcu8051ide

На этом установка заканчивается. Можно создавать собственные проекты или открыть готовый. Например этот: https://git.io/Jesku.

Pinboard II, Linux, avrdude — Блог айтишника

Хочу рассказать вам, как использовать программаторы, основанные на микросхемах FTDI в avrdude под Linux.

Много лет назад я купил отладочный комплект Pinboard II. И ни разу за все это время не пожалел. Спроектирована с умом, содержит программатор на чипе FTDI 2232 (разработчик следит, чтобы не было подделок чипа FTDI, так что проблем не возникает). Есть GUI для avrdude с надстройкой под данное железо. Правда под Windows. Только вот я программирую в Linux. Да и GUI мне не нужен. По началу было тяжко, но когда осознал, насколько же удобна консоль… Но речь не об этом.

FTDI микросхема популярная. И её можно много где встретить. Программаторы Olimex, в Dev Kit Pinboard II, в ранних версиях Arduino… У меня, например, есть Freeduino разводки 2009 года. И на ней выведены ножки для программирования чипа без загрузчика. Правда есть небольшая проблемка, связанная с популярностью микросхемы. Её долгое время копировали, FTDI боролась с пиратами, блокировала работу, ломала микросхемы через драйвер… Однако Linux это не коснулось, так что продолжаем.

Итак. У нас есть задача: прошить микроконтроллер AVR. Для этого нужно подключить 4 сигнала: MOSI, MISO, SCK, RESET. Главное знать распиновку (какие именно ноги FTDI на какие сигналы настроены). Пока пропустим этот шаг, но запомним, что к нему, возможно, придется вернуться.

Однако, этого мало. При попытке вызвать avrdude с программатором, основанном на FTDI вываливается следующая ошибка:

avrdude: ft245r_open(): invalid device identifier '        '

Те, кто пользовался GUI в Windows, наверное, помнят, что там ещё указывался порт. Можно попробовать.

[walhi@b590] ~ $ avrdude -c ft232r -p m16 -P ft0
avrdude: ft245r_open(): invalid device identifier '        '

Увы, не сработало. Слишком много устройств может быть подключено одновременно и нужно выбрать правильное, чтобы не испортить работу остальных. Например, печатающего уже 10 часов 3D принтера. Так что требуется указать серийный номер микросхемы. Именно по нему современные версии avrdude различают устройства.

Этот серийный номер ещё нужно узнать. Для начала покажу на простом примере. Для чипа FT232, установленного на Freeduino. Он имеет всего один порт.

Смотрим список USB устройств командой lsusb.

...
Bus 003 Device 009: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
...

Ищем в списке интересующий чип FTDI. Далее запрашивае подробную информацию по нему. Для этого нужно добавить пару аргументов: -s <bus>:<dev> и -v. Весь вывод не нужен, так что grep-аем строку с серийным номером.

[walhi@b590] ~ $ lsusb -s 003:009 -v |& grep iSerial
  iSerial                 3 A9YL3IBQ

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

[walhi@b590] ~ $ avrdude -c ft232r -p m16 -P usb:A9YL3IBQ
avrdude: Device is not responding to program enable. Check connection.
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.
avrdude done.  Thank you.

Сработало. Теперь можно работать с программатором, основанным на FT232. Для старых плат Arduino в файле конфигурации avrdude имеется настроенный программатор с правильной распиновкой. Его имя diecimila.

Теперь вернемся к Pinboard. В нем установлен FT2232, который имеет два порта. Так что с его серийным номером не все так просто.

[walhi@b590] ~ $ lsusb
...
Bus 003 Device 011: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
. ..
[walhi@b590] ~ $ lsusb -s 003:011 -v |& grep iSerial
  iSerial                 0 

Интересно… Серийный номер отсуствует. Но так ведь быть не должно… Посмотрим dmesg

[walhi@b590] ~ $ sudo dmesg | tail -20
...
[31533.766892] usb 3-2: new full-speed USB device number 11 using xhci_hcd
[31533.916484] usb 3-2: New USB device found, idVendor=0403, idProduct=6010, bcdDevice= 5.00
[31533.916488] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[31533.916490] usb 3-2: Product: Dual RS232
[31533.916492] usb 3-2: Manufacturer: FTDI
[31533.917689] ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected
[31533.917718] usb 3-2: Detected FT2232C
[31533.917859] usb 3-2: FTDI USB Serial Device converter now attached to ttyUSB0
[31533.918142] ftdi_sio 3-2:1.1: FTDI USB Serial Device converter detected
[31533.918168] usb 3-2: Detected FT2232C
[31533.918308] usb 3-2: FTDI USB Serial Device converter now attached to ttyUSB1

И тут тишина… Я не нашел ничего лучше, как использовать python под эту задачу. Для него есть модуль pylibftdi, которым можно воспользоваться для вывода списка устройств с их серийными номерами.

[walhi@b590] ~ $ pip3 install pylibftdi
Collecting pylibftdi
  Downloading https://files.pythonhosted.org/packages/b0/b5/6413399489ebc7147079b0d6ebbd15cf5fe3b5ae06707cf3606977fa575b/pylibftdi-0.19.0-py2.py3-none-any.whl
Installing collected packages: pylibftdi
Successfully installed pylibftdi-0.19.0
[walhi@b590] ~ $ python3 -m pylibftdi.examples.info
pylibftdi version     : 0.18.0
libftdi version       : libftdi_version(major=1, minor=4, micro=0, version_str=b'1.4', snapshot_str=b'unknown')
libftdi library name  : libftdi1.so.2
libusb version        : libusb_version(major=1, minor=0, micro=22, nano=11312, rc=b'', describe=b'http://libusb.info')
libusb library name   : libusb-1.0.so.0
Python version        : 3.7.3
OS platform           : Linux-4.19.0-12-amd64-x86_64-with-debian-10.6
[walhi@b590] ~ $ python3 -m pylibftdi.examples.list_devices
FTDI:FT232R USB UART:A9YL3IBQ
[walhi@b590] ~ $ python3 -m pylibftdi.
examples.list_devices FTDI:Dual RS232:

Опять мимо… Модуль выводит серийник у FT232, а вот FT2232 уже нет.

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

[walhi@b590] ~ $ avrdude -c 1 |& grep 2232
  2232HIO          = FT2232H based generic programmer
  avrftdi          = FT2232D based generic programmer

Всегда в интернетиках читал, что FT2232 по сути два FT232 в одном корпусе. Но это не совсем верное утверждение. Попробовал указать avrftdi… И… Он заработал, но не нашел микроконтроллер.

[walhi@b590] ~ $ avrdude -c avrftdi -p m16
E avrftdi_program_enable(880): Device is not responding to program enable. Check connection.
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.
avrdude done.  Thank you.

Отлично… Несколько часов были потрачены впустую. Ладно, идем дальше. Если чип не найден, то, скорее всего, он подключен не туда. Можно подключить в соответствии с конфигурацией avrdude, но лучше все же подправить конфигурацию, чтобы она соответствовала нашему железу.

На плате Pinboard использована следующая конфигурация:

miso = 5;
sck = 6;
mosi = 4;
reset = 7;

Как оформить в avrdude свой программатор или поправить существующий, думаю, разберетесь сами. Исходный файл конфигурации: /etc/avrdude.conf.

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

[walhi@b590] ~ $ avrdude -c avrftdi -p m16 -C ~/avrdude.conf
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9403 (probably m16)
avrdude: safemode: Fuses OK (E:FF, H:D1, L:FF)
avrdude done.  Thank you.

Надеюсь, статья кому-нибудь помогла.

Программирование загрузчика Arduino с использованием Avrdude с AVRISP mkII в Manjaro (Arch Linux)

18 июля 2020 г., 12:50 TZ +05:30

linux, манджаро, аппаратное обеспечение, Ардуино, AVR

Embedded

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

Я хотел иметь постоянный и повторяемый способ исправления загрузчика на платах Arduino.

Давайте посмотрим, как я сделал это в моем любимом Manjaro (Arch Linux)

На самом деле мой более ранняя статья об установке AVRISP mkII в Windows 10 является одним из самых просмотренные статьи на этом сайте.

1. Программист #

У меня есть АВРИСП MKII как мой программатор AVR по умолчанию.

Источник изображения: Microchip.com

Есть много других экономичных вариантов:

  1. Arduino в качестве интернет-провайдера: https://www.arduino.cc/en/Tutorial/ArduinoISP
  2. USBasp: https://www. fischl.de/usbasp/
  3. Pololu USB AVR программатор: https://www.pololu.com/product/3172

Мы подробно рассмотрим рекомендуемый официальный вариант AVRISP mkII .

2. Разрешение #

Большая часть проблем с доступом к программатору связана с разрешениями.

Прежде чем мы начнем, просто убедитесь, что вы состоите в нужных группах.

На
Manjaro (Arch Linux) #
 sudo usermod -aG uucp ${USER}
sudo usermod -aG блокировка ${USER}
 
В Ubuntu #
 sudo usermod -aG dialout ${USER}
 

Далее Хитрости для облегчения доступа.

2.1 Прямой метод #

Ну так сделайте, нам бы сначала узнать куда подключается наш AVRISP mkII .

 лсуб | grep Атмель
 

Вы должны увидеть следующий вывод:

 Шина 002 Устройство 013: ID 03eb:2104 Atmel Corp. AVR ISP mkII
 

В этом случае комбинация VID:PID представлена ​​как 03eb:2104 . Расположение устройства: Автобус 002 и Устройство 013 .

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

 ls -al /dev/bus/usb/002/013
...
crw-rw---- 1 root uucp 189, 140 15 июля 07:32 /dev/bus/usb/002/013
...
 

Расшифровка вышеуказанного пути /dev/bus/usb/<Номер шины>/<Номер устройства> указывает местоположение фактической конечной точки.

Теперь, чтобы принудительно получить полный доступ к устройству:

 sudo chmod 666 /dev/bus/usb/002/013
 

Этим мы удостоверяемся, что у всех есть доступ на чтение/запись к этому устройству.

Это очень небезопасный метод . Не используйте это, кроме как во время тестирования.

Есть гораздо лучший способ сделать это.

2.2 Правила UDEV #

Можно установить правила для конкретного USB-устройства. Это делается путем размещения файл правил в папке /etc/udev/rules.d/ .

Мы уже видели пример этого при установке инструментов Zephyr .

Давайте посмотрим на файлы, которые нам нужны на этот раз:

Файл для

Manjaro (Arch Linux) # 50-avrisp.rules

Файлы для Ubuntu/Debian #

50-avrisp-deb.rules

2.3 Установка файлов #

Скопируйте эти файлы в /etc/udev/rules.d/ каталог. Используйте sudo для префикса наших переводов.

2.4 Перезапуск службы USB #

 sudo udevadm control --reload
 

Это обновит текущую конфигурацию USB и загрузит вновь назначенный хранилище памяти.

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

Вот и все, теперь вы сможете Записать загрузчик avrdude от Arduino IDE .

3. Установка

avrdude #

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

Вот как вы можете установить:

3.1 Установите

avrdude в Manjaro (Arch Linux) #
 sudo pacman -S avrdude avr-binutils avr-gcc
 

3.2 Установите

avrdude в Ubuntu / Debian #
 sudo apt установить avrdude gcc-avr
 

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

ПРИМЕЧАНИЕ , что Установка Место для AVRDUDE IS /USR/BIN/AVRDUDE

, а конфигурация /ATCRDUDE.COLDE.COLDE.

4. Графический интерфейс пользователя

avrdude в Linux #

Хотя многие поддерживают avrdude через GUI ,

, я нашел наиболее полезным AVR8-жечь-о-мат .

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

Это также пакет AUR для этого в Manjaro (Arch Linux) :

https://aur.archlinux.org/packages/avr8-burn-o-mat

Они предоставляют двоичный файл пакета Debian / Ubuntu .

Желаю вам всего наилучшего #

Надеюсь, теперь у вас есть верный способ починить сломанные клоны Arduino.

Как всегда, жду ваших предложений и комментариев. DM мне на мастодонт .

Артикул #

  • https://aur.archlinux.org/packages/avr8-burn-o-mat
  • http://burn-o-mat.net/avr8_burn_o_mat_avrdude_gui_en.php
  • https://andreasrohner.at/ сообщения/Электроника/Как исправить-разрешения-устройства-для-программатора-USBasp/

AVRDUDE | USBtinyISP | Система обучения Adafruit

Сохранить Подписаться

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

После входа в систему вы будете перенаправлены обратно к этому руководству и сможете подписаться на него.

AVRDUDE — очень популярная программа командной строки для программирования микросхем AVR. Avrdude версии 5.5 и выше имеет встроенную поддержку USBtinyISP! Ниже приведены инструкции для Windows и Mac о том, как установить правильную версию avrdude

. Чтобы проверить, правильно ли работает avrdude , откройте командную строку и выполните команду avrdude -c usbtiny -p m8 , когда устройство подключен (горит зеленый светодиод).

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

Если программатор не найден, вы получите ответ:

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

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

Вы можете использовать параметр -B , чтобы указать скорость интернет-провайдера. По умолчанию значение равно 10, что означает тактовую частоту 100 кГц, это хорошо для целевых тактовых частот> 500 кГц. Если вам нужна высокая тактовая частота (400 кГц) для целевых частот > 4 МГц, вы можете использовать " -B 1 " для ускорения программирования. Чтобы вычислить частоту SPI по значению задержки, используйте следующую формулу:

Тактовая частота SPI в кГц = 1000/(1,5+ B ), где B — значение задержки.

Как правило, тактовая частота должна быть как минимум в 4 раза выше целевой тактовой частоты. Попробуйте "-B 32", если у вас проблемы с тактовой частотой, это должно работать даже с тактовой частотой 128 кГц.

Не получается? Не волнуйтесь, помощь доступна на форумах!

Чтобы узнать, как установить WinAVR, посетите эту страницу с пошаговыми инструкциями. Убедитесь, что у вас установлена ​​версия от 20 декабря 2007 г. или новее. У этого есть avrdude 5.5 с поддержкой usbtiny!

Не забудьте также установить драйвер (дополнительную информацию см. на странице драйвера).

Чтобы узнать, как настроить Mac для программирования и разработки AVR, посетите эту страницу с пошаговыми инструкциями.

Если вы устанавливаете AvrMacPack, он поставляется с Avrdude 5.5 и usbtiny поддерживается из коробки!

В противном случае, если вы установили OSX-AVR, завершите выполнение этих шагов.

Загрузите zip-файл avrdude со страницы загрузки.

Замените avrdude и avrdude.conf везде, где они установлены, возможно /usr/local/bin и /usr/local/etc , но не обязательно в зависимости от вашей системы разработки!

Чтобы узнать, где был установлен avrdude, введите which avrdude в окно терминала , и откроется каталог. Чтобы переместить файлы, введите mv ~/usbtiny-avrdude/avrdude , предполагая, что новый двоичный файл avrdude находится в папке с именем usbtiny-avrdude в вашем домашнем каталоге. Чтобы узнать, где находится файл conf, введите avrdude -v 9.0026 в окно терминала . Сделайте то же самое для avrdude.conf .

(Разумеется, сделать резервную копию старой версии.)

Закрыть терминал и открыть новый. Если вы введете avrdude -c usbtiny -p t2313 (без подключенного usbtinyisp), должно появиться сообщение Не удалось найти USB-устройство 0x1781/0xc9f Если нет, проверьте правильность замены avrdude и avrdude.conf.

Теперь читайте о том, как использовать avrdude здесь!

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

Чтобы узнать, как настроить Linux-машину для программирования и разработки AVR, посетите эту страницу с пошаговыми инструкциями. Убедитесь, что у вас установлена ​​версия avrdude 5.5 или выше!

Если вы получили этот ответ, это проблема с правами доступа к USB. Вы можете запустить как root или. ...

Спасибо дружелюбному пользователю, есть быстрое исправление, поэтому вам не нужно запускать его как root:

Правило udev, помещенное в новый файл правил (с любым именем) в /etc/udev/rules.d/ (или там, где вы этого ожидаете) правильно установит разрешения для USBtinyISP.

SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
или, возможно,
SUBSYSTEM== "usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="adm", MODE="0666"
в зависимости от вашего дистрибутива

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

Другой пользователь предлагает:

Приведенные примеры udev не работают на некоторых системах, так как параметр SYSFS устарел. Следующее правило работает в последних системах Ubuntu и, вероятно, должно работать в других более новых системах Linux:

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *