JTAG & PORTB

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: pip, _sva_

Аватара пользователя
MR.Smith
Сообщения: 76
Зарегистрирован: 25 апр 2016, 10:56

Re: JTAG & PORTB

Сообщение MR.Smith » 08 авг 2017, 11:44

R Max писал(а):
24 апр 2016, 17:11
Ну надо же, удалось всё-таки стереть память:
разъём X11 - в нормальном режиме,
перевёл разъём X2 в режим внутреннего кварца,
замкнул внешний кварц: 207 и 208 пины чипа.

НО ВОПРОС С ТАЙМАУТОМ ОСТАЁТСЯ - .FLM-файл КРИВОЙ и пины JTAG зависят от других пинов??
Я тоже очищаю FLASH на своей LDM плате по этой методике.
Но здесь получается, что после замыкания кварца программа во FLASH зависает в бесконечном цикле при попытке настроить PLL еще до того момента, где я конфигурирую ноги микроконтроллера. Только благодаря этому камень видно до тех пор, пока замкнут кварц. В теории (я не проверял) если настраивать тактирование от внутреннего источника, то фокус с замыканием кварца уже не прокатит. И как тогда стирать FLASH?

Почему не получается стереть память при переводе камня в режим стирания Flash (подтягивание H2 к 3,3В)?
Ошибка таймаута. Keil начинает ее стирать, но не получается.
Как лечить данную проблему?

bkolbov
Сообщения: 86
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: JTAG & PORTB

Сообщение bkolbov » 08 авг 2017, 12:07

В теории (я не проверял) если настраивать тактирование от внутреннего источника, то фокус с замыканием кварца уже не прокатит. И как тогда стирать FLASH?
Через интерфейс отладки, который пользовательская программа не должна отключать. Если в программе альтернативные функции интерфейса отключаются, то можно стереть все только через специальный режим и запись в спец регистр.
MR.Smith писал(а):
08 авг 2017, 11:44
Почему не получается стереть память при переводе камня в режим стирания Flash (подтягивание H2 к 3,3В)?
Ошибка таймаута. Keil начинает ее стирать, но не получается.
Как лечить данную проблему?
При входе в этот режим флеш нельзя ни прочитать, ни записать, ни стереть обычным способом. Необходимо осуществить запись в специальный регистр, а алгоритм стирания Keil, вероятно, пользуется обычными регистрами флеш.
ТО 7.3 подраздел
Далее по отладочному интерфейсу (SWD или JTAG) должна быть подана команда
записи значения 00000001h в регистр FLASH_FULL_ERASE, после чего будет
активировано полное стирание.

Аватара пользователя
Лашкевич
Сообщения: 95
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: JTAG & PORTB

Сообщение Лашкевич » 08 авг 2017, 13:38

Стереть flash подвязкой H2 у нас получилось через OpenOCD путем запуска скрипта k1921vk01t_stlink_erase.bat из ветки форума Драйвер для OpenOCD
Там внутри скрипта, собственно, всего лишь

Код: Выделить всё

"bin\openocd" -f kits/k1921vk01t_stlink/simple_connect.cfg -c "flash erase_sector 0 0 last"
если используется другой житаг, нужно выбрать его конфиг. Этот файл также есть в составе VectorIDE.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Аватара пользователя
MR.Smith
Сообщения: 76
Зарегистрирован: 25 апр 2016, 10:56

Re: JTAG & PORTB

Сообщение MR.Smith » 08 авг 2017, 14:05

Лашкевич писал(а):
08 авг 2017, 13:38
Стереть flash подвязкой H2 у нас получилось через OpenOCD путем запуска скрипта k1921vk01t_stlink_erase.bat из ветки форума Драйвер для OpenOCD
Там внутри скрипта, собственно, всего лишь

Код: Выделить всё

"bin\openocd" -f kits/k1921vk01t_stlink/simple_connect.cfg -c "flash erase_sector 0 0 last"
если используется другой житаг, нужно выбрать его конфиг. Этот файл также есть в составе VectorIDE.
Спасибо большое!
Попробую так сделать.
Пока думал только создать пустой проект с записью этого регистра, загрузить его в ОЗУ при подтянутом в единицу H2 и запустить проект на исполнение.

bkolbov
Сообщения: 86
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: JTAG & PORTB

Сообщение bkolbov » 08 авг 2017, 14:28

MR.Smith писал(а):
08 авг 2017, 14:05
Пока думал только создать пустой проект с записью этого регистра, загрузить его в ОЗУ при подтянутом в единицу H2 и запустить проект на исполнение.
Зачем же так сложно - openocd уже дает достаточно инструментов, чтобы делать с контроллером практически все что угодно.
В документации на openocd можно найти группу команд "niietcm4", где есть команда стирания всего в режиме когда H2 при старте был "1" - service_mode_erase. При выполнении этой команды драйвер сам всё сделает.
И тогда можно сделать батник с

Код: Выделить всё

"bin\openocd" -f kits/k1921vk01t_stlink/simple_connect.cfg -c "niietcm4 service_mode_erase 0"
который и будет выполнять такой вид стирания.

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя