makc 85 February 15, 2021 Posted February 15, 2021 · Report post Всем привет! Имеется МК 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 Можно ли его вернуть к жизни и перепрошить или теперь только в морг? Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 56 February 15, 2021 Posted February 15, 2021 · Report post ST-Link Utility скачайте, подключитесь ST-Link-ом. Все полечится. Ну или Вы пробовали после снятия блокировки тупо дернуть питание? Quote Share this post Link to post Share on other sites More sharing options...
makc 85 February 15, 2021 Posted February 15, 2021 · Report post Что такого волшебного может сделать эта утилита, чего не может сделать OpenOCD? У неё есть какие-то недокументированные возможности воздействия на МК? Питание после команды снятия блокировки я тоже пытался снимать и подавать снова. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 56 February 15, 2021 Posted February 15, 2021 · Report post Разбираться с нетипичным поведением я бы стал с помощью их родных утилит. Глянул RM на STM32F410, и как я понял, Flash-интерфейсы в разных МК довольно разные. Поэтому есть маааленькая такая вероятность, что в скриптах отладчика OpenOCD просто что-то не учли. Quote Share this post Link to post Share on other sites More sharing options...
makc 85 February 15, 2021 Posted February 15, 2021 · Report post Чуда не произошло. ST-Link + ST-LINK Utility не помогли. 44 минуты назад, Arlleex сказал: Поэтому есть маааленькая такая вероятность, что в скриптах отладчика OpenOCD просто что-то не учли. Я пробовал воспроизвести эту последовательность вручную, не полагаясь на то что делает драйвер флеша OpenOCD (stm32f2x). Но результат был тот же: option bytes "записывались" и после перезапуска терялись и RDP восстанавливался в прежнем виде. Quote Share this post Link to post Share on other sites More sharing options...
makc 85 February 15, 2021 Posted February 15, 2021 · Report post Дополнение: МК перепаял на новый, без проблем блокируется на чтение и потом разблокируется. Все, естественно, через OpenOCD. Т.е. дело не в плате (обвязке МК), а именно в самом контроллере. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 56 February 15, 2021 Posted February 15, 2021 · Report post О как. Интересно, конечно. А что в самой области байтов опций лежит? Там где RDP. Т.е. как я понял, Flash-память байтов опций физически не прошилась. Попробуйте вот еще что: стереть через встроенный загрузчик. Скачайте Flash Loader Demonstrator, загрузитесь из под системного загрузчика и установите в программе RDP Level 0. Quote Share this post Link to post Share on other sites More sharing options...
makc 85 February 15, 2021 Posted February 15, 2021 · Report post 22 минуты назад, Arlleex сказал: А что в самой области байтов опций лежит? Там где RDP. Т.е. как я понял, Flash-память байтов опций физически не прошилась. Да, впечатление именно такое. Т.е. он при старте снова оттуда читает значения, которые соответствуют RDP1, в то время как делает вид, что всё записалось (в регистре всё правильно). Но попробовать сейчас не могу, плату забрали. А подопытного я пока отложил в сторону, может быть попозже попробую его запаять на какую-нибудь другую плату и проверить что там с ним. Хотя, повторюсь, 99% в области option bytes лежит всё то же самое. 24 минуты назад, Arlleex сказал: Попробуйте вот еще что: стереть через встроенный загрузчик. На этой плате BOOT0 жестко запаян на землю и там к нему не подберешься, т.к. линия идёт под корпусом, а плату портить не хочется. Quote Share this post Link to post Share on other sites More sharing options...
Andrey190 1 February 16, 2021 Posted February 16, 2021 · Report post было похожее с STM32G. ST-LINK Utility не помогли, зато помог STM32CubeProgrammer. не знаю что именно там сделано по другому, но помог. Quote Share this post Link to post Share on other sites More sharing options...
makc 85 February 16, 2021 Posted February 16, 2021 · Report post Через bootloader или через STLINK? Quote Share this post Link to post Share on other sites More sharing options...
Andrey190 1 February 16, 2021 Posted February 16, 2021 · Report post 46 minutes ago, makc said: Через bootloader или через STLINK? ST Link Quote Share this post Link to post Share on other sites More sharing options...