Почему ST-LINK подключается к STM32, но не может прочитать или записать флеш?
Обновлено Редакция GAW
Если ST-LINK видит микроконтроллер — идентификатор читается, ядро останавливается, — но чтение флеш-памяти, проверка или запись заканчиваются ошибкой, первая гипотеза — защита от чтения (RDP). Она не мешает подключению к ядру, а закрывает именно память.
Уровни защиты
| Уровень | Значение RDP | STM32F1 | STM32F4 | Что можно |
|---|---|---|---|---|
| 0 | 0xA5 (F1) / 0xAA (F4) | нет защиты | нет защиты | всё |
| 1 | любое другое | флеш-память не читается снаружи | флеш-память и backup SRAM недоступны снаружи | снять с полным стиранием |
| 2 | 0xCC (F4) | — | SWD и JTAG отключены навсегда | ничего снаружи |
Как вернуть микроконтроллер
- Подключитесь в STM32CubeProgrammer с режимом Connect under reset.
- Переведите RDP на уровень 0: на вкладке байтов конфигурации или командой
-rdu(UM2237, разд. 3.2.17). - Микроконтроллер сам сотрёт всю основную флеш-память — у STM32F4 ещё и backup SRAM — и только потом снимет защиту.
- Отключите питание платы и подключитесь снова: PM0075 требует сброса по питанию, если защиту меняли при подключённом отладчике.
Если после этого запись всё равно не идёт, проверьте защиту от записи — разбор в ответе «Как снять защиту от записи с STM32F103». Подробнее о защите от чтения — в словаре, о том, почему защищённую прошивку не скопировать, — в ответе «Можно ли считать прошивку из STM32 с защитой».
Похожие вопросы
Как защита включилась, если я её не ставил?
Например, при стирании байтов конфигурации, если после него RDP не записали заново до сброса: у STM32F1 и STM32F4 стёртое значение RDP означает защиту уровня 1. Её могла поставить и прошивка или фабричный загрузчик готового устройства — так производители закрывают свою программу.
Что будет, если чип на уровне 2?
Подключиться по SWD не получится вовсе: уровень 2 отключает JTAG и SWD навсегда, и RM0090 называет его необратимым. Программа в такой микросхеме продолжит работать, но перепрошить её можно только загрузчиком, который заложен в самой программе.
Можно ли сначала прочитать прошивку, а потом снять защиту?
Нет. Пока защита включена, флеш-память снаружи не читается, а при её снятии микроконтроллер стирает память раньше, чем изменит уровень. Подробно — в отдельном ответе о чтении прошивки с защитой.
Источники
- STMicroelectronics. RM0090 Reference manual STM32F405/415, F407/417, F427/437, F429/439, Rev 21 (June 2024) — разд. 3.7.3: уровень 0 — RDP = 0xAA; уровень 1 — любое другое значение кроме 0xAA и 0xCC, он же состояние после стирания байтов конфигурации: при подключённой отладке и загрузке из RAM или загрузчика доступа к флеш-памяти и backup SRAM нет, чтение даёт ошибку шины; переход 1 → 0 стирает флеш-память пользователя и backup SRAM, остальные байты конфигурации и OTP не меняются; уровень 2 — RDP = 0xCC, необратим, JTAG/SWD отключены
- STMicroelectronics. PM0075 STM32F10xxx Flash memory microcontrollers, programming manual (Doc ID 17863 Rev 2, August 2012) — разд. 2.4.1: при защите чтение флеш-памяти через JTAG/SWD запрещено, программа из флеш-памяти работает; снятие — RDP = 0x00A5, перед этим автоматически стирается вся основная память; если защиту включали при подключённом отладчике — сброс по питанию; снять можно и встроенным загрузчиком (AN2606)
- STMicroelectronics. UM2237 STM32CubeProgrammer software description, Rev 29 (November 2025) — разд. 3.2.17 — команда -rdu, --readunprotect: снять защиту чтения, перевести RDP с уровня 1 на уровень 0; подключение под сбросом
Нашли ошибку?
Смотрите также
- Защита от чтения (RDP)Запрет чтения прошивки STM32 отладчиком и загрузчиком
- Можно ли считать прошивку из STM32 с защитой от чтения?Нет: снятие RDP стирает флеш, уровень 2 необратим
- Как снять защиту от записи (WRP) с STM32F103?Стереть байты и сразу вернуть RDP = 0xA5; флеш стирается, только если защита чтения уже была
- STM32CubeProgrammer и ST-LINKПрошивка STM32: ST-LINK и загрузчик, команды CLI, option bytes, RDP, ошибки
- Что делать, если ST-LINK пишет «No target connected»?Питание и земля, SWDIO/SWCLK, напряжение VTref, частота SWD, подключение под сбросом