Как разблокировать и заблокировать защиту чтения памяти CH32V20x через OpenOCD?

Для микроконтроллеров WCH, работающих под Linux, существует метод разблокировки и блокировки защиты чтения памяти через OpenOCD, который расширяет стандартные возможности скрипта. Это достигается путем очистки области User Option Bytes и записи в поле RDPR значения 0xA5 для разблокировки, а для блокировки – сбросом области User Option Bytes. Для этого используются команды OpenOCD для чтения и записи регистров, а также созданные функции lock и unlock на языке Tcl.
Как разблокировать и заблокировать защиту чтения памяти CH32V20x через OpenOCD?
Изображение носит иллюстративный характер

Процедура разблокировки включает в себя проверку статуса защиты, разблокировку FLASH_CTLR и User Option Bytes, установку бита OBPG, запись значения 0xA5 в поле RDPR, а также ожидание завершения операции и верификацию. Функция lock аналогично проверяет статусы, разблокирует, устанавливает биты OBER и STRT для очистки, ожидает завершения, верифицирует результат и затем сбрасывает бит OBER.

Интеграция этих функций в скрипт OpenOCD позволяет вызывать их через IDE MounRiver, используя команды monitor lock и monitor unlock. Для автоматизированного процесса программирования со снятием и последующей установкой защиты можно использовать команды OpenOCD в командной строке.

Необходимо отметить, что значение байта RDPR после очистки области User Option Bytes может отличаться от указанного в документации (0xFF), принимая, например, значение 0x39 для ch32v203. Поэтому для микроконтроллера ch32v203 значение для lock должно быть 0xe339.


Новое на сайте

20371Apple почти год не могла закрыть дыру в Hide My Email, из-за которой утекали реальные... 20370Как рухнула криминальная империя фишинга, обслуживавшая 1800 «франчайзи» по всему миру? 20369Сколько времени осталось у защитников с тех пор, как патч стал инструкцией для атаки? 20367Почему GitHub одновременно урезает выплаты хакерам и открывает VIP-клуб для лучших из них? 20366Как одна HTTP-команда превращает обычный WordPress в открытую дверь для хакеров 20365Redis залатали семь дыр за один день — и это после того, как их нашёл искусственный... 20364Zimbra закрыла девять дыр в почтовом сервере, одна из них позволяла выполнять команды на... 20363Атака Bit2Watt: как обычный доступ к GPU превращается в оружие против энергосети 20362RefluXFS: как нейросеть Anthropic нашла в ядре Linux дыру, которая пряталась девять лет 20361Почему один патч не остановил атаки на серверы SharePoint? 20360Как одна ссылка превращает ChatGPT в шпиона внутри компании? 20359Кто оставил ИИ-агента без присмотра рыться в файлах минфина Таиланда? 20357Как опечатка в названии библиотеки превратилась в инструмент подтасовки ставок
Ссылка