2014-09-10 2 views
1

Я работаю над проектом с использованием STM32F103, и я закончил разработку прошивки. Я использую утилиту ST-Link для загрузки файлов на микроконтроллер. Когда я активирую считывание защиты на моем чипе, он перестает работать. И мне нужно защитить свою прошивку. В чем проблема?Как защитить вспышку чтения stm32f10x

ответ

1

Это было некоторое время, так как я отвечал на этот вопрос, и как это было какой-то новый вид деятельности, я вывешу ответ, который я нашел.

Сразу после программирования контроллера перейдите в раздел «Параметры байтов» утилиты ST-Link и включите функцию «Отключить защиту». Просто помните, что после включения этого ядра ядро ​​перестанет работать, и вы должны сбросить микроконтроллер самостоятельно. Чтобы запрограммировать его снова, вы должны отключить защиту от чтения, и утилита сделает это автоматически.

0

Прежде всего, вам необходимо разблокировать вспышку. Должен быть вызов в библиотеке STM32 StdPeriph. Мой код выглядит примерно так:

/* Read protect the flash. NEVER EVER set this to level 2. You can't 
* write to the chip ever again after that. */ 
FLASH_OB_Unlock(); 
FLASH_OB_RDPConfig(OB_RDP_Level_1); 
if (FLASH_OB_Launch() != FLASH_COMPLETE) 
{ 
    err_printf("Error enabling RDP\n"); 
} 
FLASH_OB_Lock(); 
+0

Не могли бы вы дать более подробную информацию? Для примера: когда вам нужно позвонить этому из прошивки пользователя? – hoo2

1

Просто немного больше информации к принятому ответу:

ST32F10XXX docs Из раздела «2.4.1 Защита от чтения»:

Защита чтения активируется путем установки параметра RDP байт и затем, применяя системный сброс для перезагрузки нового байта опций RDP.

Примечания: Если защита чтения устанавливается в то время как отладчик по-прежнему подключен через JTAG/SWD, применить POR (сброс мощность) вместо сброс системы (без подключения отладчика).

После байта защиты запрограммирован:

  • Главной Флэш-память доступа для чтения не допускается для кода пользователя, за исключением (при загрузке с главной самой флэш-памяти в режиме отладки не активно) ,
  • Страницы 0-3 (для устройств со средней плотностью и ) или страницы 0-1 (для устройств с высокой плотностью и ) автоматически защищены от записи. Остальные памяти могут быть запрограммированы кодом, выполненным из основной флэш-памяти (для IAP, постоянного хранения и т. Д.), Но он защищен от записи/стирания (но не против стирания массы) в режиме отладки или когда загрузка из встроенного SRAM.
  • Все функции, связанные с загрузкой кода и выполнением кода из встроенного SRAM , по-прежнему активны (JTAG/SWD и загрузка со встроенной SRAM), и это может быть использовано для , чтобы отключить защиту чтения. Когда байт опции защиты чтения изменяется на значение памяти с защитой , выполняется массовое стирание.
  • При загрузке со встроенной SRAM доступ к флэш-памяти через код и чтение данных с использованием DMA1 и DMA2 запрещены.
  • флэш-доступ к памяти через данные для чтения с помощью JTAG, SWV (серийный телезрителя провода), ДСО (серийный отладочный провод), ETM и граничное сканирование не допускаются

снятия защиты

Чтобы отключить прочитайте защиту от встроенной SRAM:

  • Удалите всю область байта опций. В результате код защиты чтения (RDP) будет равен 0xFF. На этом этапе защита чтения по-прежнему включена.
  • Запрограммируйте правильный код RDP 0x00A5 для снятия защиты с памяти. Эта операция сначала заставляет Mass Erase основной флэш-памяти.
  • Сбросьте устройство (POR Reset), чтобы перезагрузить байты опции (и новый код RDP) и , чтобы отключить защиту чтения.

Примечание: Защита чтения можно отключить с помощью загрузчика (в данном случае используется только система сброса необходимо перезагрузить опцию байт). Подробнее см. AN2606.

Существует также защита от записи на чипе, см. Документ.

Смежные вопросы