Pull to refresh

Comments 7

Попробуйте вставлять код как код, а не как картинки. Или прячьте его под спойлеры. Статья просто тонет в картинках.
Интересно про четвертый способ восстановления. Припоминаю, что у меня была похожая ситуация — после перебора всех положений перемычек процессор ожил. Подумал что случайность, что-то сам перепутал. Похоже что нет — получается что режим 010 «круче» с точки зрения прошивки чем режим 000?
Не могу понять значение «круче». Когда мы переставляем перемычке в режим 010, то выполнение программы при отладке происходит из ОЗУ. Так как в настройках мы указали адреса Flash, то нажав на Debag, контроллер очищает все ячейки памяти Flash (тоже указали в настройках), прошивает нашей программой, переставляет указатель на начало ОЗУ и начинает «выполнение программы». Так как мы ничего в ОЗУ не писали, то у нас там будут нули. Таким образом, мы получаем программу из кучи нулей и перепрошивку Flash. Отладка Flash, как я понял, в режиме 010, не возможна. Как вариант, изменить значения адреса в настройках. Чтобы программа грузилась не во Flash, а в ОЗУ. Это бы значительно увеличило ресурс контроллера. В нашем контроллере приличное количество ОЗУ. Так что, чисто теоретически, это возможно. Попробую сам сделать это. Напишу в одной из следующих статей.
Спасибо. Позволю, в свою очередь, немного уточнить — как теперь понял это я.
Дано — программа запускается из внутреннего ПЗУ, но в силу ошибок (неверное тактирование, блокировка пинов, еще что-то) после запуска не дает корректно работать с портом JTAG_B отладчику.
Выбираем режим 010 — после перезагрузки «процессор пытается начать выполнять программу из внешней памяти, установленной на внешней системной шине». Тут я думаю имеется в виду скорее внешнее ПЗУ чем ОЗУ, то есть это режим не микроконтроллера, а микропроцессора. Так как там ничего нет, JTAG порт остается рабочим. Дальше уже дело внутрисхемного отладчика, работа его ничем не отличается от режима 000. Он через JTAG порт загружает в ОЗУ с адреса 0x20000000 размером 0x0800 «algorithm for download». Загрузчик запускается в ОЗУ и делает то, что мы его попросили в настройках — например «Erase full chip» с адреса 0x08000000, то есть очищаем внутреннее ПЗУ.
Как отлаживаться, загружая прошивку в ОЗУ — не знаю. Видел упоминания, что есть такая возможность. Думаю, это будет полезно многим.
Сам делал на этом МК загрузку отдельных модулей программы в ОЗУ из ПЗУ после старта. Keil позволяет делать это достаточно легко. Это, в частности, необходимо если мы захотим использовать часть ПЗУ для хранения пользовательских данных.
Дополню себя — жаль что этот способ неприменим, если плате разведен только JTAG_A.
после запуска не дает корректно работать с портом JTAG_B отладчику.

Не дает работать с обоими портами. И JTAG_A и JTAG_B.
Выбираем режим 010 — после перезагрузки «процессор пытается начать выполнять программу из внешней памяти, установленной на внешней системной шине». Тут я думаю имеется в виду скорее внешнее ПЗУ чем ОЗУ, то есть это режим не микроконтроллера, а микропроцессора. Так как там ничего нет, JTAG порт остается рабочим.

Хммммм… Я только неделю разбираюсь с данным контроллером. Вы поставили меня в тупик. Скорее всего, вы правы. Прошу простить мою ошибку.
Он через JTAG порт загружает в ОЗУ с адреса 0x20000000 размером 0x0800 «algorithm for download». Загрузчик запускается в ОЗУ и делает то, что мы его попросили в настройках — например «Erase full chip» с адреса 0x08000000, то есть очищаем внутреннее ПЗУ.

Тоже, честно сказать, не знаю. В низкоуровневой отладке не разбирался.
Как отлаживаться, загружая прошивку в ОЗУ — не знаю. Видел упоминания, что есть такая возможность. Думаю, это будет полезно многим.
Сам делал на этом МК загрузку отдельных модулей программы в ОЗУ из ПЗУ после старта. Keil позволяет делать это достаточно легко. Это, в частности, необходимо если мы захотим использовать часть ПЗУ для хранения пользовательских данных.

У меня по плану стоят еще 4 статьи на тему периферии. После этого я хочу подробнее разобраться как раз таки с памятью и ее разделами.
Спасибо за ваш вопрос. Теперь я знаю, о чем будет 5-я статья после этой.
Sign up to leave a comment.

Articles