2017-06-06 9 views
1

は、私は私はSTM32F103を持って失敗した再点滅リモートで(ブートローダーを使用して)そのUARTポートによって異なるMCUを使用しました。それは完璧に動作します、私は正常に正しいコードでフラッシュされている複数のデバイスがあります。しかし時には、STM32コードがフラッシュされているために動作しなくなったデバイスが、正しいものではありません。ビンファイル全体が他のMCUを使用してフラッシュされますが、STMはレンダリングされます(正確にレンガではなく、間違ったコードを持っています)。私のPCを使ってデバイスを再びフラッシュすると、すべてが再び作動しています。なぜヘックスはSTMに書いて失敗するのだろうか?STM32は(UART1)

ブリーフ:STM32F103

をフラッシュするUARTブートローダを使用して

* *時々、このメソッドは失敗し、そのSTMの機能が停止しました。

*コードスペースに書き込まれたデータが有効かどうかを確認する方法はありますか? STMはさて、ロックされていない

は*、それはフラッシュの内側だけで間違ったコードです。私がコードスペースからフラッシュを読み返すと、これはフラッシュされたはずのファイルよりも小さくなります。

*システム起動モードでSTMを使用しています。 [AN2606]

+0

これはあなたのブートローダですか、それとも内蔵ですか?どのようにしてレンガ造りにすることができますか?これはSOの質問ではないソフトウェア/ツールの質問のように聞こえる。 STブートローダと対話する独自のブートローダやツールを作成しましたか?または、単にシェルフツールを使用していますか? –

+0

こんにちはold_timer、私はinbuiltブートローダを使用して、システムブートモードでSTMを使用しています。上記の私の編集で述べたように、私は(今すぐ)フラッシュを読んで、STMのフラッシュコードが私の持つコード(ビンファイル)と同じサイズではないことがわかりました。それは約200(ish)バイト短いと思われる。 –

+0

どこが壊れているのですか?それは明らかな境界にあるのだろうか? (フラッシュブロック、最後に1つの完全なメッセージ/パケットのパケット、または途中のデータなど) –

答えて

0

ブートローダーコマンドを使用してSTM32のフラッシュで書き込まれたデータは、フラッシュするデータ(ビンファイル)の書き方だけで読み取ることができます。この方法で、フラッシュに書き込まれたデータ(または新しいコード)が元のバイナリファイルと同じかどうかを確認できます。再点滅は、これらの2つが一致した場合にのみ成功します。そうでないと、STM32を再点滅させることができます。

+0

それはかなりスマートです。はい、私はこれをすることができました、ありがとうございます。 –