Привет,
Я пытаюсь прошить плату STM32F103 через SWD с платой обнаружения STM32F407. К сожалению, это не работает только с платой STM32F103.
st-flash
Вывод:
st-flash write prog.bin 0x8000000
2017-01-24T18:44:14 INFO src/stlink-common.c: Loading device parameters....
2017-01-24T18:44:14 INFO src/stlink-common.c: Device connected is: F1 High-density device, id 0x10036414
2017-01-24T18:44:14 INFO src/stlink-common.c: SRAM size: 0x10000 bytes (64 KiB), Flash: 0 bytes (0 KiB) in pages of 2048 bytes
Как видите, он выдает что-то неожиданное вроде
Flash: 0 bytes (0 KiB) in pages of 2048 bytes
st-info --probe
Found 1 stlink programmers
serial: 303030303030303030303031
openocd: "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31"
flash: 0 (pagesize: 2048)
sram: 65536
chipid: 0x0414
descr: F1 High-density device
Кто-нибудь знает, как это решить.
Заранее спасибо.
Решается с помощью утилиты ST Link.
плата была _защищена от записи_
Спасибо за ваш отчет, я думаю, что добавлю это в документы, чтобы другие люди не ошиблись с этим.
Привет, ты можешь помочь мне в этом? Как отключить защиту от записи? Я использую Mac OS X. Официальная утилита St-link предназначена только для Windows, верно?
Вероятно, вы могли бы сначала выполнить массовое стирание, и я подумал, что тогда защита от записи будет снята. Или с помощью некоторых команд openocd (у него больше возможностей, чем у texane/stlink).
Спасибо за быстрый ответ. Пробовал стирать флешку, помогло. Однако проблема остается. Я попытаюсь использовать какой-нибудь компьютер с Windows, чтобы посмотреть, что произойдет. :\
Вы видели это в README?
https://github.com/texane/stlink/commit/0f9e4990ba0cdc295875b219b354fdf42f30a9aa
При использовании OpenOCD вы, вероятно, могли бы вызывать команды monitor stm32f1x unlock 0
(не проверено). См. http://openocd.org/doc/html/Flash-Commands.html.
Я запустил утилиту ST-LINK (в Windows) и перешел в Target > Option Bytes... > Disable Read Out Protection (поле со списком). Готово, проблема решена.
Я мог найти подсказку об отключении защиты от считывания с помощью openOCD по этой ссылке: http://www.openstm32.org/forumthread562. Я использую китайскую плату Blue Pill Stm32F103c8t6. Просто необходимо добавить строку "monitor flash protect 0 0 11 off" в скрипт инициализации openOCD. [Не проверено]
Привет, мне удалось разблокировать bluepills stm32, используя следующие команды в сеансе терминала openocd:
сбросить остановку
флэш-банки
stm32f1x mass_erase 0
stm32f1x разблокировать 0
После этого устройство было снова готово к программированию.
@jeroavf Спасибо! Это сработало для меня, и --probe
теперь возвращает 65536
(похоже, я получил одну из немногих моделей на 64 КБ), а также корректно мигает.
Забавно, при выполнении шага mass_erase
он даже думает, что это 128 КБ, но это неважно.
STM32 flash size failed, probe inaccurate - assuming 128k flash
flash size = 128kbytes
Спасибо, мне удалось разблокировать некоторые STM32F437 с полным стиранием чипа с помощью утилиты Windows ST-Link, теперь это снова работает на Linux st-link :-)
Самый полезный комментарий
Привет, мне удалось разблокировать bluepills stm32, используя следующие команды в сеансе терминала openocd:
После этого устройство было снова готово к программированию.