Stlink: STM32L476ディスカバリー:st-flashが書き込みに失敗しました

作成日 2020年06月13日  ·  5コメント  ·  ソース: stlink-org/stlink

stlinkプロジェクトにフィードバックをお寄せいただきありがとうございます。

開発者や他の寄稿者がそれぞれの問題を切り分けてターゲットにできるようにするために、特定の問題に適した次の各項目に記入してください。

  • プログラマー/ボードタイプ:Stlink / v2-1
  • プログラマーファームウェアバージョン:STM32L476DISCOVERYと統合されたバージョン
  • オペレーティングシステムとバージョン:Linux 5.5.0-1-amd64
  • Stlinkツールのバージョンおよび/またはgitcommitハッシュ:v1.6.1(リリース.tar.gzから)
  • Stlinkコマンドラインツール名: st-flash
  • ターゲットチップ(および該当する場合はボード):STM32L476 DISCOVERY

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

コマンドライン-出力:

tabemann<strong i="18">@sirius</strong>:~/projects/zeptoforth$ st-flash write zeptoforth.bin 0x08000000
st-flash 1.6.1
2020-06-12T22:42:05 INFO common.c: L4xx: 96 KiB SRAM, 1024 KiB flash in at least 2 KiB pages.
file zeptoforth.bin md5 checksum: d1e51663b9f8971cf1167145c9e76850, stlink checksum: 0x001cfa29
2020-06-12T22:42:05 INFO common.c: Attempting to write 23324 (0x5b1c) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Page:0x0 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08000000 erased
EraseFlash - Page:0x1 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08000800 erased
EraseFlash - Page:0x2 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08001000 erased
EraseFlash - Page:0x3 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08001800 erased
EraseFlash - Page:0x4 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08002000 erased
EraseFlash - Page:0x5 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08002800 erased
EraseFlash - Page:0x6 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08003000 erased
EraseFlash - Page:0x7 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08003800 erased
EraseFlash - Page:0x8 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08004000 erased
EraseFlash - Page:0x9 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08004800 erased
EraseFlash - Page:0xa Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08005000 erased
EraseFlash - Page:0xb Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08005800 erased
2020-06-12T22:42:06 INFO common.c: Finished erasing 12 pages of 2048 (0x800) bytes
2020-06-12T22:42:06 INFO common.c: Starting Flash write for F2/F4/L4
2020-06-12T22:42:06 INFO flash_loader.c: Successfully loaded flash loader in sram
size: 23324
2020-06-12T22:42:06 ERROR flash_loader.c: flash loader run error
2020-06-12T22:42:06 ERROR common.c: stlink_flash_loader_run(0x8000000) failed! == -1
stlink_fwrite_flash() == -1

期待/説明:

そのst-flashは、zeptoforth.binをSTM32L476MCUのフラッシュメモリに0x08000000で正常に書き込みます。

注意:十分な情報が提供されていない場合、このバグレポートは予告なしに終了する場合があります。

ご支援いただきありがとうございます。

stlinkプロジェクトのメンテナ

bufixed buregression componenst-flash componenstlink-lib erroflash-loader programmestlinkv2-1 staturesolved targestm32l4

最も参考になるコメント

NucleoSTM32L476RGボードとそのオンボードST-LINK / V2-1を使用して、開発ブランチでパッチをテストしました。 パッチはリグレッションを修正しました。 これを調べてくれてありがとう。

全てのコメント5件

Nucleo L476RGボードで同じリグレッションが発生し、stlink 1.5.0と1.6.0の両方が機能しますが、gitの最新バージョンでは次の出力が生成されます(USBログメッセージをstdoutにスパムするのを停止した後)。

st-flash 1.6.0-370-g05f79e1-dirty
2020-06-13T07:03:42 INFO common.c: L4xx: 96 KiB SRAM, 1024 KiB flash in at least 2 KiB pages.
file /home/crest/mecrisp-stellaris-2.5.4/mecrisp-stellaris-source/stm32l476-ra-nucleo/mecrisp-stellaris-stm32l476.bin md5 checksum: 2a291252c8ab59ec649217f666b78d4, stlink checksum: 0x001f2ba2
2020-06-13T07:03:42 INFO common.c: Attempting to write 20304 (0x4f50) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Page:0x0 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08000000 erased
EraseFlash - Page:0x1 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08000800 erased
EraseFlash - Page:0x2 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08001000 erased
EraseFlash - Page:0x3 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08001800 erased
EraseFlash - Page:0x4 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08002000 erased
EraseFlash - Page:0x5 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08002800 erased
EraseFlash - Page:0x6 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08003000 erased
EraseFlash - Page:0x7 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08003800 erased
EraseFlash - Page:0x8 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08004000 erased
EraseFlash - Page:0x9 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08004800 erased
2020-06-13T07:03:42 INFO common.c: Finished erasing 10 pages of 2048 (0x800) bytes
2020-06-13T07:03:42 INFO common.c: Starting Flash write for F2/F4/L4
2020-06-13T07:03:42 INFO flash_loader.c: Successfully loaded flash loader in sram
size: 20304
2020-06-13T07:03:43 ERROR flash_loader.c: flash loader run error
2020-06-13T07:03:43 ERROR common.c: stlink_flash_loader_run(0x8000000) failed! == -1
stlink_fwrite_flash() == -1

これはタイミングの問題かもしれないと思います。 stm32l432でも同じ問題が発生しました。 この問題を解決するように思われるflash_loader.cに次の変更を加えました。 それが根本的な原因だと私は躊躇します。

@@ -368,7 +368,7 @@ int stlink_flash_loader_run(stlink_t *sl, flash_loader_t* fl
, stm32_addr_t targe
 // by increasing the sleep-per-round to the same order-of-magnitude as
 // the tick-rounding that the OS uses, the wait until the error message is
 // reduced to the same order of magnitude as what was intended. -- REW.
-#define WAIT_ROUNDS 100
+#define WAIT_ROUNDS 200
     /* wait until done (reaches breakpoint) */
     for (i = 0; i < WAIT_ROUNDS; i++) {
         usleep(1000);

@geoffreymbrown@tabemannおよび/または@Crestが確認されたらすぐに、これをPRとして送信できますか?

NucleoSTM32L476RGボードとそのオンボードST-LINK / V2-1を使用して、開発ブランチでパッチをテストしました。 パッチはリグレッションを修正しました。 これを調べてくれてありがとう。

@geoffreymbrown :これはあなたにお任せします...

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