Перепрошивка бутлоадера в Arduino на optiboot
В это статье расскажу как перепрошить родной ардуиновский bootloader (загрузчик) на альтернативный — Optiboot. Мне это понадобилось для организации, в своих проектах на микроконтроллерах, сторожевого таймера (watchdog), так как в стандартном bootloader ватчдог не реализован и при попытке активировать в коде ватчдог наша ардуина уйдет в бесконечный ребут.
И так, для перепрошивки бутлоадера нам потребуется программа Arduino IDE, плата Arduino в которой будем перешивать бутлоадер и программатор, например USBasp.
Запускаем Arduino IDE и идем в меню Файл — Настройки
и вставляем строку https://github.com/Optiboot/optiboot/releases/download/v6.2/package_optiboot_optiboot-additional_index.json
в поле — Дополнительные ссылки для менеджера плат. Ссылку на свежую версию optiboot берем на этой странице.
Сохраняем настройки и идем в меню Инструменты — Плата — Менеджер плат:
находим в списке Optiboot и жмем кнопку установить.
После чего в списке доступных плат появляется список плат поддерживаемый Optiboot.
Для загрузки загручика выбираем необходимую плату/ микроконтроллер, частоту кварца и порт к которому подключена наша плата Arduino.
Выбираем из списка наш программатор, в данному случае USBasp и жмем кнопку Записать загрузчик.
Все, можно смело использовать watchdog в своих проектах.
Правильно ли я понял, что для загрузки optiboot в Arduino UNO программаторы не нужны? Имеет ли при этом значение, какой программатор выбран в меню? У Вас на скриншоте там выбран JTAGICE3 (ISP mode). Это правильно? Что-то у меня при таких установках ничего не получается, пишет
Ошибка при записи загрузчика.
avrdude: jtag3_open_common(): Did not find any device matching VID 0x03eb and PID list: 0x2110, 0x2140
avrdude done. Thank you.
Подскажите пожалуйста, что я делаю не так?
Спасибо!
Программатор не нужен, просто жми записать загрузчик.
Ничего не получается.
Какой программатор при этом должен быть выбран в меню?
Я перепробовал все — безрезультатно.
Но используя вторую плату Ардуино Уно, прошитую как Arduino ISP и выбирая программатор Arduino as ISP, все получается и Optiboot нормально прошивается.
Так что я не понимаю или делаю не так?
Все правильно понимаешь, написал не подумав) Естественно загрузчик шьется через программатор, привык уже прошивать все программатором.
А как «пометить» что ардуина 8мгц и питание 3в?
«так как в стандартном bootloader ватчдог не реализован» — можете пояснить, что значит не реализован? Какое отношение к WDT имеет загрузчик?
Стандартный бутлоадер ардуины не отключает и не сбрасывает таймер ВД и Ардуина начинает бесконечно перезагружаться.
Не написано в статье самое главное — как подключать Usbasp к дуньке.
Спасибо большое,два дня не мог вогнать загрузчик,все перепробовал твоя статья помогла ,еще раз большое спасибо!!!
Почему у Вас на предпоследнем рисунке программатор Atmel JTAGICE3 а вот на последнем USBasp?
Между ними написано :
«Выбираем из списка наш программатор, в данному случае USBasp…»
спасибо. все сдела по статье- все прошилось и заработало.