Stlink: اكتشاف STM32L476: فشل الفلاش في الكتابة

تم إنشاؤها على ١٣ يونيو ٢٠٢٠  ·  5تعليقات  ·  مصدر: stlink-org/stlink

شكرًا لك على تقديم ملاحظاتك لمشروع stlink.

من أجل السماح للمطورين والمساهمين الآخرين بعزل واستهداف مشكلتك الخاصة ، يرجى تخصيص بعض الوقت لملء كل من العناصر التالية المناسبة لمشكلتك المحددة:

  • نوع المبرمج / اللوحة: Stlink / v2-1
  • إصدار البرنامج الثابت للمبرمج: إصدار متكامل مع STM32L476 DISCOVERY
  • نظام التشغيل والإصدار: Linux 5.5.0-1-amd64
  • إصدار أدوات Stlink و / أو تجزئة git الالتزام: 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

المتوقع / الوصف:

سوف يكتب هذا الوميض بنجاح zeptoforth.bin على ذاكرة فلاش STM32L476 MCU ، على 0x08000000.

إشعار: قد يتم إغلاق تقرير الخطأ هذا بدون إشعار آخر ، إذا لم يتم توفير معلومات كافية!

شكرا لدعمكم.

مشرفو مشروع stlink

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

التعليق الأكثر فائدة

لقد اختبرت التصحيح في فرع التطوير باستخدام لوحة Nucleo STM32L476RG ولوحة 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 ؟

لقد اختبرت التصحيح في فرع التطوير باستخدام لوحة Nucleo STM32L476RG ولوحة ST-LINK / V2-1 المدمجة. التصحيح إصلاح الانحدار. شكرا للنظر في هذا.

geoffreymbrown : سأترك هذا لك إذن ...

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

grzegorz-kraszewski picture grzegorz-kraszewski  ·  9تعليقات

maked0n picture maked0n  ·  8تعليقات

bolorkhuu picture bolorkhuu  ·  11تعليقات

lkord picture lkord  ·  14تعليقات

gorynch picture gorynch  ·  5تعليقات