makc 231 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба Всем привет! Имеется МК STM32F410CBU6, который в результате незафиксированного сбоя при прошивке получил блокировку чтения внутренней flash-памяти (RDP level 1). Содержимое регистра FLASH_OPTCR(0x40023c14) после включения питания 0x8fffffed. После попытки разблокировки в OpenOCD с помощью команды unlock: > stm32f2x unlock 0 stm32f2x unlocked. INFO: a reset or power cycle is required for the new settings to take effect. > mdw 0x40023c14 0x40023c14: 0fffaaed Т.е. по виду он разблокировался, однако после сброса (reset halt) он снова оказывается в защищенном состоянии: > reset halt adapter speed: 4000 kHz Handling examine-end event for target stm32f410cbu6.cpu target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc > mdw 0x40023c14 0x40023c14: 8fffffed При этом, естественно, никакие команды стирания не проходят: > stm32f2x unlock 0 stm32f2x unlocked. INFO: a reset or power cycle is required for the new settings to take effect. > reset halt adapter speed: 4000 kHz Handling examine-end event for target stm32f410cbu6.cpu target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc > stm32f2x mass_erase 0 stm32x device protected stm32x mass erase failed Можно ли его вернуть к жизни и перепрошить или теперь только в морг? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 189 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба ST-Link Utility скачайте, подключитесь ST-Link-ом. Все полечится. Ну или Вы пробовали после снятия блокировки тупо дернуть питание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба Что такого волшебного может сделать эта утилита, чего не может сделать OpenOCD? У неё есть какие-то недокументированные возможности воздействия на МК? Питание после команды снятия блокировки я тоже пытался снимать и подавать снова. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 189 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба Разбираться с нетипичным поведением я бы стал с помощью их родных утилит. Глянул RM на STM32F410, и как я понял, Flash-интерфейсы в разных МК довольно разные. Поэтому есть маааленькая такая вероятность, что в скриптах отладчика OpenOCD просто что-то не учли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба Чуда не произошло. ST-Link + ST-LINK Utility не помогли. 44 минуты назад, Arlleex сказал: Поэтому есть маааленькая такая вероятность, что в скриптах отладчика OpenOCD просто что-то не учли. Я пробовал воспроизвести эту последовательность вручную, не полагаясь на то что делает драйвер флеша OpenOCD (stm32f2x). Но результат был тот же: option bytes "записывались" и после перезапуска терялись и RDP восстанавливался в прежнем виде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба Дополнение: МК перепаял на новый, без проблем блокируется на чтение и потом разблокируется. Все, естественно, через OpenOCD. Т.е. дело не в плате (обвязке МК), а именно в самом контроллере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 189 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба О как. Интересно, конечно. А что в самой области байтов опций лежит? Там где RDP. Т.е. как я понял, Flash-память байтов опций физически не прошилась. Попробуйте вот еще что: стереть через встроенный загрузчик. Скачайте Flash Loader Demonstrator, загрузитесь из под системного загрузчика и установите в программе RDP Level 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 15 февраля, 2021 Опубликовано 15 февраля, 2021 · Жалоба 22 минуты назад, Arlleex сказал: А что в самой области байтов опций лежит? Там где RDP. Т.е. как я понял, Flash-память байтов опций физически не прошилась. Да, впечатление именно такое. Т.е. он при старте снова оттуда читает значения, которые соответствуют RDP1, в то время как делает вид, что всё записалось (в регистре всё правильно). Но попробовать сейчас не могу, плату забрали. А подопытного я пока отложил в сторону, может быть попозже попробую его запаять на какую-нибудь другую плату и проверить что там с ним. Хотя, повторюсь, 99% в области option bytes лежит всё то же самое. 24 минуты назад, Arlleex сказал: Попробуйте вот еще что: стереть через встроенный загрузчик. На этой плате BOOT0 жестко запаян на землю и там к нему не подберешься, т.к. линия идёт под корпусом, а плату портить не хочется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrey190 2 16 февраля, 2021 Опубликовано 16 февраля, 2021 · Жалоба было похожее с STM32G. ST-LINK Utility не помогли, зато помог STM32CubeProgrammer. не знаю что именно там сделано по другому, но помог. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 16 февраля, 2021 Опубликовано 16 февраля, 2021 · Жалоба Через bootloader или через STLINK? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrey190 2 16 февраля, 2021 Опубликовано 16 февраля, 2021 · Жалоба 46 minutes ago, makc said: Через bootloader или через STLINK? ST Link Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться