STM32およびST-LINK-プログラミングが成功した後にMCUに接続できない


13

STM32F7-45VGT6を使用して独自のボードを構築しました。ST-LINK v2(元のバージョンではありません)で正常にプログラムしましたが、MCUに接続することもできません。

STとSWDインターフェースからST-Linkユーティリティを使用しています。SWDピンを出力として使用していて、コードでGPIO出力として設定している場合もあります。それは本当ですか?

それでも、リセットピンをGNDに接続し、ST-Linkユーティリティで[リセットで接続]オプションを設定しましたが、機能しません...どうすればよいですか?

インターネットでBOOT0ピンの使用について何かを見つけましたが、正確にはわかりません...


「SWDピンを出力として使用する場合もあります」ということは可能ですが、意図的にそうではないが、その結果、実際に発生するエラー。通常、これは、ハードウェアリセットがアサートされた状態で初期SWD接続を手動または自動で実行することで回復できます。SWDピンをI / Oとして使用する場合、その設定を行う前に数秒遅延させると開発が容易になりますが、それでもデバッガーを使用できないことを認識している場合。
Chris Stratton

回答:


21

私はなんとかその問題を解決しました。誰かが同様の問題に遭遇した場合、ここで私がやったことです:

ST-Link v2とST-Linkユーティリティを使用しました。設定では「Connect under reset」とSWDインターフェースを設定しました(周波数はわかりません)。
次に、ボードのリセットボタンを押して[ターゲット]-> [チップの消去]をクリックし、ボタンをクリックした直後にチップを消去して、MCUを再プログラムできるようにしました。


とにかく、SWDピンを出力として使用する必要がある場合は、プログラムの最初に遅延を追加するか、ジャンパーを使用して、これらのピンを出力として設定を無効または有効にします。


はい、SWDピンを別の目的で使用する場合、それはかなり予想されることです。経験上、意図的にそうしなかったSTM32デザインでも、SWDピンが応答しないモード(プログラムが破損している?)で「スタック」し、回復のためにそのような処理が必要になる場合があります。
Chris Stratton

1
Linuxでは、次のbashコマンドを使用してチップを消去しました:st-flash erase
nathan

消去チップは私にとってはうまくいきませんでした。[ターゲット]-> [セクターの消去]-> [すべて選択]-> [適用]に移動しました。この後、私は私のボードへのアクセスを取り戻しました。なぜチップ消去がうまくいかなかったのかよくわからない
アンドリュー

6

リセット下で接続するには、ST-Linkがリセットピンを制御できる必要があります。これをグランドに接続すると、ST-Linkはターゲットを実行してアクセスする機会がありません。


電源投入時にBOOT0ピンをHighにプルすると、MCUが内部ブートローダーを起動し、いくつかのシリアルプロトコルを使用してアクセスできます(詳細については、リファレンスマニュアルを参照してください)。

ブートローダー内では、SWDピンを使用してアクセスする必要がありますが、これについては100%確実ではありません。

ST フラッシュローダーデモンストレーターは、UARTインターフェイスを使用してマイクロを消去/プログラムできるツールです。microのUARTにアクセスできない場合、このソリューションは機能しません。


ブートローダーでサポートされているUSART3にアクセスできるので、後で試します-トリッキーになります。cosBOOT0がPCBのGNDに接続されています...しかし、何が問題なのか知りたいのですが。私は何をしたのですか?SWD / JTAGピンをmain()関数の出力として設定しました。しかし、マニュアルでは、リセット中にすべてのピンにデフォルトの機能があり、すぐに使用できると述べています。では、リセット時にフラッシュを消去できないのはなぜですか?U-LINK 2プログラマーとuVision 5もテストしました。保護レベルが設定されていないことを願っています。そのようなビットは設定していませんが、保護ビットが適切かどうかをテストする方法はありますか?
zupazt3

@ zupazt3失礼に聞こえるつもりはありませんが、最初の文をもう一度読んでください。リセット中の接続に関する問題への回答が含まれています。理解できない場合は、より具体的なコメントを投稿してください。
アーセナル

しかし、私はいつもそれを結び付けているわけではありません:)私の最初の投稿では、それが役立つかどうかを確認するために直接GNDに結び付けることもしました。しかし、通常はNRSTをGNDに接続するのではなく、プログラマーに接続するため、リセットを制御できます。そして、それはまだ接続しません。また、U-Link 2とKeil uVision 5を使用しようとしましたが、結果は同じでした。その理由は何ですか?
zupazt3

@ zupazt3それはあなたの質問からかなり明確ではなかった。ターゲットが出力に切り替わる前に接続を取得する可能性があるため、SWDクロックを増やすと役立つ場合があります。しかし、私は誤ってSWDピンを出力に設定し、ターゲットへの接続を取得できず、BOOT0を使用した場合のみ、それらを直接(抵抗なしで)グランドに接続した場合、これを回復できました。タフ。
アーセナル

1
なんとかチップを消した!ST-Linkユーティリティを使用-リセットボタンを押し、「完全消去」ボタンとリリースボタンをクリックすると、どういうわけかそれ自体が消去され、動作します。私は以前にそれを試しましたが、今だけそれはうまくいきました。
zupazt3

3

stmcubemxを使用している場合、シリアルワイヤをstmcubeピン配置タブで構成する必要があります。ピン配置タブで、SYSをクリックし、デバッグオプションをシリアルワイヤに変更します。それは私の問題を修正し、おそらくあなたの問題も修正します。


これは問題になる可能性がありますが、SWDピンを電源投入時のデフォルトのSWDモードのままにしておくことがこのソフトウェアスイートのデフォルト設定ではない場合、バグレポートと修正が必要なかなり深刻なユーザビリティの欠陥であると考えられます。設定を元の値から変更していないか、またはデフォルト以外の方法でこれらのピンを使用する必要がある特定のプロジェクトから始めていませんか?
Chris Stratton 2017年

まず、ピンをSYS_SW ....に設定しましたが、オレンジ色になっています。また、コードをアップロードした後、チップへの接続に問題がありました。SYS-Serial Wireでデバッグモードを選択すると、フレーミング後にチップが正常に接続されます。
gtu

1

自分のSTM32F427ボードにコードをダウンロードしました。その後、ST-LINKユーティリティを使用してボードに接続できなくなりました。私のコードはデバッグポートのピン構成を混乱させていると思います(?確認できません)。私がしたことは、接続を作成してボードを再プログラムするための次のとおりです。

  1. ST-LINKユーティリティを開き、[ターゲット]メニューで「接続」の準備をします。
  2. ボードの電源を入れ(私の場合はUSBケーブルを使用)、同時にST-LINKユーティリティの[接続]をクリックします。

このトリックで2枚のボードを復元しました。お役に立てれば。 - ボブ


1

ディリが言ったように:

stmcubemxを使用している場合、シリアルワイヤをstmcubeピン配置タブで構成する必要があります。ピン配置タブで、SYSをクリックし、デバッグオプションをシリアルワイヤに変更します。それは私の問題を修正し、おそらくあなたの問題も修正します。

STM32CubeMxはデフォルトではデバッグポートを設定しないため、コードをフラッシュするとST-Linkが機能しなくなります。たとえば、ST-linkユーティリティを使用してチップを消去する必要があります。MCUと接続するには、起動中にBOOT0ピンをHighにして、ブートローダーをアクティブにする必要がありました。次に、TarjetメニューErase chip移動します


0

MCUを再プログラムするには、リセットボタンを押したままST-Linkユーティリティでデバイスへの接続を選択するか、IDE(Keilなど)でダウンロードを押してから、リセットボタンを離します。


-1

ブートピン(一部のバージョンではビット)は、デバッガーの起動を妨げる可能性があります。起動時にブートパターンを実装しないでください(boot0およびboot1ピンに特定のバイナリパターンが実装されています)。そうしないと、MCUがブート状態になります。


boot0ピンをGNDに接続しました...書いた内容がわかりません。先ほど言ったように、フラッシュを正常にプログラムでき、プログラムは引き続きMCUで実行されるため、STでMCUに接続できません。 -SWDインターフェースを介したリンク。リセット中はブートを実行せず、ピンはデフォルトの状態になっているはずなので、接続しない理由がわかりません。
zupazt3

よろしいですか?リセットの操作では無効にできない方法でSWDを無効にする組み合わせはどれですか。
Chris Stratton、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.