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

STM32VLDiscovery - Keil uVision - Debugowanie nie wchodzi do funkcji main

Estarriol 10 Sie 2012 21:55 2346 5
REKLAMA
  • #1 11195946
    Estarriol
    Poziom 15  
    Posty: 161
    Pomógł: 12
    Ocena: 59
    Cześć,

    Korzystam z płytki STM32VLDiscovery (z programatorem ST-LINK), Keil uVision.

    Po raz kolejny wziąłem się za ARMy. I wszystko pięknie szło do czasu, aż zamarzyłem o fatfs. Bibliotekę dołączyłem, przepisałem kod tak, żeby nie korzystał z biblioteki stm32 standard peripherials. Uruchomiłem debugowanie - 17KB ma kod i... właśnie - w debugerze jak idę linia po linii:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wchodzi do funkcji SystemInit, wraca z niej i... nie wchodzi do main. Przy dojściu do BX R0 nic się nie dzieje.
    Dodam, że dla małych programów działa dobrze. A tutaj dla "Run" się wyłącza od razu, a dla "step-line" zatrzymuje jak pisałem wyżej...

    Czy coś jest źle ustawione w projekcie, że nie działa dla dużych wsadów (wszystkie opcje domyślne, )? Czy też może Keil jest tym odwiecznym źródłem kłopotów i warto się przesiąść na otwarte środowisko tak jak radził na forum kolega Freddie Chopin nie raz?

    Pozdrawiam
  • REKLAMA
  • #2 11195971
    Electix
    Poziom 21  
    Posty: 462
    Pomógł: 46
    Ocena: 6
    A sprawdzał kolega czy z uruchomionym symulatorem jako debuger też tak się dzieje?
  • REKLAMA
  • #3 11196105
    Estarriol
    Poziom 15  
    Posty: 161
    Pomógł: 12
    Ocena: 59
    Na programowym działa - przechodzi normalnie. Korzystam z debugera w wersji deprecated, ponieważ wywala jakiś błąd przy normalnym stlink ( Error: Could not load file 'C:\Documents and Settings\Sid\Pulpit\C4\PROJEKT.AXF'. Debugger aborted ! - pomimo tego ze plik istnieje).

    Pomijając nawet debuger - jeśli wrzucam projekt za pomocą st-link utility - w wersji 1,8KB po wrzuceniu projekt działa, jeśli mu dorzucę linie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    co sprawia, że wsad waży 17KB - nie rusza już w ogóle (nic nie wypisuje na terminal). Jeszcze funkcja, żeby zobrazować:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #4 11196268
    Electix
    Poziom 21  
    Posty: 462
    Pomógł: 46
    Ocena: 6
    1. To trzeba sprawdzić czy nie musisz przeinstalować sterowników, albo doinstalować jakichś łatek. Gdzieś mi się kiedyś obiło o oczy na jakimś forum, że z st-linkiem pod Keilem były jakieś kłopoty.
    2. Sprawdzić czy masz dobrze poustawiane zworki na st-linku (jeśli takowe są i wymagają ustawień), zajrzyj też do ustawień Options for target... |-> Debug |-> use [ST-Link Deprecated] |-> Settings Tam też pobaw się ustawieniami...
    3. Sprawdź czy w zakładce Options for target... |-> Utilities |-> Use Target Driver for Flash Programming [ST-Link Deprecated] |-> Settings |-> masz dodany prawidłowy algorytm programowania pamięci dla Twojego MCU.
  • REKLAMA
  • #5 11197523
    Estarriol
    Poziom 15  
    Posty: 161
    Pomógł: 12
    Ocena: 59
    Debug -> Use ST-Link (Deprecated) mam prawidłowy tryb - SWD.

    Jako driver mogę wybrać wersję nie-deprecated, algorytm odpowiedni i dalej to samo.

    Tak samo mam wrzucając hexa przez ST-Link Utility. Jakby wsad tworzony przez Keila nie był ok.
    Jeszcze konfiguracja targetu:
    STM32VLDiscovery - Keil uVision - Debugowanie nie wchodzi do funkcji main
    Opymalizacja c/c++ na Level 0. Startup domyślny z Keila, rozmiar stosu 0x400, sterty 0x200.

    Ogólnie urządzenie nad którym pracuję trochę na siłę na ARM robię - planowałem na ATmega32, tylko potrzebuję 3 usarty.
  • #6 11197638
    Electix
    Poziom 21  
    Posty: 462
    Pomógł: 46
    Ocena: 6
    A wziąłeś pod uwagę, że wersja demo Keila ma ograniczenie na wielkość kodu? No chyba że posiadasz pełną oryginalną wersję...

    Sprawdź jeszcze czy w zakładce linker masz zaznaczoną opcję:
    Use Memory Layout From Target Dialog?
REKLAMA