Если вы используете плату MinimOSD под управлением микроконтроллера ATMega328p, и при настройке случайно стерли bootloader, при попытке конфигурации в программе ArduCam OSD Config вы вероятнее всего увидите следующее сообщение:
Давайте разберемся, как оперативно и с минимальными затратами решить эту проблему (2 способа)
Внимание! Вы делаете все операции на ваш страх и риск! Автор не несет ответственности за неисправности, финансовые затраты или потерю гарантии в результате выполнения Вами действий, описанных в этой статье.
Давайте разберемся, как оперативно и с минимальными затратами решить эту проблему (2 способа)
Внимание! Вы делаете все операции на ваш страх и риск! Автор не несет ответственности за неисправности, финансовые затраты или потерю гарантии в результате выполнения Вами действий, описанных в этой статье.
1 способ (дорогой и непроверенный мной, но простой)
Так как по своей сути этот проект является Arduino-совместимым, то нет ничего проще, чем вернуть плату к жизни, так сказать, штатными средствами. Если у вас есть программатор от Arduino, достаточно лишь открыть Arduino, и проделать следующие действия:
Далее, как пишут на форуме RC Groups необходимо подождеть 2-3 минуты, и увидеть предупреждение в стиле “warning: cannot set sck period. Please check for usbasp firmware update”. Рекомендуется его игнорировать.
Затем необходимо отключить программатор, и подключиться к плате MinimOSD для её конфигурации по схеме, указанной в статье "minimOSD для NAZA, Прошивка"
По идее, должно заработать.
Но, как известно, не у всех под рукой программатор, поэтому предлагаю
2 способ (сложнее, но проверенный)
Как известно, Arduino базируются на процессорах Atmel. А для программирования Atmel существует такая веселая приблуда, как avrdude. И она умеет прошивать наш контроллер через интерфейс ISP, он же SPI. А этот интерфейс поддерживается всем известной микросхемой FT232RL.
Я использовал такой переходник, купленный в подвальчике дядюшки Ляо на Aliexpress как для конфигурации платы, так и для восстановления бутлоадера:
Черная 6-пиновая гребенка используется для общения с другими платами через протокол rs232/USART, через него происходит общение ArduCam OSD Config с платой MinimOSD.
Желтая гребенка отвечает за интерфейс ISP/SPI, через него можно скормить микроконтроллеру практически все что угодно. Я ради эксперимента заливал через него прошивку minNAZAOSD_upload_MCM.hex из этого проекта. Правда отображалась только верхняя левая часть информационного поля, что меня не обрадовало.
Так вот. Чтобы BOOTLOADER снова закорешился с нашим камнем и начал отзываться на запросы ArduCam OSD Config, необходимо запаять в плату minimOSD двухрядную 6-пиновую гребенку в отверстия возле контроллера. Ну или проводки припаять - кому как душа лежит. Должно получиться как-то так:
Распиновка разъема на плате minimOSD и переходнике одинаковая, и выглядит следующим образом:
Первый пад имеет квадратную форму.
Соединять необходимо соответственно 1→1, 2→2 и т.д.
Есди на переходнике есть переключатель напряжений - установите напряжение 5В.
Затем нужно прошить прошивку с бутлоадером. Её можно взять в установочной папке Arduino под именем ATmegaBOOT_168_atmega328.hex
Чем будем жечь?
А жечь будем консольной программкой avrdude (скачать)
В этом же архиве можно взять ATmegaBOOT_168_atmega328.hex
Для удобства в архиве находится файл loader.cmd, который вызывает avrdude с необходимыми параметрами.
Его содержание следующее:
ВНИМАНИЕ! ПРИ ИСПОЛЬЗОВАНИИ ДРУГОГО МИКРОКОНТРОЛЛЕРА ДАННЫЕ КОМАНДЫ, ВЫПОЛНЕННЫЕ ПРОГРАММОЙ, МОГУТ ПРЕВРАТИТЬ ВАШ КРИСТАЛЛ В НЕВОССТАНОВИМЫЙ БЕЗ ПАРАЛЛЕЛЬНОГО ПРОГРАММАТОРА КУСОК КРЕМНИЯ!
Первые 3 строки - это так называемые fuse-биты. Они определяют параметры работы контроллера: от какого источника тактироваться, каков размер загрузочного сектора, нужно ли запускать загрузчик и т.д.
4 строка - указание на файл прошивки.
Изменять настройки категорически не рекомендуется!
Для особо осторожных - можете попробовать не трогать fuse-биты, удалив первые 3 строки, и залив только прошивку. Но не факт, что так будет работать. Конечно мала вероятность, что bootloader слетает от изменения состояний fuse, но если в вашем случае причина в этом - bootloader заработает только при исправлении всех fuse.
В принципе, можно запускать loader. В результате работы программа будет отображать запись прошивки в наш любимый контроллер где-то в таком виде:
BOOTLOADER восстановлен, что и требовалось.
НАУКА О КОНТАКТАХ
Приехавшая платка перед новым годом была прошита, радостно нарисовала на видео буковки и циферки, и была отложена «на потом». И вот недавно была запущена, «на потом» наступил. И все бы ничего, но захотелось мне надписи подвигать по картинке. Подключаю я значится OSD к большому брату, запускаю ArduCAM OSD Config, пытаюсь считать настройки с платы, а она мне и выдает.....
В общем, если обратите внимание на фото minimOSD выше, увидите там соплю и провод от разъема к контроллеру. Дядюшка Ляо видимо зажал отмывочной жидкости, вот и перетравились два полоска. А ведь полтора месяца назад все ОК было. Поэтому, если все прошилось, а прога все равно вашу плату не видит - проверьте контакты, товарищи!
Так как по своей сути этот проект является Arduino-совместимым, то нет ничего проще, чем вернуть плату к жизни, так сказать, штатными средствами. Если у вас есть программатор от Arduino, достаточно лишь открыть Arduino, и проделать следующие действия:
- в меню "Tools→Board" выбрать тип платы (в нашем случае Arduino Pro or Pro Mini (5v, 16MHz) w/ATmega128)
- в меню "Tools→Programmer" выбрать ваш тип программатора (например USBasp)
- в меню "Tools
- " выбрать пункт "Burn Bootloader"
Далее, как пишут на форуме RC Groups необходимо подождеть 2-3 минуты, и увидеть предупреждение в стиле “warning: cannot set sck period. Please check for usbasp firmware update”. Рекомендуется его игнорировать.
Затем необходимо отключить программатор, и подключиться к плате MinimOSD для её конфигурации по схеме, указанной в статье "minimOSD для NAZA, Прошивка"
По идее, должно заработать.
Но, как известно, не у всех под рукой программатор, поэтому предлагаю
2 способ (сложнее, но проверенный)
Как известно, Arduino базируются на процессорах Atmel. А для программирования Atmel существует такая веселая приблуда, как avrdude. И она умеет прошивать наш контроллер через интерфейс ISP, он же SPI. А этот интерфейс поддерживается всем известной микросхемой FT232RL.
Я использовал такой переходник, купленный в подвальчике дядюшки Ляо на Aliexpress как для конфигурации платы, так и для восстановления бутлоадера:
Черная 6-пиновая гребенка используется для общения с другими платами через протокол rs232/USART, через него происходит общение ArduCam OSD Config с платой MinimOSD.
Желтая гребенка отвечает за интерфейс ISP/SPI, через него можно скормить микроконтроллеру практически все что угодно. Я ради эксперимента заливал через него прошивку minNAZAOSD_upload_MCM.hex из этого проекта. Правда отображалась только верхняя левая часть информационного поля, что меня не обрадовало.
Так вот. Чтобы BOOTLOADER снова закорешился с нашим камнем и начал отзываться на запросы ArduCam OSD Config, необходимо запаять в плату minimOSD двухрядную 6-пиновую гребенку в отверстия возле контроллера. Ну или проводки припаять - кому как душа лежит. Должно получиться как-то так:
Распиновка разъема на плате minimOSD и переходнике одинаковая, и выглядит следующим образом:
Первый пад имеет квадратную форму.
Соединять необходимо соответственно 1→1, 2→2 и т.д.
Есди на переходнике есть переключатель напряжений - установите напряжение 5В.
Затем нужно прошить прошивку с бутлоадером. Её можно взять в установочной папке Arduino под именем ATmegaBOOT_168_atmega328.hex
Чем будем жечь?
А жечь будем консольной программкой avrdude (скачать)
В этом же архиве можно взять ATmegaBOOT_168_atmega328.hex
Для удобства в архиве находится файл loader.cmd, который вызывает avrdude с необходимыми параметрами.
Его содержание следующее:
avrdude.exe -p m328p -c ftbb -P ft0 -U lfuse:w:0xFF:m
avrdude.exe -p m328p -c ftbb -P ft0 -U hfuse:w:0xDA:m
avrdude.exe -p m328p -c ftbb -P ft0 -U efuse:w:0x05:m
avrdude.exe -p m328p -c ftbb -P ft0 -U flash:w:ATmegaBOOT_168_atmega328.hex:a
ВНИМАНИЕ! ПРИ ИСПОЛЬЗОВАНИИ ДРУГОГО МИКРОКОНТРОЛЛЕРА ДАННЫЕ КОМАНДЫ, ВЫПОЛНЕННЫЕ ПРОГРАММОЙ, МОГУТ ПРЕВРАТИТЬ ВАШ КРИСТАЛЛ В НЕВОССТАНОВИМЫЙ БЕЗ ПАРАЛЛЕЛЬНОГО ПРОГРАММАТОРА КУСОК КРЕМНИЯ!
Первые 3 строки - это так называемые fuse-биты. Они определяют параметры работы контроллера: от какого источника тактироваться, каков размер загрузочного сектора, нужно ли запускать загрузчик и т.д.
4 строка - указание на файл прошивки.
Изменять настройки категорически не рекомендуется!
Для особо осторожных - можете попробовать не трогать fuse-биты, удалив первые 3 строки, и залив только прошивку. Но не факт, что так будет работать. Конечно мала вероятность, что bootloader слетает от изменения состояний fuse, но если в вашем случае причина в этом - bootloader заработает только при исправлении всех fuse.
В принципе, можно запускать loader. В результате работы программа будет отображать запись прошивки в наш любимый контроллер где-то в таком виде:
BOOTLOADER восстановлен, что и требовалось.
НАУКА О КОНТАКТАХ
Приехавшая платка перед новым годом была прошита, радостно нарисовала на видео буковки и циферки, и была отложена «на потом». И вот недавно была запущена, «на потом» наступил. И все бы ничего, но захотелось мне надписи подвигать по картинке. Подключаю я значится OSD к большому брату, запускаю ArduCAM OSD Config, пытаюсь считать настройки с платы, а она мне и выдает.....
В общем, если обратите внимание на фото minimOSD выше, увидите там соплю и провод от разъема к контроллеру. Дядюшка Ляо видимо зажал отмывочной жидкости, вот и перетравились два полоска. А ведь полтора месяца назад все ОК было. Поэтому, если все прошилось, а прога все равно вашу плату не видит - проверьте контакты, товарищи!
После завершения сессии бутлоадер должен вызвать прерывание перезагрузки контроллера, который запустится уже с новыми параметрами. В общем-то даже бутлоадер можно таким образом перезалить. НО только при условии, что бутлоадер живой на момент попытки изменения прошивки.
Если в процессе конфигурирования настроек minimOSD через UART (а это по сути и есть изменение прошивки бутлоадером) мы (или программа накосячила, или помеха в шине случилась и адрес не тот ушел) случайно записали какое-то значение в область бутлоадера, то при перезагрузке и последующем старте бутлоадер будет работать некорректно или не заработает вообще, что приведет к ошибке в программе конфигурирования (т.к. бутлоадер не ответит нам по UART, ответит неверно или не на той скорости).
Если в бутлоадере ошибка - восстановить его через UART не удастся, так как UART в данном процессоре - интерфейс обмена данными, не более того.
Способы прошивки и правда не сильно отличаются, и там и там ISP, и даже консоль по сути одинаковая - Arduino тоже использует avrdude. Просто у меня почему-то arduino отказалась шить плату, хотя я попробовал выбрать в настройках все возможные программаторы. Может надо какую-нибудь пропатченную версию скачивать.