На STM32-контроллере изменился chipid, не могу его сбросить

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
xintrea
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Вт ноя 11, 2014 22:38:33

На STM32-контроллере изменился chipid, не могу его сбросить

Сообщение xintrea »

Имею плату STM32F103C8T6 (Blue Pill).

После прошивки в контроллер DFU-бутлоадера и поигравшись немного с ним, решил прошить контроллер своей программой по-обычному, через ST-LinkV2 (SWD). Поставил boot-джамперы в положение 00, и попытался прошить через ST-Link. И каково же было мое удивление, что я этого сделать не могу по причине некорректного chipid.

До прошивки DFU-bootloaderа плата выдавала такие данные:

Код: Выделить всё

> st-info --probe
Found 1 stlink programmers
 serial: 132014026315303030303032
openocd: "\x13\x20\x14\x02\x63\x15\x30\x30\x30\x30\x30\x32"
  flash: 65536 (pagesize: 1024)
   sram: 20480
 chipid: 0x0410
  descr: F1 Medium-density device
А после работы с DFU-прошивкой плата стала выдавать такое:

Код: Выделить всё

Found 1 stlink programmers
 serial:     132014026315303030303032
 hla-serial: "\x13\x20\x14\x02\x63\x15\x30\x30\x30\x30\x30\x32"
 flash:      0 (pagesize: 0)
 sram:       0
 chipid:     0x0748
И в момент прошивки по SWD STLinkV2 дает теперь такую ошибку:

Код: Выделить всё

> st-flash --reset write myprogramm.bin 0x08000000
st-flash 1.6.1
2022-04-09T18:48:44 WARN common.c: unknown chip id! 0x3748
Failed to connect to target
(И что еще непонятно, в st-info виден идентификатор 0x0748, а флешер ругается на идентификатор 0x3748).

Начал искать советы, как сбросить плату. Советы были разные, ни один не сработал. Вот что я делал:

* * *

Вначале выставил boot-перемычки на boot0=1 и boot1=0 чтобы при старте платы не выполнялся левый код, переткнул плату в USB-гнезде и попытался обнулить FLASH. Но нет, такое не прокатывает:

Код: Выделить всё

> st-flash erase
st-flash 1.6.1
2022-04-09T18:57:41 WARN common.c: unknown chip id! 0x3748
Failed to connect to target
Пробовал с boot-перемычками в положении 00, тот же самый результат.

В конце концов заметил, что если нажать Reset и удерживать, плата начинает выдавать такую информацию о себе:

Код: Выделить всё

Found 1 stlink programmers
 serial:     132014026315303030303032
 hla-serial: "\x13\x20\x14\x02\x63\x15\x30\x30\x30\x30\x30\x32"
 flash:      61010944 (pagesize: 1024)
 sram:       20480
 chipid:     0x0410
 descr:      F1xx Medium-density
Странный размер FLASH, но зато chipid правильный. Удерживая Reset, дал команду очистки FLASH и она сработала:

Код: Выделить всё

> st-flash erase 
st-flash 1.6.1
INFO common.c: F1xx Medium-density: 20 KiB SRAM, 59581 KiB flash in at least 1 KiB pages.
Дальше перегрузил плату, но она все равно опять показывает flash:0, sram:0, chipid:0x0748. Я пытался проделать то же самое с boot-перемычками Boot0=1 Boot1=0, результат тот же.

Тогда при нажатом Reset я проверил, а что вообще в FLASH памяти есть:

Код: Выделить всё

> st-flash read firmware.bin 0x8000000 0x2000
> xxd firmware.bin
00000000: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000010: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000020: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000030: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000040: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000050: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000060: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000070: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000080: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
00000090: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ... 
000000a0: 08b5 1420 08b5 1420 08b5 1420 08b5 1420  ... ... ... ...
...
Прошивки уже нет. Но все равно плата показывает flash:0, sram:0, chipid:0x0748 пока не зажмешь Reset.

Я пробовал зажимать Reset до вставки ST-LinkV2 в USB, пробовал не зажимать, пробовал нажимать один раз, с разными положениями boot-перемычек, давал команды st-flash erase, st-flash reset, но все бестолку. Плата упорно показывает flash:0, sram:0, chipid:0x0748.

Вопрос: как, блин, эту плату можно сбросить? Чтобы вернулся нормальный id и правильный размер FLASH/RAM?
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: На STM32-контроллере изменился chipid, не могу его сброс

Сообщение Мурик »

Скачайте официальную утилиту и ее используйте для прошивки https://www.st.com/en/development-tools ... nk004.html
Если такая реакция на сброс, это означает что в МК есть прошивка, мешающая нормальной работе.
Реклама
xintrea
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Вт ноя 11, 2014 22:38:33

Re: На STM32-контроллере изменился chipid, не могу его сброс

Сообщение xintrea »

[uquote="Мурик",url="/forum/viewtopic.php?p=4212168#p4212168"]Скачайте официальную утилиту и ее используйте для прошивки https://www.st.com/en/development-tools ... nk004.html
Если такая реакция на сброс, это означает что в МК есть прошивка, мешающая нормальной работе.[/uquote]

Конечно, пробовал ей.
Она не может работать с устройством, говорит что ей chipid 0x0748 не нравится.
А если зажать и удерживать Reset, при котором chipid становится 0x0410, тогда говорит что не может прошить плату, потому что на плате зажат Reset.

Но в конце концов я сбросил контроллер, chipid восстановился, объем памяти FLASH/RAM стали правильные.

Вот здесь подробности: https://electronix.ru/forum/index.php?a ... &id=166052
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: На STM32-контроллере изменился chipid, не могу его сброс

Сообщение Eddy_Em »

Ты, похоже, не успеваешь reset отпустить.
Последовательность действий такая: выставляешь перемычки для загрузки из флеша (т.е. как обычно); набираешь в терминале нужную команду (скажем, сброс), затем зажимаешь reset на плате, жамкаешь enter и тут же отпускаешь reset.
Но проще поставить перемычки для загрузки с встроенного бутлоадера и почистить при помощи "родного" USART-бутлоадера. Некоторые БУшные МК, которые я покупал на али, только так и очищались (в прошивке еще и SWD был отключен, а с зажатым резетом почему-то не прокатывало).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5742
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: На STM32-контроллере изменился chipid, не могу его сброс

Сообщение >TEHb< »

Подключите сигнал RESET от программатора.
"Привет!" - соврал он.
Реклама
Ответить

Вернуться в «ARM»