реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 - заблокировал флешку :) не знаю что делать теперь.
Lexman
сообщение Jul 28 2011, 11:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 1-08-05
Пользователь №: 7 276



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

Короче, сижу второй день, пытаясь взломать собственную железку - и хрен там.
Может кто-то сталкивался?
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 28 2011, 11:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Программу для разблокирования нужно лить в SRAM, или я что-то не понимаю?
Go to the top of the page
 
+Quote Post
Lexman
сообщение Jul 28 2011, 12:25
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 1-08-05
Пользователь №: 7 276



Я тоже так думаю. Но поскольку с кортексами и мВижном имею дело недавно, пока не нашел способоа КАК ЭТО СДЕЛАТЬ sm.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 28 2011, 12:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Есть совсем бронебойный способ: скомпилировать процедуру разблокировки в машинный код (должно быть немного), вбить этит код в SRAM руками через отладчик, навести PC на этот код опять же через отладчик, запустить :-)
Go to the top of the page
 
+Quote Post
SII
сообщение Jul 28 2011, 13:44
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Для заливки в ОЗУ надо использовать ини-файл, управляющий этим делом. Вот, например, использовавшийся мною (правда, для 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).

Если всё сделано правильно, отладчик остановится на самой первой команде программы.
Go to the top of the page
 
+Quote Post
koyodza
сообщение Jul 28 2011, 15:23
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Подключитесь по UART1, запустите FlashLoaderDemo, и разблокируйте всё что нужно
Go to the top of the page
 
+Quote Post
Lexman
сообщение Jul 28 2011, 20:50
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 1-08-05
Пользователь №: 7 276



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

Кстати, мимо ходом ещё один вопрос:
на сколько я понял, в СТМах для перезаписи данных (программно) во флешке, её НЕОБХОДИМО сначала стереть, а стирать можно постранично. Я ничего не пропустил или всё и есть так чудовищно неудобно?
Go to the top of the page
 
+Quote Post
SII
сообщение Jul 28 2011, 21:04
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



По идее, сброс битов защиты возможен лишь одновременно со стиранием флэш-памяти, т.е. добраться до её исходного содержимого невозможно -- а защита, собственно, и предназначена для того, чтобы всякие кулхацкеры не смогли прочитать код прошивки.
Go to the top of the page
 
+Quote Post
Pat
сообщение Jul 29 2011, 13:34
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(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.
Go to the top of the page
 
+Quote Post
sergvks
сообщение Aug 1 2011, 06:17
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Снять защиту можно и в Keil uVision, нужно только в Programming algorithm добавить STM32F10x Flash Options.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.0231 секунд с 7
ELECTRONIX ©2004-2016