|
|
  |
STM32 - заблокировал флешку :) не знаю что делать теперь. |
|
|
|
Jul 28 2011, 11:09
|
Участник

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

|
Прошу пардону, если такая тема была - поиск не помог. Сделал глупость - заблокировал программно все страницы STM32F103 (XL) флешки, в итоге Keil uVision не может туда ничего залить (STLink JTAG) - в т.ч. залит программу, которая разблокирует флешку  . Пробовал разблокировать флешку вручную, через редактирование регистров в режиме отладки, в итоге - бит CR.LOCK снимается после ввода KEYR1 и KEYR2, но вот разблокировать юзер-регистры для снятия флага защиты почему-то не получается, т.к. регистр, назначенный для ввода КЕЙР-ов (и соответствующая область памяти) недоступны для записи (?). Попытался загрузить проект в SRAM, но не получилось - как я понял, прямого пути для этого нет, а смена базового адреса для проги с флешки на СРАМ дали результат, который я затруднился интерпретировать как адекватный  Короче, сижу второй день, пытаясь взломать собственную железку - и хрен там. Может кто-то сталкивался?
|
|
|
|
|
Jul 28 2011, 13:44
|
Знающий
   
Группа: Свой
Сообщений: 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). Если всё сделано правильно, отладчик остановится на самой первой команде программы.
|
|
|
|
|
Jul 28 2011, 20:50
|
Участник

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

|
Всем спасибо, проблему решил. Почему до этого так не получилось - так и не понял, но сегодня ещё раз попробовал ручками указать в таргете в качестве адресов IROM для загруки образа - оперативку. И всё залилось и запустилось и разблокировалось. За то за время мытарств сколько всего интересного я вычитал про СТМ и мВижн  После всего этого хочется задать только один вопрос: если так относительно просто я вскрыл свою флешку, значит также могу и чужую. И толку от всех этих защит... Кстати, мимо ходом ещё один вопрос: на сколько я понял, в СТМах для перезаписи данных (программно) во флешке, её НЕОБХОДИМО сначала стереть, а стирать можно постранично. Я ничего не пропустил или всё и есть так чудовищно неудобно?
|
|
|
|
|
Jul 29 2011, 13:34
|

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

|
Цитата(Lexman @ Jul 28 2011, 22:50)  За то за время мытарств сколько всего интересного я вычитал про СТМ и мВижн  Да сложновато то у вас получилось. И есть более легкий способ. Скачать SEGGER J-Flash ARM подключится по USB (если он у вас есть в схеме) и разблокировать Flash (Unsecure chip). Цитата(Lexman @ Jul 28 2011, 22:50)  После всего этого хочется задать только один вопрос: если так относительно просто я вскрыл свою флешку, значит также могу и чужую. И толку от всех этих защит... Если вас была установлена защита записи, в этом случае возможно снять защиту без потери кода. Если установлена защита чтения, то при ее снятии происходит полное стирание памяти. Толк есть, после того как будет установлена защита чтения, код из SRAM не будет иметь возможности читать флеш. Можно только снять защиту чтения, что приведет к полному стиранию памяти. Цитата(Lexman @ Jul 28 2011, 22:50)  на сколько я понял, в СТМах для перезаписи данных (программно) во флешке, её НЕОБХОДИМО сначала стереть, а стирать можно постранично. Я ничего не пропустил или всё и есть так чудовищно неудобно? Да тут вы ничего не пропустили? согласен что не сильно удобно? но терпимо, в конце концов это же не EEPROM.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|