Как разблокировать и заблокировать защиту чтения памяти 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.


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

20072Эффект красоты решает исход собеседования до первых слов 20069Как черта характера крадёт деньги на переговорах 20068Карточная игра против главной дисфункции команды 20067Какие три нарратива способны провести компанию сквозь любой кризис? 20066Фотосинтез в глазах мышей: возможно ли это без превращения в растение? 20065СПКЯ стало СПМЯ: почему переименование болезни, затрагивающей миллионы женщин, заняло так... 20064Почему великая пирамида Гизы пережила все землетрясения за 4500 лет 20063Генетика Homo erectus: что зубная эмаль рассказала о наших предках 20062Кости в бухте Эребус: что кости моряков Франклина рассказывают спустя полтора века 20061Крупнейший плавучий ветрогенератор в мире: Китай испытывает установку у берегов Шанхая 20060Карие глаза младенца стали индиго после лечения от COVID-19 20058Почему серебряная чаша с Афиной пролежала в немецком лесу две тысячи лет? 20057Дыра в атмосфере солнца: вспышка достигла пика и может зажечь полярное сияние 20056Динго возрастом 950 лет: кто и зачем кормил могилу животного сотни лет?
Ссылка