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

LPC1769 - LpcXpresso po dodaniu bibliotek błąd FLASH

tobiasz54 10 Sty 2015 17:13 1146 7
REKLAMA
  • #1 14314797
    tobiasz54
    Poziom 13  
    Posty: 89
    Pomógł: 2
    Ocena: 4
    Witam
    Moja płytka to LPC1769 LPCXpresso board. Używam LpcXpresso do programowania ze względu na to, że na płytce jest LPC-Link.
    Napisałem już część programu który działa. Program steruje silnikami krokowymi. Pierwszy etap to 2 silniki, każdy ma zrobić różną ilość kroków w tym samym czasie z przyspieszaniem i zwalnianiem. To już działa. W związku z tym, że testowo miały określoną ilość kroków
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    następny etap to odczyt x i y z tablicy(docelowo z pliku) i w pętli sterowanie silnikami.
    Napisałem procedurę odczytu typowej linii g-code, gdzie po kolei odczytuje znak.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    To co nie zakomentowane działa i dało się wczytać do płytki.
    Założyłem breakpointa na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i wszystko ładnie odczytywało.
    Z powodu, że nie mam biblioteki strings.h pomyślałem, że napiszę sam szukanie i łączenie znaków z linii.
    Schodek zaczął się jak zacząłem łączyć znaki(ostrzeżenia, błędy w build).
    Stwierdziłem,że wygodniej będzie dołączyć standardową bibliotekę string i wykorzystać tamte funkcje.
    W workcpace mam inne projekty dostarczone z NXP lub LPC(nie pamiętam) i tam w jednym z nich była biblioteka string.h
    Zacząłem dołączać wg instrukcji
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    I tutaj zaczęły się schody.
    Build project późnie debug i komunikat
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    Faktycznie w projekcie dodało biblioteki, w Include dodało 3 ścieżki i tam jest mój string.h.
    Po wielu próbach chciałem powrócić do stanu jak to działało, czyli wyrzucić te 3 ścieżki które się dodały w include, nie da się usunąć(w properties->c/c++ general Path and Symbols przyciski edit i delete są nieaktywne.
    Te ścieżki to z katalogu NXP
    c://NXP/lpcxpresso6.../tools/arm-none-eabi/include
    c://NXP/lpcxpresso6.../tools/lib/gcc/arm-none-eabi/4.6.2/include
    c://NXP/lpcxpresso6.../tools/lib/gcc/arm-none-eabi/4.6.2/include-fixed
    W MCU compiler w setings - includes (include path)mam
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    include files - pusty
    W MCU linker libraries
    (-I)
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    w library searsch path(-L)
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    Jak pozbyć się tych 3 ścieżek których wcześniej nie było?
    Ponad to zauważyłem, że wcześniej(dzisiaj o 4 rano) jak wszystko działało w funkcji main
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    było podkreślone na żółto(warnings)mimo to działało, teraz nie i nie działa.
    Teraz nie wiem co robić:
    albo zepsułem workspace co zdarza mi się często(ale to chyba można naprawić)
    albo zepsuta płytka(flasch)
    albo coś w ustawieniach w properties(nie mam pojęcia co jeszcze zmienić)
    albo w MCU zmieniło mi adresy Flasch i nie wiem jakie mają być prawidłowe.
    Czy można usunąć pliki axf z kat debug? może kompiler pobiera stamtąd poprzednie złe ustawienia?
    Nie wiem co mam więcej zrobić może ktoś coś doradzi.
    Pozdrawiam
  • REKLAMA
  • #2 14315075
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    1. Pliki .h NIE są bibliotekami.
    2. Funkcje operujące na łańcuchach są zadeklarowane w pliku string.h.
    3. Funkcje te są dostępne w sztandardowej bibliotece dostarczanej ze środowiskiem LPCxpresso.
    4. Folder ze standardowymi plikami nagłówkowymi jest domyślnie przeszukiwany przez kompilator - nie ma potrzeby ustawiania ścieżek w LPCxpresso.
    5. Pliki .axf to wyniki kompilacji - postać ładowalna, tworzona przy każdej kompilacji.
  • REKLAMA
  • #3 14315146
    Badmaneq
    Poziom 23  
    Posty: 567
    Pomógł: 76
    Ocena: 23
    Najprosciej i najszybciej bedzie kiedy utworzysz nowy projek i skopiujesz do niego Twoj kod, a w nim odkomentuj #include "string.h" z tym, ze cudzyslowy zamien odpowiednio na < i >
  • REKLAMA
  • #4 14315289
    tobiasz54
    Poziom 13  
    Posty: 89
    Pomógł: 2
    Ocena: 4
    @Badmaneq
    Nowy projekt już zrobiłem, w tym samym workspace. Skopiowałem do niego pliki *.h i *.c z src. Nic nie ustawiałem w properties. string.h nie includowałem. Nie używam żadnej funkcji ze string.h to po co mam go odkomentować?
    W katalogu po build i debug pojawiły się te 3 ścieżki i problem pozostał.
    Kod który dałem w 1 poście to ten który rano działał. W innym workspace mam też projekty i mam tam blinkled na timerze który działal. Zmieniłem workspace i po debug ten sam błąd flasch.
    @BlueDraco
    1, 2 i 5 to wiem doskonale. Może uprościłem trochę nazewnictwo.
    3 i 4. string.h nie był dostępny od początku. Tak samo jak chciałem zrobić printf.
    Projekt był robiony wg wizard:
    new project-> C->lpc1769->nazwa itd.(dokładnie nie pamiętam kolejności), ale przed kombinowaniem z properties działał(string.h i tak nie był dostępny), nie było tych trzech path w includes o których pisałem w 1 poście.
  • #5 14315365
    Badmaneq
    Poziom 23  
    Posty: 567
    Pomógł: 76
    Ocena: 23
    Miales skopiowac kod, a nie pliki :)
    Weksportuj ten feralny projekt i dodaj jako zalacznik to zerkne. Jednak wydaje mi sie po komunikacie, ze LPC-LINK nie moze sie skomunikowac z LPC1769...
  • REKLAMA
  • #6 14316949
    tobiasz54
    Poziom 13  
    Posty: 89
    Pomógł: 2
    Ocena: 4
    Witam
    Przypadkowo trafiłem. Po różnych kombinacjach(nowe workspace), poszukałem w faq lpc temat "Target error from Commit Flash write". Napisane jest o dużym obciążeniu
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    W czasie debugowania (komunikat o błędzie już był wyświetlony) podszedłem do płytki odciąć zasilanie sterowników. W tym czasie debuger zatrzymał się na breakpoincie na linii
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Sprawdziłem kursorem wartości zmiennych m.inn.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jakaś wielka wartość !, a linia ma 30 znaków. Sądziłem, że int wystarczy.
    Zmieniłem
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i działa. Mogę dalej się męczyć.
    Tego zakomentowanego int oczywiście wyrzucam.
    Sprawdziłem także czy obciążenie miało wpływ na błąd. Nie miało.
    edit
    działa ale niestabilnie. Jak dodam string.h - błąd flasch.
    Odłączyłem wszystkie wyjścia z płytki(zapalała jeszcze diodę). Po podłączeniu Lpc-link do usb zaczął się instalować sterownik (dfi coś tam).
    Dodałem
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i narazie działa. Więc być może chodzi o to zasilanie.
    Dziękuję za zainteresowanie i pozdrawiam
  • #7 14318171
    Badmaneq
    Poziom 23  
    Posty: 567
    Pomógł: 76
    Ocena: 23
    tobiasz54 napisał:
    Przypadkowo trafiłem. Po różnych kombinacjach(nowe workspace), poszukałem w faq lpc temat "Target error from Commit Flash write". Napisane jest o dużym obciążeniu

    Kod Text - [rozwiń]
    Flash programming increases the power consumption of the MCU dramatically, and if your power supply is not up to it, the flash programming will fail.


    W czasie debugowania (komunikat o błędzie już był wyświetlony) podszedłem do płytki odciąć zasilanie sterowników. W tym czasie debuger zatrzymał się na breakpoincie na linii


    Domyślam się, że "zasilanie sterowników" to chodzi Ci o zewnętrzne elementy pobierające prąd. Pewnie wszytko zasilasz z portu USB, a ten ma ograniczoną wydajność prądową.
  • #8 14318272
    tobiasz54
    Poziom 13  
    Posty: 89
    Pomógł: 2
    Ocena: 4
    Dokładnie tak. Jeszcze cyklicznie włączała się dioda co ok 7 sek,i pewnie z tego powodu (dzisiaj) w zależności od długości kodu do "wpisania " do flasch w różnych momentach występował ten błąd.
    Będę miał jeszcze jedno pytanie(narazie) dotyczące tej procedury(funkcje, nie chce co chwilę zakładać nowego wątku), ale muszę najpierw wypróbować. Dlatego jeżeli można prosić, zajrzyj tutaj.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik pracuje z płytką LPC1769 LPCXpresso i napotkał błąd związany z programowaniem w LPCXpresso po dodaniu bibliotek. Problemy dotyczyły komunikacji z LPC-LINK oraz błędów związanych z programowaniem pamięci Flash, które mogły być spowodowane niewystarczającym zasilaniem. Po różnych próbach, w tym utworzeniu nowego projektu i modyfikacji kodu, użytkownik zidentyfikował, że problem leżał w nieprawidłowym obliczaniu długości linii g-code. Zmiana sposobu obliczania długości tablicy gcode_line rozwiązała problem. Użytkownik zauważył również, że zasilanie z portu USB może być niewystarczające dla podłączonych elementów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA