Не так давно я писал о том, как мне удалось превратить в "кирпич" микроконтроллер, задав неудачную комбинацию настроек. Проблема была в том, что у меня случайно получилось ввести в режим работы "по требованию" генератор, тактирующий ядро контроллера. При этом, отключалось все, в том числе и модуль отладки. Множество людей откликнулись на мою просьбу и дали мне несколько дельных советов и многие до сих пор спрашивают чем же все закончилось. Так вот история развивалась довольно комично, но закончилась весьма банально. Подробности под катом.
Итак, последовав советам опытных людей, мы отправились перечитывать в User Manual разделы, посвященные отладке и режимам загрузки контроллера. Оказалось, что вроде как есть режим загрузки, при котором контроллер не начинает выполнять код, а ждет подключение отладчика.
Оставалось самое трудное — припаяться к нужным пинам чтобы правильно выполнить последовательность загрузки. Аппаратура, позволяющая это сделать и не убить плату, у нас находится в другом офисе, поэтому нужно было ехать туда и отдавать все специалистам...
Но в день, когда мы собирались ее везти, произошло нечто необъяснимое. Вечером плата была положена в пакетик, затем в коробку, а коробка была убрана в сумку. Однако с утра платы в сумке не нашлось. Она просто исчезла! Мы перерыли всю сумку, все коробки которые нашли, обращались в бюро находок в автобусах, в которых ехала сумка… Все тщетно. Потратив на поиски пару дней, решили плюнуть на эту плату и ждать пока будут изготовлены новые (а это почти 4 недели). Хорошо, что при этом удалось продолжить работу с прошивкой, так как у нас была Arduino M0 с похожим процессором.
В тот момент мне вспомнился анекдот про русского и два титановых шарика, но было как-то не смешно.
Однако, в результате очередного мозгового штурма, мы вспомнили, что перед тем как уехать домой с платой, была произведена уборка на столах. Мы бегом побежали к шкафам с деталями и, перерыв там все с низу до верху, нашли пропажу в том самом пакетике. Оказалось, что кто-то случайно в последний момент вынул плату из коробки и убрал ее к другим деталям. Потом коробку закрыли, положили в сумку и т.д. Вот теперь анекдот уже воспринимался не так печально.
В итоге, потратив еще день на пайку нужных проводов, мы приступили к оживлению. Тут стоит сказать, что пока мы развлекались поисками платы, к нам приехал J-Link. Правда, не оригинал, а дешевый аналог неизвестного производителя.
Так вот, как выяснилось, не нужно было ничего даже паять. Этот J-Link сходу увидел микроконтроллер, хотя дорогой и более "навороченный" ULink отказывался все время это делать.
После того, как злополучная прошивка была стерта, все встало на свои места и все отладчики без проблем смогли подключиться к контроллеру.
Мы предполагаем, что нас спасло то, что J-Link умеет тактировать модуль отладки сам в обход ядра. Я не знаю спецификации SWD и не разбирался глубоко в разнице между J-Link и ULink, но похоже что дешевый аналог работает лучше дорогого и навороченного. Правда, при этом, регулярно перегорает...
На этом история заканчивается. Плата работает, прошивка пишется. Всем спасибо за помощь!
Dark_Purple
Что сказать то хотел?
J-Link лучше ULink, так это и так все знают.
Или сказ про то как искали плату?
Плат должно быть три минимум.
AlexandrSurkov
Вы видимо не читали прошлую статью. Я хотел рассказать чем закончилась история, но написать «все заработало как только я подключил J-Link» было бы совсем скучно.
А по поводу трех плат — к сожалению, действительнось не всегда такая как нам хочется.