Кремень FMZ Реклама
Kremen FMHM Реклама

Backup прошивки платы Melzi V2.05

chernykh986
Идет загрузка
Загрузка
06.06.2019
5882
3
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Я давно планировал научиться самостоятельно конфигурировать прошивку и загружать ее. Останавливало только одно – невозможность отката к исходной прошивке, если «что-то пойдет не так». Но подготовив все для автоуровня эта задача встала во весь рост.

Поискав в Internet, я нашел две статьи, касающиеся этого вопроса:

https://3dtoday.ru/blogs/craveg/avrdude-how-to-download-zabekapit-and-pour-again-the-firmware/,

https://3dtoday.ru/blogs/craveg/eeprom-avrdude-again-about-working-with-controllers/.

Автор отмечает, что с обычным китайским программатором у него не получилось, но я решил все-таки попробовать именно с ним, ибо цена устройства менее 1.5 USD. Был закуплен программатор USBasp:

https://ru.aliexpress.com/item/1pcs-New-USBASP-USBISP-AVR-Programmer-USB-ISP-USB-ASP-ATMEGA8-ATMEGA128-Support-Win7-64K/32582933115.html и переходник к нему, поскольку на Melzi разъем ISCP 6pin, а у программатора 10pin: https://www.chipdip.ru/product/avr-icsp
Backup прошивки платы Melzi V2.05
Для программатора напечатал корпус: https://www.thingiverse.com/thing:3096085
Backup прошивки платы Melzi V2.05
Пришлось еще дырку в корпусе просверлить, чтобы светодиоды было видно.Драйвер скачал отсюда:https://www.myrobot.ru/downloads/driver-usbasp-v-2.0-usb-isp-windows-7-8-10-xp.php.

С установкой проблем нет, поскольку драйвер подписан. Просто запустил InstallDriver.exe и готово.Подключил программатор к компьютеру и тут меня поджидала «засада»… При попытках работать с программатором через программу avrdude . exe получил вот такое сообщение:

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.

Нужно обновлять прошивку. Но для обновления прошивки нужен другой программатор! Ёпрст…!

Поиск в Internet показал, что для программирования можно использовать платы Arduino. Посему у сына на время был реквизирован набор Arduino UNO.

Обновление прошивки я делал по этой методике: https://xdomus.ru/diy/usbasp-upgrade/ .

Прошивку (файл usbasp.2011-05-28.tar.gz ) скачал с сайта разработчика:https://fischl.de/usbasp/ . Испытал «легкое» удивление, что в 2019 г. продается программатор с прошивкой ранее 2011г.

Для загрузки прошивки требуется соединить плату Arduino с программатором:

Backup прошивки платы Melzi V2.05
Поначалу я сделал это проводками из набора, но перфекционизм, привитый руководителем радиокружка в далеком 6 классе средней школы («Сделаешь красиво – будет работать!») победил, и я из подручных средств смастерил кабель. Специально сделал его для подключения именно к переходнику программатора USBasp, поскольку плата Melzi имеет разъем ISCP для подключения программатора тоже на 6 pin. Это позволило в дальнейшем считать прошивку обеими программаторами и сравнить результаты. Получилось вот так:
Backup прошивки платы Melzi V2.05
Подготовил программатор на Arduino UNO как описано по ссылке выше, файл прошивки скопировал в папку с программой avrdude . exe (она входит в состав Arduino IDE). У меня в Windows 10 это папка c:Program Files (x86)Arduinohardware oolsavrin . Запустил командную строку и выполнил:

avrdude -C ../etc/avrdude.conf -c avrisp -P COM 4 -b 19200 -p m8 –v COM 4 – это порт к которому подключена плата Arduino UNO (смотреть в диспетчере устройств Windows ).

Далее, собственно прошивка:

avrdude –C ../etc/avrdude.conf –c avrisp –P COM4 –b 19200 –p m8 –U flash:w:usbasp.atmega8.2011-05-28.hex:i

После выполнения этой команды сообщений об ошибках не получил.

Ну, а затем… считал записанную прошивку:

avrdude – C ../ etc / avrdude . conf – c avrisp – P COM 4 – b 19200 – p m 8 – U flash : r : usbasp _ reading . hex : i

Прошивка записалась в файл usbasp _ reading . hex в папку:

c:Users...AppDataLocalVirtualStoreProgram Files (x86)Arduinohardware oolsavrin

И тут я слегка призадумался, поскольку исходный файл usbasp . atmega 8.2011-05-28. hex и файл, считанный - usbasp _ reading . hex весьма отличались по размеру. Поразмыслив, я скачал конвертер hex-файлов: http://advantex.ru/joom/content/view/78/69. и конвертировал оба hex-файла в bin-формат. Bin-файлы оказались одинаковыми не только по размеру, но и по содержимому (сравнивал с помощью T otal Commander). Это вселило некоторую уверенность в правильности выбранного пути.

Дальше - уже легче. На плате Melzi переставил перемычку в режим питания от USB (нижнее на рисунке положение):
Backup прошивки платы Melzi V2.05
Подключил программатор USBasp к плате Melzi через переходник и стандартный кабель на 6 pin. При подключении ориентировался на рисунок:
Backup прошивки платы Melzi V2.05
Схему подключения не привожу. Там все просто одноименные контакты переходника USBasp и Melzi соединяются между собой.

Дисплей на всякий случай отключил.

Далее (аналогично прошивке программатора) запустил командную строку и выполнил команды:

Проверка :avrdude -C ../etc/avrdude.conf -c usbasp -P usb -b 19200 -p m1284p –v

Считывание прошивки :

avrdude -C ../etc/avrdude.conf -c usbasp -P usb -b 19200 -p m1284p -U flash:r:printer_firmware.hex:i

Считывание EEPROM

avrdude - C ../ etc / avrdude . conf - c usbasp - P usb - b 19200 - p m 1284 p -Ueeprom : r : printer _ eeprom . eep : i

Никаких сообщений об ошибках не получил.То же самое для программатора на основе Arduino UNO:

Проверка: avrdude - C ../ etc / avrdude . conf - c avrisp - P COM 4 - b 19200 - p m 1284 p – v

Считывание прошивки:

avrdude - C ../ etc / avrdude . conf - c avrisp - P COM 4 - b 19200 - p m 1284 p - U flash : r : printer _ firmware _2. hex : i

Считывание EEPROM

avrdude - C ../ etc / avrdude . conf - c avrisp - P COM 4 - b 19200 - p m 1284 p -Ueeprom : r : printer _ eeprom _2 . eep : i

Полученные обеими программаторами соответствующие файлы сравнил – они оказались идентичными. Ну, и наконец, через Arduino IDE залил прошивку Marlin (ee в свое время прислал продавец). Родная прошивка - Repetier. Должен заметить, что подключить Melzi к компьютеру и соединиться с Arduino IDE еще та «песня»…

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

avrdude -C ../etc/avrdude.conf -c usbasp -P usb -b 19200 -p m1284p -U flash:w:printer_firmware_2.hex:i

avrdude -C ../etc/avrdude.conf -c usbasp -P usb -b 19200 -p m1284p -Ueeprom:w:printer_eeprom_2.eep:i

На всякий случай привожу аналогичные команды для программатора на базе Arduino UNO:



avrdude - C ../ etc / avrdude . conf - c avrisp - P COM 4 - b 19200 - p m 1284 p - U flash : w : printer _ firmware . hex : i

avrdude - C ../ etc / avrdude . conf - c avrisp - P COM 4 - b 19200 - p m 1284 p -Ueeprom : w : printer _ eeprom . eep : i

Снова вернул перемычку на плате в исходное положение, включил принтер и напечатал тестовый кубик. Все получилось!

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Комментарии к статье