Stlink: STM32L422CB:st-flashがihexイメージのフラッシュに失敗する

作成日 2020年04月12日  ·  12コメント  ·  ソース: stlink-org/stlink

小さなhexファイルをSTM32L422CBにフラッシュしようとしています。 16進ファイルは問題なく、st-linkユーティリティで正常にフラッシュします。 st-flashは、フラッシュの最初の2kbページを正常に消去しますが、16進ファイルをまったく書き込みません。

  • プログラマー/ボードタイプ:STLink V2
  • プログラマーファームウェアバージョン:V2.J34.S7
  • オペレーティングシステムとバージョン:Windows 10
  • Stlinkコマンドラインツール名:st-flash v.1.6.0
  • ターゲットチップ(および該当する場合はボード):STM32L422CB

さらに、次のテンプレートを使用して、検出された問題を可能な限り詳細に説明し、可能な場合はデバッグ出力を追加するようお願いします。

コマンドライン-出力:

PS C:\Users\xxx\Documents\Code\Test> st-flash --format ihex write ./build/test.hex
st-flash 1.6.0
2020-04-12T18:28:57 INFO common.c: Loading device parameters....
2020-04-12T18:28:57 INFO common.c: Device connected is: L41x device, id 0x10006464
2020-04-12T18:28:57 INFO common.c: SRAM size: 0xa000 bytes (40 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 2048 bytes
2020-04-12T18:28:57 INFO common.c: Attempting to write 592 (0x250) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08000000 erased
2020-04-12T18:28:57 INFO common.c: Finished erasing 1 pages of 2048 (0x800) bytes
2020-04-12T18:28:57 INFO common.c: Starting Flash write for F2/F4/L4
2020-04-12T18:28:57 INFO flash_loader.c: Successfully loaded flash loader in sram
enabling 32-bit flash writes
size: 592
2020-04-12T18:28:57 INFO common.c: Starting verification of write complete
2020-04-12T18:28:57 ERROR common.c: Verification of flash failed at offset: 0
stlink_fwrite_flash() == -1
PS C:\Users\xxx\Documents\Code\Test>

期待/説明:

Should flash the hex file without errors

buneeds-fix componenst-flash needinvestigation owindows programmestlinkv2 targestm32l4

全てのコメント12件

誰がこれを詳しく見ることができますか?

これがハードウェアの問題ではないことを確認できるように、同じボードと他のフラッシュツールで確認することをお勧めします。
検証は最初は失敗したため、ハードウェアの問題でない場合は、フラッシュローダーに問題がある可能性があります。 残念ながら、フラッシュローダーのエラーコードチェック(可能な場合)は、ほとんどのモデルに適用されていません。 フラッシュが失敗した後、 st-utilと( gdbまたはlldb )を使用して、すべてのレジスタ値を出力することをお勧めします。

私は本物のstlinkv2と中国からのそれらの安いコピーの1つの両方で試しました。 両方で失敗します。 後でもう少し時間があれば、レジスターを調べます。

私が言及した「フラッシュツール」は、openocdまたはSTによる公式ツールを指します。 あいまいな表現でごめんなさい。 レジスタ値を確認するときは、STM32_FLASH_REGS_BASE + 0x10にあるSTM32_FLASH_SRレジスタ値を出力することをお勧めします。 STM32_FLASH_REGS_BASEは、STM32L4では0x40022000です。

返信が遅くなってすみません。
サイズの異なるいくつかの異なる16進ファイルをフラッシュしようとしましたが、st-flashは必要なページを正常に消去します(st linkユーティリティでメモリの内容を調べることで確認できます)が、最初の投稿で述べたようにフラッシュに失敗します。
st linkユーティリティで16進数をフラッシュするか、st dfuツールで対応するdfuをフラッシュすると、フラッシュは成功するので、ハードウェアの問題ではないと思います。

STM32_FLASH_SRの読み取り値は次のとおりです。
grafik

手がかりは、FLASH_SRがPGSERRとPGAERRが設定されていることを示していることです。つまり、いくつかの配置の問題があります。 プログラミングが失敗した後に汎用レジスタ値を提供でき(接続前にボードをリセットせずにgdbinfo registersを使用)、 --debug st-flashを起動できる場合で、デバッグログとレジスタ値でさらに調査できると思います。

編集:フラッシュする前にSTM32_FLASH_SRの元の値を提供できればより良いでしょう。

grafik

これらは、フラッシュに失敗した後のレジスタです(リセットせずに接続されています)。

ここでは、-debugが設定された出力を示します。
log.txt

私が受け取ったメールの@ lulle2007200は、—debugを使用するとエラーなしで点滅すると述べています。 あなたがそれを編集したことに気づきました。
デバッグをオンにして、フラッシュは実際に成功しましたか?

もしそうなら、それはf0シリーズのそれと同じようにタイミングの問題かもしれません。

ログから、実行する前に問題がないようです。 汎用レジスタは、説明が難しい値を保持します。 r0が最初にゼロだった場合、レジスタに値を書き込む関数に問題があるのではないでしょうか。

それは機能しませんでした、私はst-flashの出力をファイルにリダイレクトしようとしているときに混乱しました。 まったく実行されなかったことが判明しましたが、st linkutiltyを使用する前にフラッシュしていました...
また、誤ってコメントではなく、閉じてコメントしました。混乱してすみません。
明日もう一度見てみます。

@ lulle2007200 :これに関する更新はありますか?

私はこれをちょっと忘れました、人生は邪魔になりました。
st-flashは、提供されたhexファイルの消去とフラッシュに失敗します。
サイズの異なる複数のファイルがありますが、どのファイルでも機能しません。 公式のST-Linkユーティリティでそれらをフラッシュすることは完全にうまくいくことに注意してください。
フラッシュ試行の前後の両方で、st-flash出力のログと汎用レジスタおよびSTM32_FLASH_SRの値を添付しました。
log.txt
Regs

今、私たちは、L4シリーズに何とか精通している熟練した開発者を探しています。

このページは役に立ちましたか?
0 / 5 - 0 評価