Как восстановить жука, когда я загрузил программу, которая была слишком большой и перезаписала загрузчик?

Я выполняю целевое модульное тестирование для промышленного приложения, и мой тестовый код слишком велик, чтобы вместить все на плате одновременно. Я использую набор инструментов Sloeber для разработки, и я поместил на плату что-то более 28 КБ, и программирование не удалось. Теперь жук не отображается как последовательный порт, и даже при нажатии контактов сброса, что мне приходилось делать несколько раз в прошлом. Если я перезаписал загрузчик, что кажется вероятным, есть ли способ его восстановить? Нужно ли перепрограммировать загрузчик на плате Beetle? Я не нашел способа сделать это с Жуком...

Спасибо!

, 👍3

Обсуждение

загрузка не перезаписала загрузчик. посмотри мой ответ, @Juraj

Да, пробовал двойной сброс - тоже не помогло. Поведение, которое произошло, заключается в том, что Sloeber потерпел неудачу, когда записывал изображение, и синий свет оставался включенным. Когда я сбросил его, порт не появился. Когда я сто раз нажимал сброс, светодиод никогда не мигал, и в моем диспетчере устройств никогда не появлялся COM-порт. Я почти уверен, что это проблема Слобера с инструментами gcc, от которых, вероятно, защищает программа Arduino., @Laurence Gordon

не сто раз. только, но ровно два раза, чтобы активировать загрузчик., @Juraj

на ATmega32u4 невозможно перезаписать загрузчик последовательной загрузкой, @Juraj


2 ответа


1

Я не знаком с набором инструментов Sloeber, но очень маловероятно, что он действительно перезаписал загрузчик. При программировании через USB это собственно загрузчик, который записывает программу во флеш память. Так что это будет означать, что загрузчик перезаписал себя, только потому, что слишком большая программа. Не уверен, что это вообще возможно.

В любом случае, вы можете использовать программатор ICSP/ISP (или другой Arduino, если у вас его нет), чтобы снова записать загрузчик на чип. Google для Arduino ISP, чтобы получить инструкции для него, есть много руководств.

Вам нужно соединить правильные контакты на Beetle с программатором ISP. Согласно этому сайту, вы должны найти контактные площадки ICSP на задней стороне платы (группа из 6 контактов в 2 ряда). Через эти контакты можно записать загрузчик.

Если и это не работает, проблема кроется в другом. Как я уже говорил, перезаписывать загрузчик из-за того, что программа слишком велика для MCU, не должно происходить, и маловероятно, что это действительно ваша проблема. Возможно, вы что-то повредили на плате, но мы не можем сказать этого по описанию. Так что вы можете просто попробовать записать загрузчик и посмотреть, что произойдет.

,

OP не нужно прошивать загрузчик. загрузчик защищен предохранителями, @Juraj

Да, колодки icsp есть, именно так вы выполняете сброс. Похоже, что набор инструментов Sloeber, который использует инструменты atmel gcc/g++, каким-то образом вызывает проблему с жуком, если файл слишком большой. Он определенно не может написать и сказать вам об этом, но в любом случае жук становится полностью невосприимчивым., @Laurence Gordon

на ATmega32u4 невозможно перезаписать загрузчик последовательной загрузкой, @Juraj


0

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

Плата не отображается на USB, потому что USB обрабатывается скетчем на MCU с родным USB. Если скетч не запускается, он не поддерживает USB.

Загрузчик защищен предохранителями.

(Это случилось со мной со Слобером несколько дней назад.)

,

Да, пробовал двойной сброс - тоже не помогло. Поведение, которое произошло, заключается в том, что Sloeber потерпел неудачу, когда записывал изображение, и синий свет оставался включенным. Когда я сбросил его, порт не появился. Когда я сто раз нажимал сброс, светодиод никогда не мигал, и в моем диспетчере устройств никогда не появлялся COM-порт., @Laurence Gordon