18+
  Войти, или Зарегистрироваться (Что мне это даст?)

Загрузка бутлоадера в Arduino

16 Января 2012, 01:45.
Опубликовал admin

В Arduino есть отличная функция — сторожевой таймер. Это такая штуковина, которая автоматически перезагружает микроконтроллер, если он зависнет. Использование этой функции очень полезно для повышения автоматизации системы. А зависнуть контроллер может по разным причинам — от ошибок в прошивке, до электрических помех, поступающих извне. Таким образом, в случае зависания, через несколько секунд последует автоматическая перезагрузка и все начнет работать. Иначе пришлось бы ручками нажимать кнопку перезагрузки.

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

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

Итак, для загрузки бутлоадера понадобилось:

1. Прошивка бутлоадера.
2. Прошивальщик.
3. Специальный прошивочный кабель.

Единственной прошивкой, которая подошла, оказалась ADABootLoader. В моем случае мне подошел файл ADABoot_328.hex, так как Arduino у меня собрана на микросхеме ATMega328p.

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

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



Разъемы соединили. Запускаем программу avrdude-GUI, вводим настройки. В моем случае получилось вот так:



Особое внимание надо обратить на правильную установку Fuse и Lock битов, иначе последствия могут быть непредсказуемыми. Например, может получиться так, что в микроконтроллер не будет загружаться сектч — выполняемая программа. Подробнее про Fuse биты написано тут.

Следует так же отметить, что бутлоадер нормально прошился только с помощью кнопки «Erase — Write — Verify».

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

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

http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
http://www.compcar.ru/forum/showthread.php?t=4675&highlight=bit-bang
http://robocraft.ru/blog/arduino/51.html
http://www.geocities.jp/arduino_diecimila/bootloader/bitbang_w_ide_en.html
http://www.milesburton.com/Dallas_Temperature_Control_Library#Download

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