Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 - заблокировал флешку :) не знаю что делать теперь.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Lexman
Прошу пардону, если такая тема была - поиск не помог.
Сделал глупость - заблокировал программно все страницы STM32F103 (XL) флешки, в итоге Keil uVision не может туда ничего залить (STLink JTAG) - в т.ч. залит программу, которая разблокирует флешку sm.gif.
Пробовал разблокировать флешку вручную, через редактирование регистров в режиме отладки, в итоге - бит CR.LOCK снимается после ввода KEYR1 и KEYR2, но вот разблокировать юзер-регистры для снятия флага защиты почему-то не получается, т.к. регистр, назначенный для ввода КЕЙР-ов (и соответствующая область памяти) недоступны для записи (?).
Попытался загрузить проект в SRAM, но не получилось - как я понял, прямого пути для этого нет, а смена базового адреса для проги с флешки на СРАМ дали результат, который я затруднился интерпретировать как адекватный sm.gif

Короче, сижу второй день, пытаясь взломать собственную железку - и хрен там.
Может кто-то сталкивался?
scifi
Цитата(Lexman @ Jul 28 2011, 15:09) *
Сделал глупость - заблокировал программно все страницы STM32F103 (XL) флешки, в итоге Keil uVision не может туда ничего залить (STLink JTAG) - в т.ч. залит программу, которая разблокирует флешку sm.gif.

Программу для разблокирования нужно лить в SRAM, или я что-то не понимаю?
Lexman
Я тоже так думаю. Но поскольку с кортексами и мВижном имею дело недавно, пока не нашел способоа КАК ЭТО СДЕЛАТЬ sm.gif
scifi
Цитата(Lexman @ Jul 28 2011, 16:25) *
Я тоже так думаю. Но поскольку с кортексами и мВижном имею дело недавно, пока не нашел способоа КАК ЭТО СДЕЛАТЬ sm.gif

Есть совсем бронебойный способ: скомпилировать процедуру разблокировки в машинный код (должно быть немного), вбить этит код в SRAM руками через отладчик, навести PC на этот код опять же через отладчик, запустить :-)
SII
Для заливки в ОЗУ надо использовать ини-файл, управляющий этим делом. Вот, например, использовавшийся мною (правда, для STM32F103, но суть от этого не меняется):

Код
FUNC void Setup (void) {
  SP = _RDWORD(0x20000000);          // Setup Stack Pointer
  PC = _RDWORD(0x20000004);          // Setup Program Counter
  _WDWORD(0xE000ED08, 0x20000000);   // Setup Vector Table Offset Register
}

LOAD %L INCREMENTAL                  // load the application

Setup();                             // Setup for Running


Он является мелкой переделкой собственно кейловского из примеров, идущих со средой. Смысл таков: LOAD %L INCREMENTAL загружает axf-файл, собранный компоновщиком (при необходимости вместо %L можно подставить точное имя файла), а затем вызывается процедурка Setup, которая выставляет начальные значения SP и PC (читает их из начальной области ОЗУ, где располагается таблица векторов), а также устанавливает нужным образом регистр VTOR. Выполнение не начинается (можно поставить последней строчкой, после вызова Сетупа, g, но зачем это надо? пустить и в отладчике можно).

Чтобы использовать сей гениальный файл, надо:

1) правильным образом собрать axf-файл (я всегда использую sct-файлы, поскольку меня не устраивает стандартно-примитивная схема размещения секций в памяти, но можно обойтись и без этого, просто указав правильные базовые адреса на вкладке Target);
2) на вкладке Debug указать подготовленный ини-файл;
3) на той же вкладке сбросить галку Load Application at Startup, поскольку загрузку кода в память обеспечивает ини-файл;
4) после трансляции и сборки программы (F7) войти в режим отладки (Ctrl-F5).

Если всё сделано правильно, отладчик остановится на самой первой команде программы.
koyodza
Подключитесь по UART1, запустите FlashLoaderDemo, и разблокируйте всё что нужно
Lexman
Всем спасибо, проблему решил. Почему до этого так не получилось - так и не понял, но сегодня ещё раз попробовал ручками указать в таргете в качестве адресов IROM для загруки образа - оперативку. И всё залилось и запустилось и разблокировалось.
За то за время мытарств сколько всего интересного я вычитал про СТМ и мВижн sm.gif
После всего этого хочется задать только один вопрос: если так относительно просто я вскрыл свою флешку, значит также могу и чужую. И толку от всех этих защит...

Кстати, мимо ходом ещё один вопрос:
на сколько я понял, в СТМах для перезаписи данных (программно) во флешке, её НЕОБХОДИМО сначала стереть, а стирать можно постранично. Я ничего не пропустил или всё и есть так чудовищно неудобно?
SII
По идее, сброс битов защиты возможен лишь одновременно со стиранием флэш-памяти, т.е. добраться до её исходного содержимого невозможно -- а защита, собственно, и предназначена для того, чтобы всякие кулхацкеры не смогли прочитать код прошивки.
Pat
Цитата(Lexman @ Jul 28 2011, 22:50) *
За то за время мытарств сколько всего интересного я вычитал про СТМ и мВижн sm.gif


Да сложновато то у вас получилось.

И есть более легкий способ.
Скачать SEGGER J-Flash ARM подключится по USB (если он у вас есть в схеме) и разблокировать Flash (Unsecure chip).

Цитата(Lexman @ Jul 28 2011, 22:50) *
После всего этого хочется задать только один вопрос: если так относительно просто я вскрыл свою флешку, значит также могу и чужую. И толку от всех этих защит...


Если вас была установлена защита записи, в этом случае возможно снять защиту без потери кода.
Если установлена защита чтения, то при ее снятии происходит полное стирание памяти.

Толк есть, после того как будет установлена защита чтения, код из SRAM не будет иметь возможности читать флеш.
Можно только снять защиту чтения, что приведет к полному стиранию памяти.

Цитата(Lexman @ Jul 28 2011, 22:50) *
на сколько я понял, в СТМах для перезаписи данных (программно) во флешке, её НЕОБХОДИМО сначала стереть, а стирать можно постранично. Я ничего не пропустил или всё и есть так чудовищно неудобно?


Да тут вы ничего не пропустили? согласен что не сильно удобно? но терпимо, в конце концов это же не EEPROM.
sergvks
Снять защиту можно и в Keil uVision, нужно только в Programming algorithm добавить STM32F10x Flash Options.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.