STM32CubeIDE может только fla sh один раз, без отладки SWD - PullRequest
1 голос
/ 24 марта 2020

В течение нескольких лет я использовал онлайновый компилятор mbed для создания .bin-файлов, а затем набирал их sh в командной строке следующим образом, используя USB-ключ ST-LINK / V2, и все работает без нареканий. :

st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000

Сегодня я скачал STM32CubeIDE для Linux (Fedora 30) и начал изучать это руководство, используя клен mini (STM32F103CBT6).

https://www.digikey.co.nz/en/maker/projects/getting-started-with-stm32-introduction-to-stm32cubeide/6a6c60a670c447abb90fd0fd78008697

После сборки проекта и запуска отладочного прогона я получаю вывод:

STMicroelectronics ST-LINK GDB server. Version 5.3.2
Copyright (c) 2019, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                        STM32CubeProgrammer v2.2.0                  
      -------------------------------------------------------------------



Log output file:   /tmp/STM32CubeProgrammer_2ZxzGk.log
ST-LINK SN  : 34006B063058373138650943
ST-LINK FW  : V2J34S7
Voltage     : 3.21V
SWD freq    : 4000 KHz
Connect mode: Under Reset
Reset mode  : Hardware reset
Device ID   : 0x410
Device name : STM32F101/F102/F103 Medium-density
Flash size  : 64 KBytes
Device type : MCU
Device CPU  : Cortex-M3



Memory Programming ...
Opening and parsing file: ST-LINK_GDB_server_Q2zZSF.srec
  File          : ST-LINK_GDB_server_Q2zZSF.srec
  Size          : 4648 Bytes
  Address       : 0x08000000 


Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 4]
Download in Progress:


File download complete
Time elapsed during download operation: 00:00:00.595



Verifying ...




Download verified successfully 


Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Error! Failed to read target status 
Debugger connection lost.
Shutting down...

После этого я больше не могу начинать сеанс отладки, потому что получаю это:

enter image description here

Я вижу, что светодиод мигает, как и ожидалось, поэтому я знаю, что программа на самом деле мигала на плату в порядке. Но я больше ничего не могу сделать с STM32CubeIDE, и когда я пытаюсь набрать sh через командную строку, как раньше, теперь это тоже не работает:

[root@localhost Downloads]# st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000 
st-flash 1.5.1-38-gc3577b5
2020-03-24T13:51:09 INFO common.c: Loading device parameters....
2020-03-24T13:51:09 WARN common.c: Invalid flash type, please check device declaration
  core status: unknown
Unknown memory region

К счастью, я могу вернуться к своему старту укажите ST-Link UTILITY (на Windows) и удерживайте кнопку сброса перед подключением, затем выполните полное стирание, как указано здесь:

http://www.kerrywong.com/2012/08/02/the-dreaded-cannot-connect-to-st-link-error-message/

Но очевидно, что это не жизнеспособная ситуация для достижения какого-либо продуктивного развития. Что я делаю не так?

На вкладке «Отладчик» диалогового окна «Конфигурация отладки» я попытался установить «Интерфейс» как SWD (это уже было на самом деле), а также я попробовал все варианты для «Сброс поведения», без изменений в результате.

1 Ответ

2 голосов
/ 24 марта 2020

Почему это всегда происходит? Я борюсь с чем-то в течение нескольких часов, затем провожу еще 20 минут, составляя как можно более краткий и ясный вопрос со скриншотами et c, затем через две минуты после публикации я нахожу ответ, обычно в другом SO-ответе, который я как-то никогда не видел в часах поиска. Я думаю, что примерно половина вопросов, которые я задал для SO, закончилась таким образом.

Проблема, похоже, заключается в том, что если вы не заявите, что хотите использовать SWD и на каких выводах, он не будет включен дефолт. Поэтому, как только новая программа будет мигать, SWD-соединение прекратит работу. Я полагаю, что программа mbed по умолчанию сохраняет использование SWD на стандартных выводах, поэтому это никогда не было проблемой.

В любом случае, чтобы избежать этого, go вернитесь к распиновке и конфигурации (дважды щелкните по. io c файл в проводнике проекта). Установите соответствующие выводы для SWD (PA13, PA14 в моем случае) и в разделе «Системное ядро» нажмите SYS и установите для параметра «Отладка» значение «Последовательный провод».

enter image description here

...