Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Eclipse + OpenOCD + Sourcery G++ Lite i turial Freddie Chopi

Innos 23 Jul 2010 11:35 6577 37
Computer Controls
  • #1
    Innos
    Level 11  
    Witam. Po stępując wedle turialu Freddie Chopin
    Link

    utknąłem w Build All tzn: w konsoli dostaje taki komunikat:

    Quote:
    **** Build of configuration Default for project Test1 ****

    cs-make all
    System nie mogl odnalesc scieszki
    ECHO jest wylonczone.
    "-------- begin (mode: ROM_RUN) --------"
    process_begin: CreateProcess(NULL, arm-elf-gcc --version, ...) failed.
    make (e=2): Nie można odnaleźć określonego pliku.

    cs-make: *** [gccversion] Error 2



    uP: AT91SAM7S256
    programator: JTAG-lock-pick

    W załączniku pliki tego projektu
    Proszę o wyrozumiałość i możliwie jasne podpowiedzi.
  • Computer Controls
  • #3
    Innos
    Level 11  
    mój system wysypał to w postaci zlepku liter i krzaczków( aby wyglądało w miarę wiarygodnie nie poprawiłem tego z PL literami). Skoro jest tak jak piszesz to jak to naprawić. Po za programami jakie podałeś nie mam innych.
  • #5
    Innos
    Level 11  
    Z całym szacunkiem, ale dla Pana jest to oczywiste. Prosze tylko o odpowiedz gdzie to wpisać(w tym makefile) i co ?

    Tak jak pisałem, proszę o wyrozumiałość. To moje 1 kontakty z ARM-ami ( wcześniej bawiłem się z AVR-ami i nie było żadnych problemów z programami).

    Najgorsze w tym wszystkim, że w docelowym projekcie będzie to stanowisko laboratoryjne. Już widzę kolegów studentów którzy tłuki cały czas 51' ( teoretycznie na wykładach) przy praktycznej zabawie na stanowisku DMA z ARM-em.
  • Computer Controls
  • #6
    michalko12
    MCUs specialist
    Jak jesteś studentem i nie wiesz co trzeba w takim przypadku zrobić...
    to poszukaj w sieci lepszych przykładów które są już dostosowane do tego środowiska. Jak chcesz walczyć z tym co masz to mała podpowiedź:
    Masz:
    Quote:
    CC = arm-elf-gcc

    A powinno być:
    Quote:
    CC = arm-none-eabi-gcc
  • #7
    Innos
    Level 11  
    michalko12 serdecznie dziękuję za konkretną odpowiedz. Czegoś takiego oczekiwałem. Po wprowadzeniu zmiany mam kolejny bład:

    Quote:
    **** Build of configuration Default for project led1 ****

    cs-make all
    System nie moľe odnale«† okre?lonej ?cieľki.
    ECHO jest wy?Ączone.
    "-------- begin (mode: ROM_RUN) --------"
    arm-none-eabi-gcc (Sourcery G++ Lite 2010q1-188) 4.4.1
    Copyright (C) 2009 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    W tym momencie -f by?o nieoczekiwane.
    cs-make: *** [sizebefore] Error 255
  • #8
    arrevalk
    Level 25  
    Proponuję Ci:
    1) Wykorzystaj makefile z przykładów Freddiego Chopina(np ten pod LPC21xx), niewiele trzeba w nim zmodyfikować (inny skrypt linkera i startup, oraz procesor)
    2) Zainstaluj sobie wtyczkę GNU ARM Eclipse Plugi, mi się z nią całkiem dobrze współpracuje, tylko troche czasu na konfiguracje trzeba poświęcić.

    Oprócz tego niezbędna lektura: http://www.state-machine.com/arm/Building_bare-metal_ARM_with_GNU.pdf
  • #9
    Innos
    Level 11  
    arrevalk dziękuje za odpowiedz. Przeanalizuje materiały od Ciebie i dam znać.
  • #10
    flapo213
    Level 21  
    Witam,

    Faktycznie lepiej wykorzystać jakiś sprawdzony projekt. Gdybyś jednak chciał brnać dalej w tym to proponuję byś zamienił wszystkie wystąpienia arm-elf- na arm-none-eabi-. Otwórz sobie w notatniku czy wordpadzie czy innym edytorze i spróbuj zrobić jak napisałem. Drobna rada jak checsz się na poważnie bawić w gcc to warto by poznać jak działają / są zbudowane skrypty *.ld, jak jest zbudowany makefile.

    Pozdrawiam i życzę sukcesów
  • #11
    Innos
    Level 11  
    flapo213 - zrobiłem jak radziłeś i pojawiły się inne błędy. Dla pewności stworzyłem nowy projekt tak jak w turialu, ściągnąłem projekt lpc2103_blink_led z strony Freddie-go, wkleiłem pliki, klikam Build All i proces zatrzymuje się na błędzie:

    Quote:

    **** Build of configuration Default for project test ****

    cs-make all
    System nie moľe odnale«† okre?lonej ?cieľki.
    'Assembling file: startup.S'
    arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=arm7tdmi-s -g -ggdb3 -Wa,-amhls=out/startup.lst -MD -MP -MF out/startup.d -I. startup.S -o out/startup.o
    startup.S:20: fatal error: opening dependency file out/startup.d: No such file or directory
    compilation terminated.
    cs-make: *** [out/startup.o] Error 1


    Stracony czas i pieniądze na programator zaczynają mnie irytować.
    Proszę o pomoc ( dosłownie za rączkę ) w uruchomieniu całości. Mile widziany kontakt na gg: 6773529
  • #12
    Freddie Chopin
    MCUs specialist
    "Za rączkę" masz w tutorialu. Zrób po prostu wszystko co tam jest napisane po kolei, korzystając z kompletnego projektu z mojej strony, który zaimportuj do Eclipse'a (import project). Jak się skompiluje, to dopiero potem zmieniaj pliki. Dodam też, żebyś zainstalował Coreutils (instalka na mojej stronie) - ważne!

    Na pocieszenie zaś dodam, że programator upłynnisz w mgnieniu oka jak już zdenerwuje Cię całkowicie [; Może i nawet na nim zarobisz!

    4\/3!!
  • #13
    Innos
    Level 11  
    Zrobiłem jak kazałeś i dalej to samo. A przy okazji nie mam czasu na zabawę kup/sprzedaj. Jak innym działa to u mnie też musi (teoretycznie). Pomęczę się z tym jeszcze 3h i odpiszę.

    Dodano po 26 [minuty]:

    Quote:
    # C/C++ Build > Settings w zakładce Binary Parsers zaznaczyć należy GNU Elf Parser, a następnie - po kliknięciu tej opcji - w polach tekstowych poniżej należy podać ścieżkę do odpowiednich plików pochodzących z pakietu CodeSourcery - w przypadku standardowej instalacji pliki te znajdują się w folderze C:\Program Files\CodeSourcery\Sourcery G++ Lite\bin\ ( C:\Program Files\CodeSourcery\Sourcery G++ Lite\bin\arm-none-eabi-addr2line.exe , C:\Program Files\CodeSourcery\Sourcery G++ Lite\bin\arm-none-eabi-c++filt.exe ).


    Robię jak jest napisane, po ponownym otwarciu C/C++ Build > Settings ustawienia są domyślne, brak ścieżek:
    D:\ARM\SourceryG++Lite\bin\arm-none-eabi-addr2line.exe
    D:\ARM\SourceryG++Lite\bin\arm-none-eabi-c++filt.exe

    jest tylko

    addr2line
    c++filt

    PS Aby nie było domysłów - tak, klikam Apply>OK a nie Cancel
  • #14
    Freddie Chopin
    MCUs specialist
    Innos wrote:
    Zrobiłem jak kazałeś i dalej to samo.

    Coreutils zainstalowane? Jak wywołujesz kompilator z linii poleceń ręcznie (opisana w tutorialu procedura testowa) to jest OK?

    Quote:
    Robię jak jest napisane, po ponownym otwarciu C/C++ Build > Settings ustawienia są domyślne, brak ścieżek

    Tak niestety jest, zignoruj to.

    4\/3!!
  • #15
    Innos
    Level 11  
    W załączniku fotki testu openOCD i Sourcery G++ Lite. Moim zdaniem wszystko jet ok.

    uC jakie posiadam to 91sam7s256. ale w targetach takiego *.cfg nie ma.
  • #17
    Innos
    Level 11  
    Tak, Coreutils jest zainstalowany. Przepraszam, że wczoraj na to pytanie nie odpowiedziałem. Zmęczenie.
  • #19
    Innos
    Level 11  
    System operacyjny Win XP 32bit pl
    jak dokładnie wygląda komenda cs-make all spod cmd
  • #21
    hEx
    Level 12  
    Możesz sprawdzić czy na pewno masz dodane zmienne środowiskowe, u mnie do całego tego zestawu to wygląda tak:
    D:\ARM\codesourcery\bin;
    D:\ARM\openocd\bin;
    D:\ARM\coreutils\bin;
  • #22
    Innos
    Level 11  
    Witam. Z kompilacją sobie poradziłem, lecz utknąłem na Debugerze. Za każdym razem java się sypie i przy okazji nic się nie wgrywa do procka. W załączniku fotki problemu.
  • #24
    Innos
    Level 11  
    Quote:
    Podajesz zbyt mało informacji. Po pierwsze wypadałoby napisać jak sobie niby z tą kompilacją poradziłeś, dodając też czemu tak sądzisz.


    Dziwnym trafem, gdy z rana skompilowałem Pana projekt zakończył się pomyślnie. Na jego podstawie stworzyłem własny, który się też bez problemu kompiluje.


    Quote:
    Czy aby na pewno masz tam gdzieś plik z rozszerzeniem elf?


    Pliki *.elf są.

    W załączniku fotki wyjaśniające wszystko ( w temacie :D ).

    Proszę o info na temat jakiegoś programu, którym mogę zaprogramować uC plikiem *.hex przy wykorzystaniu programatora JTAG-lock-pick ( chce sprawdzić czy wszystko z nim jest ok i wystawić komentarz. )
  • #25
    Freddie Chopin
    MCUs specialist
    1. Nie zauważyłeś, że rozmiar wynikowych plików wynosi 0? Masz źle skonfigurowany cały projekt, przypuszczalnie ENTRY_POINT() ze skrytpu linkera nie odpowiada nazwie funkcji wywoływanej po resecie w pliku startup.S. Coś takiego nie ma prawa działać i stąd błędy które widziałeś.

    2. Przykład programowania plikiem hex jest opisany w manualu do JTAGa...

    4\/3!!
  • #26
    Innos
    Level 11  
    OK, więc zamieszczam wszystkie pliki z projektu, bo prawie straciłem nadzieje, że uda mi się to uruchomić. Plik startup.S jest z mojego uC. Proszę o pomoc, bo kończy mi się czas i w tym tempie nie zrobię tej pracy dyplomowej ( miedzy innymi muszę zaproponować pełne środowisko - darmowe). Będzie to 1 stanowisko z ARM-em więc na pomoc od wykładowców nie mam co liczyć - sam muszę się o wszystko zatroszczyć a następnie w dokumentacji wyjaśnić krok po kroku co i jak.

    PS: Jedno mnie dziwi, dlaczego u 99% jest ok a ja mam z tym takie problemy. Zmienne środowiskowe się zgadzają, staram się robić krok w krok z turialem a efekty są zerowe.

    W załączniku jest cały projekt, proszę o dokładne sprawdzenie go i wskazania ewentualnych błędów.
  • #27
    Freddie Chopin
    MCUs specialist
    99% osób używa po prostu DOBRYCH projektów, a ty na siłę chcesz uruchomić projekt, który po prostu jest kiepski.

    1. W skrypcie linkera dopisz sobie gdzieś na początku
    ENTRY(_startup);
    (co w sumie nie jest do końca poprawne, ale tym sposobem jest najprościej)
    2. W jakimś pliku z kodem musisz mieć funkcję void AT91F_LowLevelInit(void) - najlepiej pustą (geniusze tworzący startupa nie przewidzieli sytuacji, że ktoś może takiej funkcji nie mieć...)

    Po tym już coś tam w pliku jest, więc niby skompilowane.

    Tak czy siak to będzie dopiero początek problemów, bo tam każdy plik jest lewy...
    1. Po włączeniu optymalizacji funkcja opóźniająca zostaje po prostu "zoptymalizowana" i opóźnienie na pewno będzie inne
    2. Plik linkera powinien zawierać sekcje w postaci *(.sekcja*) a nie *(.sekcja) (dotyczy tylko tych normalnych, czyli nie tych od debuggowania, nie dotyczy też sekcji specjalnej COMMON)
    3. Startup jest przesadnie zakręcony, od razu z jakimiś zagnieżdżonymi przerwaniami itd.

    Oj kiepski ten projekt, kiepski.

    4\/3!!
  • #28
    Innos
    Level 11  
    Hmm, to z kąt mogę pobrać dobre pliki aby móc swobodnie pisać dla uC AT91SAM7S256 - wiem, że można zapytać wujka google, ale już mam dość błądzenia. Puki co nie mam innych i stosuje te. Zostały pobrane z trony BTC - posiadam książkę Roberta Brzoza-Woch "Mikrokontlolery AT91SAM7 w praktyce". Plik "AT91SAM7S256-ROM.ld" pewnie zostaje bez zmian.

    Proszę osoby, które korzystają z AT91SAM7S o ewentualne zamieszczenie niezbędnych plików, które bez problemu działają z tym turialem.


    PS: Z rana zastosuje się do twoich zaleceń Panie Freddie
  • Helpful post
    #30
    gaskoin
    Level 38  
    w internecie można znaleźć książkę pod tytułem "projektowanie systemów wbudowanych na przykładzie rodziny SAM7S z rdzeniem ARM7TDMI" gdzie jest opisane jak i po co tworzy się plik startup.