Ошибка «Error occurred during flash mass erase» появляется в STM32CubeProgrammer или ST-LINK Utility в момент попытки полностью стереть Flash-память микроконтроллера STM32 — и чаще всего её причина кроется не в «сдохшем» чипе, а в активированной защите от чтения RDP (Readout Protection) или в некорректном подключении отладчика. Массовое стирание — первое действие любой прошивки, поэтому сбой на этом этапе полностью блокирует работу с устройством.
Проблема встречается как у любителей, прошивающих STM32F103 на «blue pill» через китайский клон ST-Link V2, так и у тех, кто восстанавливает кастомные платы после неудачной прошивки. Хорошая новость: в большинстве случаев микроконтроллер остаётся живым, и ошибку удаётся устранить программными методами. Разберём причины по порядку — от самых простых к более сложным.
Что означает эта ошибка
Команда Mass Erase инициирует полное стирание всех секторов Flash-памяти микроконтроллера. Контроллер Flash внутри чипа может отклонить эту команду, если действует защита, если ядро занято исполнением кода из Flash или если отладчик потерял связь с ядром в процессе операции.
Важно отличать эту ошибку от проблем соединения на уровне SWD: если STM32CubeProgrammer вообще не видит чип («No target connected»), это другая история. Здесь же подключение есть, ID микроконтроллера читается, но стирание завершается сбоем. Это сужает круг подозреваемых до защиты памяти, состояния option bytes и стабильности самого сеанса отладки.
💡Ошибка mass erase при успешном подключении к чипу почти всегда указывает на защиту RDP, проблемные option bytes или нестабильный сеанс SWD — а не на физическую неисправность микроконтроллера.