logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u

FlashCode 24 Kwi 2014 10:08 2358 12
REKLAMA
  • #1 13537865
    FlashCode
    Poziom 13  
    Posty: 112
    Pomógł: 3
    Ocena: 1
    Pomóżcie proszę bo juz straciłem nadzieję.
    Dotychczas grzebałem w MDK-ARM v4.10. Programiki bez problemu ruszały i działały w debugowaniu, praca krokowa, break pointy itp działało wyśmienicie z pomocą ST-LINKa.
    Zachciało mi się MDK-ARM v4.73.0.0
    W tej wersji ST-LINK nie działa jak trzeba. Program nie rusza (ten sam projekt), przy pracy krokowej wyskakuje Could not stop Cortex-M device!
    Grzebałem parę dni w googlach, forum keila, kombinowałem różne ustawienia "Debug" i "Flash Download" i ciągle to samo.
    Czy coś oczywistego przeoczyłem?
    Co dziwne, kupiony klon ULINK2 też wyskakuje z tym błędem.
    Projekt prosty - migające diodki i trochę CANa na STM32F107VBT6, uruchamiany na Butterflay'u
    ST-LINK V1J12S3 , na JTAG
  • REKLAMA
  • #2 13538153
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Zacznijmy od tego, czy wykorzystujesz SWD czy JTAG (Podłączony interfejs to jedno - wybrany w KEIL to drugie)?
    Druga sprawa - czy wykorzystujesz piny służące do programowania w swoich programach. Próbowałeś wybrać "connect under reset"? Co wtedy?
    Takie objawy mogą wynikać również ze złego "resetowania" rdzenia/łańcucha JTAG.
    Wersja KEIL nie ma to nic do gadania - prędzej konfiguracja.
    Czy z innymi układami się łączysz?
  • REKLAMA
  • #3 13538608
    FlashCode
    Poziom 13  
    Posty: 112
    Pomógł: 3
    Ocena: 1
    Łączę się przez JTAG (kabel, złącze wszystko sprawne - działa z MDK v4.10). Na Butterflaju piny od JTAGa są tylko do JTAGa.
    Connect under Reset dla ST-LINK V1 nie jest dostępny. Włączyłem to dla ULINK2 - bez zmian.
    Zauważyłem na oscyloskopie iż przy MDK v4.10 jest jeden reset z JTAGa zaraz po kliknięciu w "d" a przy MDK v4.73 są przynajmniej ze 3 .
    Innych płytek z JTAGiem nie mam, w reszcie projektów ładuję programy przez USART.
    Zamówiłem teraz inną płytkę z SWD z STM32F105 i czekam aż dojdzie.
  • #4 13538868
    tplewa
    Poziom 39  
    Posty: 6727
    Pomógł: 222
    Ocena: 991
    Hmmm ST-Linka nie uzywalem z Keilem (a Ulinka-a to widzialem tylko na zdjeciach)... ale czy masz tam do ustawienia czestotliwosc pracy po SWD. Przynajmniej ja jak u siebie przegne z czestotliwoscia na J-Llinku to nie wywala bledow... ale z softem to sie cuda na kiju potrafia dziac ;) - przy programowaniu niby weryfikacja przechodzi... a soft dziala jak chce - wiesza sie skacze w jakies dziwne rejony pamieci itp.

    Co do ST-Linka bez linii reset to jest to upierdliwe jedynie w momencie jak sobie przyblokujesz port SWD itp.... tak dziala i bez niego.
  • #5 13539528
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    FlashCode napisał:
    wszystko sprawne - działa z MDK v4.10
    Porównując konfigurację - czymś się różni od tej "niedziałającej" ?
    FlashCode napisał:
    Na Butterflaju piny od JTAGa są tylko do JTAGa.
    To nie oznacza, że nie możesz użyć SWD. SWD jest na tych samych pinach (JTCK-SWCLK, JTMS-SWDIO), więc możesz użyć jednego lub drugiego sposobu programowania (wystarczy wybrać odpowiedni tryb w KEIL).
    FlashCode napisał:
    Connect under Reset dla ST-LINK V1 nie jest dostępny.
    Być może. Sugerowałem się swoim STLINKiemV2 (z STM32F4 Discovery).
    FlashCode napisał:
    Włączyłem to dla ULINK2 - bez zmian.
    Napisałem tak, bo debugowałem STM32 (konkretnie STM32W108), właśnie z "przestawionymi" pinami - i wtedy musiałem łączyć się wyłącznie "under reset", inaczej - nie chciało działać.
    Możesz pokazać konfigurację (Zrzuty ekranu Debug-Settings - wszystkie 3 zakładki) - szczególnie z ULINK-a?
  • #6 13539856
    FlashCode
    Poziom 13  
    Posty: 112
    Pomógł: 3
    Ocena: 1
    Cytat:
    wszystko sprawne - działa z MDK v4.10
    Porównując konfigurację - czymś się różni od tej "niedziałającej" ?

    Sprecyzuję:
    Te same - płytka, kable, ST-LINK, projekt
    Różne - wersje MDK

    Na tym samym komputerze raz otwieram projekt pod v4.10 - JTAG działa
    Następnym razem (nic nie odłączając, nic nie ruszając) odpalam pod v4.73 - JTAG nie działa

    Tu są zrzuty z MDK v4.10. W zakładce Utilities nie można wejść w Settings ale to i tak bez różnicy bo JTAG działa jak trzeba. w v4.10 nigdy nie próbowałem po SWD.
    JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u
  • REKLAMA
  • #7 13539920
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    FlashCode napisał:
    nie można wejść w Settings
    Chodziło właśnie o Settings - czy to z Utility, czy to z Debug (to to samo miejsce). Bardziej by mnie interesowała konfiguracja ULINK2, gdyż tą znam.
    Jeśli nie można wejść w ustawienia, to na 99% coś jest "nie teges". Nawet bez podłączonego STLink-a pojawia się ładne okienko ustawień z 3 zakładkami.
  • #8 13540620
    FlashCode
    Poziom 13  
    Posty: 112
    Pomógł: 3
    Ocena: 1
    Dzisiejsze zrzutki z MDK v4.73 - tego nie działającego. Robiłem próby z ULINK2 i SWD - nadal problem wyskakuje. Czy dobrze rozumuję że program ląduje w pamięci, proc wchodzi w tryb debug i "niepotrzebny" reset go z niego wywala? Wnioskuje to na podstawie komunikatu "Verify OK" i tych trzech resetów. Dwa pojawiaja się po kliknięciu "d" a trzeci po ok 300ms
    JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u JTAG/KEIL - ST-LINK nie działa w MDK-ARM v4.73 z STM32F107VBT6 na Butterflay'u
  • REKLAMA
  • #9 13540704
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Czy bez opcji "Connect under reset" poprawnie w okienku wykrywa ci MCU ?
    Jeśli tak - to moja uwaga o "Connect under reset" jest błędna, a ten tryb niepotrzebny.
    Jeśli nie - to musiałbyś pokombinować z samym trybem Reset (ten Combobox "Reset" w ramce "Connect & reset options").
    Zwróć uwagę, że w układzie są 2 resety (z reguły oznaczone liniami nSRST i nTRST) - reset rdzenia i reset TAP.
    Próbowałeś zaznaczać Reset after connect ? Efekty?

    Zwróć też na "Cache options". W przypadku STM32W108 w pewnym momencie (jak pamiętam) musiałem je mieć odznaczone, aby móc poprawnie debugować program.
  • #10 13540845
    FlashCode
    Poziom 13  
    Posty: 112
    Pomógł: 3
    Ocena: 1
    mickpr, kombinowałem jak piszesz - bez rezultatu. MCU zawsze zgłasza się poprawnie, pod ST-Linkiem i Ulinkiem.
    Porównałem okna w trybie debugg w dwóch MDK a dokładnie okno rejestrów.
    Przy starym MDK (tym działającym) po naciśnięciu RST (Reset the CPU) R15(PC) ustawia się na 0x08000xxx a przy nowym (niedziałającym) zawsze wisi na 0x20000xxx.
    Sprawdziłem zachowanie na płytce ZL42ARM z innym projektem i jest tak samo - nowy nie, stary tak
  • #11 13541017
    kemot55
    Poziom 31  
    Posty: 1304
    Pomógł: 183
    Ocena: 146
    Swego czasu jak jeszcze "męczyłem" się z STLINK'iem musiałem wgrać stary DLL do nowej wersji Keila (inaczej działy się rzeczy przedziwne). W katalogu z Keil'em masz podkatalog STLINK a tam biblioteki. Spróbuj podmienić na te, które działały w starszej wersji Keila.
  • #12 13543557
    dziechu
    Poziom 27  
    Posty: 1609
    Pomógł: 27
    Ocena: 69
    FlashCode napisał:
    Przy starym MDK (tym działającym) po naciśnięciu RST (Reset the CPU) R15(PC) ustawia się na 0x08000xxx a przy nowym (niedziałającym) zawsze wisi na 0x20000xxx.

    Czyli program startuje w RAM a nie Flash. To chyba się gdzieś ustawia czy ma startować z Flash czy RAM.
  • #13 13543600
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    dziechu napisał:
    Czyli program startuje w RAM a nie Flash. To chyba się gdzieś ustawia czy ma startować z Flash czy RAM.
    Nigdy nie rozgryzłem - w jaki sposób ULINK2 korzysta z RAM podczas programowania, ale z tego http://www.keil.com/support/man/docs/ulink2/ulink2_su_ram_for_algorithm.htm wynika, że procedura flashująca jest ładowana do RAM i w ten sposób odbywa się programowanie.

Podsumowanie tematu

✨ Użytkownik napotkał problemy z działaniem ST-LINK w MDK-ARM v4.73 podczas debugowania projektu na STM32F107VBT6. W wersji v4.10 wszystko działało poprawnie, jednak po przejściu na nowszą wersję pojawił się błąd "Could not stop Cortex-M device!" oraz problemy z resetowaniem rdzenia. Użytkownik próbował różnych ustawień w sekcjach "Debug" i "Flash Download", a także testował połączenie przez JTAG i SWD, ale bez sukcesu. Inni uczestnicy dyskusji sugerowali sprawdzenie konfiguracji, ustawień resetu oraz ewentualną wymianę bibliotek DLL w katalogu Keila. Zauważono również, że program może startować z RAM zamiast z Flash, co może wpływać na działanie debuggera.
Wygenerowane przez model językowy.
REKLAMA