数年前から、mbedオンラインコンパイラーを使用して.binファイルを作成し、ST-LINK/V2 USBドングルを使用して、次のようにコマンドラインでフラッシュしました。すべて正常に機能します。
st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000
今日、私はSTM32CubeIDE for Linux(Fedora 30)をダウンロードし、maple mini(STM32F103CBT6)を使用してこのチュートリアルを開始しました。
プロジェクトをビルドしてデバッグ実行を開始すると、次の出力が得られます。
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...
その後、これを取得したため、デバッグセッションを開始できなくなりました。
LEDが期待どおりに点滅しているのが見えるので、プログラムが実際にボードにフラッシュされていることがわかります。しかし、STM32CubeIDEではこれ以上何もできません。以前と同じようにコマンドラインからフラッシュしようとすると、次のように機能しなくなります。
[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に設定しようとしました(すでに実際に使用されていました)。また、「動作のリセット」のすべてのオプションを試しましたが、結果は変わりません。
なぜこれが常に起こるのですか?私は何かに数時間苦労し、スクリーンショットなどでできる限り簡潔で明確な質問を作成するためにさらに20分費やし、投稿後2分で通常は別のSO何時間もの検索で何とか見たことがないと答えます。私が尋ねた質問の約半分はSOがこのように終わったと思います。
問題は、SWDを使用することを宣言しない限り、どのピンでSWDがデフォルトで有効にならないことです。そのため、新しいプログラムがフラッシュされるとすぐに、SWD接続が停止します。私は、mbedプログラムがデフォルトで標準ピンでのSWDの使用を保持しているため、問題が発生することはなかったと思います。
とにかくこれを回避するには、ピン配置と構成に戻ります(プロジェクトエクスプローラーで.iocファイルをダブルクリックします)。 SWDの適切なピン(私の場合はPA13、PA14)を設定し、[システムコア]で[SYS]をクリックして、[デバッグ]オプションを[シリアルワイヤー]に設定します。
はい、それは正しいiforce2dです(ところで、私はあなたのYouTube – RCビデオを楽しんでいます)。シリアルワイヤデバッグを有効にしたら、ST-Linkユーティリティを使用してすべてを最初に消去する必要なく、新しいプログラムをボード(IDE内)にフラッシュできます。
次の手順に従ってください:
STM32でSWDピンが有効になっているプログラムを取得すると、「ロックアウト」されることがなくなるため、この後にBOOT0を再度使用する必要はありません…