eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › ARM9 + GCC + makefile do hello world
Ilość wypowiedzi w tym wątku: 15

  • 1. Data: 2010-02-16 00:22:30
    Temat: ARM9 + GCC + makefile do hello world
    Od: Dariusz Zolna <a...@u...com>

    Mam zamiar przesiąść się z AVR na ARM9, jednak coś trudno mi wystartować.
    Mam development board (FriendlyARM) z przykładami kodu (interesuje mnie
    programowanie bez OS), ale nie potrafię tego skompilować. Podpowiedzcie,
    gdzie znaleźć jakieś kompletne "hello world", chocby i miganie LED-em,
    ale kompletny projekt pod gcc. A najlepszy byłby oczywiście jakiś tutorial.
    Do AVR pełno tego, a do ARM-a nic nie mogę znaleźć :/

    Pozdrawiam,
    Dariusz Żołna


  • 2. Data: 2010-02-16 07:20:10
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: Kris_gor <k...@p...onet.pl>

    Dariusz Zolna pisze:

    > Do AVR pełno tego, a do ARM-a nic nie mogę znaleźć :/

    http://www.freddiechopin.info/index.php/pl/artykuly/
    35-arm/59-arm-toolchain-tutorial


  • 3. Data: 2010-02-16 12:17:29
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: cepu69 <c...@t...pl>

    Dariusz Zolna wrote:

    > Mam zamiar przesiąść się z AVR na ARM9, jednak coś trudno mi wystartować.
    > Mam development board (FriendlyARM) z przykładami kodu (interesuje mnie
    > programowanie bez OS), ale nie potrafię tego skompilować.

    > Podpowiedzcie, gdzie znaleźć jakieś kompletne "hello world", chocby i
    > miganie LED-em, ale kompletny projekt pod gcc. A najlepszy byłby
    > oczywiście jakiś tutorial. Do AVR pełno tego, a do ARM-a nic nie mogę
    > znaleźć :/
    A czy zastanowiles sie nad przyczyna takiego stanu rzeczy???

    To jest juz procesor (CPU: 400 MHz Samsung S3C2440A ARM920) a nie kontroler
    i naprawde malo kto bawi sie bez OS-a.

    Naprwade nie warto - jesli masz port systemu na dana platforme to migniecie
    diodami wymaga 5 minut pracy.

    ---> http://www.friendlyarm.net/dl.php?file=linux-example
    s.tgz
    i przyklad leds :

    int main(int argc, char **argv)
    {
    int on;
    int led_no;
    int fd;
    if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 ||
    sscanf(argv[2],"%d", &on) != 1 ||
    on < 0 || on > 1 || led_no < 0 || led_no > 3) {
    fprintf(stderr, "Usage: leds led_no 0|1\n");
    exit(1);
    }
    fd = open("/dev/leds0", 0);
    if (fd < 0) {
    fd = open("/dev/leds", 0);
    }
    if (fd < 0) {
    perror("open device leds");
    exit(1);
    }
    ioctl(fd, on, led_no);
    close(fd);
    return 0;
    }


  • 4. Data: 2010-02-16 15:33:49
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: Dariusz Zolna <a...@u...com>

    cepu69 pisze:
    > A czy zastanowiles sie nad przyczyna takiego stanu rzeczy???

    Tak, zastanawiałem się i nie potrzebuję systemu. Dlatego właśnie
    wybrałem Mini2440 a nie EPIĘ PX.

    Na friendlyarm jest zestaw testowych funkcji, które nie wyglądają na
    wielce skomplikowane (mam o wiele bardziej rozbudowane projekty na AVR).
    Problemem jest to, że chińczyki przygotowały je przy użyciu komercyjnego
    kompilatora, a ja jednak wolałbym użyć GCC.

    Zrobiłem pewien postęp, projekt się kompiluje, ale kompilator nie lubi
    pliku "2440init.s". Wygląda jakby traktował go jako plik w C a nie w
    Asemblerze.

    Zgodnie z "tutorialem" podsuniętym przez Kris_gor używam GCC (Sourcery)
    i Eclipse.

    Ktoś ma jakieś sugestie jak poprawnie włączyć ten plik w asemblerze do
    projektu? Kompilator dostaje go chyba z poprawnymi flagami:

    arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=arm920t -mthumb -g
    -ggdb3 -Wa,-amhls=./out/2440init.lst -MD -MP -MF ./out/2440init.d -I .
    2440init.s -o out/2440init.o

    więc może to kwestia poprawności zapisu samego kodu?
    Bo dostaję mnóstwo błędów typu:

    2440init.s:13: Error: bad instruction `get option.inc'

    albo

    2440init.s:30: Error: junk at end of line, first unrecognized character
    is `0'

    Pozdrawiam,
    Dariusz Żołna


    > To jest juz procesor (CPU: 400 MHz Samsung S3C2440A ARM920) a nie kontroler
    > i naprawde malo kto bawi sie bez OS-a.
    >
    > Naprwade nie warto - jesli masz port systemu na dana platforme to migniecie
    > diodami wymaga 5 minut pracy.
    >
    > ---> http://www.friendlyarm.net/dl.php?file=linux-example
    s.tgz
    > i przyklad leds :
    >
    > int main(int argc, char **argv)
    > {
    > int on;
    > int led_no;
    > int fd;
    > if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 ||
    > sscanf(argv[2],"%d", &on) != 1 ||
    > on < 0 || on > 1 || led_no < 0 || led_no > 3) {
    > fprintf(stderr, "Usage: leds led_no 0|1\n");
    > exit(1);
    > }
    > fd = open("/dev/leds0", 0);
    > if (fd < 0) {
    > fd = open("/dev/leds", 0);
    > }
    > if (fd < 0) {
    > perror("open device leds");
    > exit(1);
    > }
    > ioctl(fd, on, led_no);
    > close(fd);
    > return 0;
    > }
    >


  • 5. Data: 2010-02-16 18:26:06
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: Artur Lipowski <l...@p...onet.pl>

    On 16.02.2010 16:33, Dariusz Zolna wrote:
    > cepu69 pisze:
    >> A czy zastanowiles sie nad przyczyna takiego stanu rzeczy???
    >
    > Tak, zastanawiałem się i nie potrzebuję systemu. Dlatego właśnie
    > wybrałem Mini2440 a nie EPIĘ PX.

    Tak z ciekawości (i bez złośliwości ;-) ).
    Jaki to może być projekt, który wymga takiego "potwora" jak ARM9, a nie wymaga
    systemu?

    ...
    > więc może to kwestia poprawności zapisu samego kodu?
    > Bo dostaję mnóstwo błędów typu:
    >
    > 2440init.s:13: Error: bad instruction `get option.inc'
    ...

    Bo pewnie plik jest napisany asemblerem według składni ARM-a.
    Zmiana języka na wariant GNU prosta, acz uperdliwa.


    Pozdrawiam,
    --
    Artur Lipowski


  • 6. Data: 2010-02-16 18:32:03
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: cepu69 <c...@t...pl>

    Dariusz Zolna wrote:

    > cepu69 pisze:
    >> A czy zastanowiles sie nad przyczyna takiego stanu rzeczy???
    >
    > Tak, zastanawiałem się i nie potrzebuję systemu. Dlatego właśnie
    > wybrałem Mini2440 a nie EPIĘ PX.
    Upps, aler moja sugestia zmierzla w kierunku iz rzeczony ARM jest
    odpowiednikiem platformy x86 czyli juz lekko skomplikowany czyli nie wart
    wynajdowania kola od nowa.

    > Na friendlyarm jest zestaw testowych funkcji, które nie wyglądają na
    > wielce skomplikowane (mam o wiele bardziej rozbudowane projekty na AVR).
    > Problemem jest to, że chińczyki przygotowały je przy użyciu komercyjnego
    > kompilatora, a ja jednak wolałbym użyć GCC.
    Nie wiem o jakich przykladach mowisz bo wszystko co linuch-podobne czyli
    loader : u-boot itp oraz linuchy sa TYLKO kompilowalne z uzyciem gcc

    > Zrobiłem pewien postęp, projekt się kompiluje, ale kompilator nie lubi
    > pliku "2440init.s". Wygląda jakby traktował go jako plik w C a nie w
    > Asemblerze.
    Ja osobiscie nie rzezbil bym w wynajdowanie kola, tylko uzyl ktoregos z
    bootloaderow jako projekt bazowy bo dzial na tej platformie :
    -> http://www.friendlyarm.net/dl.php?file=bootloader_20
    090728.zip
    vboot wyglada na najprostszy i o dziwo buduje sie go przy pomocy
    arm-linux-gcc ;) przynajmniej tak twierdzi Makefile ;)

    all:
    arm-linux-gcc -mabi=aapcs-linux -mno-thumb-interwork -Os -Wall -c
    head.S 244x_lib.c nand.c main.c
    arm-linux-ld -T mem.lds -Bstatic head.o 244x_lib.o nand.o main.o
    arm-linux-objcopy -O binary -S a.out
    vboot.bin -R .comment -R .stab -R .stabstr
    rm *.o a.out

    clean:
    rm vboot.bin



  • 7. Data: 2010-02-16 19:01:20
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: Dariusz Zolna <a...@u...com>

    Artur Lipowski pisze:
    > Tak z ciekawości (i bez złośliwości ;-) ).
    > Jaki to może być projekt, który wymga takiego "potwora" jak ARM9, a nie
    > wymaga systemu?

    Potrzebuję obsługiwać TFT 800x480, komunikować się ze światem
    zewnętrznym przez UART albo I2C, a nie potrzebuję całego narzutu
    zbędnych funkcji, startowych napisów, loga i kilkunastu sekund na
    uruchomienie systemu.
    Nie uważam, żeby ARM9 był dużo bardziej kłopotliwy w programowaniu niż
    Atmega128, na którą mam kilkadziesiąt tys linii kodu.


    > Bo pewnie plik jest napisany asemblerem według składni ARM-a.
    > Zmiana języka na wariant GNU prosta, acz uperdliwa.

    Prawie 900 linii :/

    Dariusz Żołna


  • 8. Data: 2010-02-17 11:53:41
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: cepu69 <c...@t...pl>

    Dariusz Zolna wrote:

    > Artur Lipowski pisze:
    >> Tak z ciekawości (i bez złośliwości ;-) ).
    >> Jaki to może być projekt, który wymga takiego "potwora" jak ARM9, a nie
    >> wymaga systemu?
    >
    > Potrzebuję obsługiwać TFT 800x480, komunikować się ze światem
    > zewnętrznym przez UART albo I2C, a nie potrzebuję całego narzutu
    > zbędnych funkcji, startowych napisów, loga i kilkunastu sekund na
    > uruchomienie systemu.
    Przepraszam za zlosliwosc ale jest to kolejna systuacja kiedy wychodzi
    podejscie typu : "OS powoduje tylko zbedny narzut"
    Szkoda tylko iz gdy pojawia sie np. potrzeba dostepu do targetu przez siec
    TCP/IP lub wyswietlania okienek - natychmiast problem narzutu znika.

    A napisy startowe, logi i "zbedne funkcje" i tak bedziesz musial
    wyprodukowac.

    > Nie uważam, żeby ARM9 był dużo bardziej kłopotliwy w programowaniu niż
    > Atmega128, na którą mam kilkadziesiąt tys linii kodu.
    Dokladnie i dlatego tez mozna samemu oprogramowac wersje embbeded x86 -
    wywalasz BIOS'a i startujesz swoj kod zaraz po resecie ;)

    >> Bo pewnie plik jest napisany asemblerem według składni ARM-a.
    >> Zmiana języka na wariant GNU prosta, acz uperdliwa.
    >
    > Prawie 900 linii :/
    Co do problemu - u mnie w pracy pacjent zawzial sie i tez "z palucha
    popchna" wiekszego ARM. A zrobil to tak - tzw. rozbiegowke czyli
    inicjalizacja procesora wzial od producenta procka i podlaczyl jako
    biblioteke standardowa uzyl newlib-a -> http://sourceware.org/newlib/
    a driver, czyli dostep do portu szeregowego napisal sam.



  • 9. Data: 2010-02-17 22:51:15
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: Dariusz Zolna <a...@u...com>

    cepu69 pisze:
    > Upps, aler moja sugestia zmierzla w kierunku iz rzeczony ARM jest
    > odpowiednikiem platformy x86 czyli juz lekko skomplikowany czyli nie wart
    > wynajdowania kola od nowa.

    Nie jest i uwierz mi, żadnego koła nie wynajduję.
    Problem rozwiązałem i wszystko czego potrzebowałem śmiga jak chciałem -
    obraz wygenerowany przez mój program pokazuje się natychmiast po
    włączeniu zasilania. Bez żadnych zbędnych pierdół.


    > Ja osobiscie nie rzezbil bym w wynajdowanie kola, tylko uzyl ktoregos z
    > bootloaderow jako projekt bazowy bo dzial na tej platformie :

    No to jednak chyba wynalazłem koło, z tym że GCC sobie nie radzi z kodem
    w asemblerze (albo ja nie wiem jak to zrobić), po prostu kupię
    kompilator ARM-a i tyle.

    Dariusz Żołna


  • 10. Data: 2010-02-18 11:42:10
    Temat: Re: ARM9 + GCC + makefile do hello world
    Od: Adam Dybkowski <a...@4...pl>

    W dniu 2010-02-16 20:01, Dariusz Zolna pisze:

    >> Jaki to może być projekt, który wymga takiego "potwora" jak ARM9, a
    >> nie wymaga systemu?
    >
    > Potrzebuję obsługiwać TFT 800x480, komunikować się ze światem
    > zewnętrznym przez UART albo I2C, a nie potrzebuję całego narzutu
    > zbędnych funkcji, startowych napisów, loga i kilkunastu sekund na
    > uruchomienie systemu.

    Oj chyba jako "system" uznajesz tylko wynalazki pokroju Linuxa czy Win.
    Na procki tego typu system operacyjny jest prawie że niezbędny
    (zarządzanie pamięcią, gotowe sterowniki np. do UARTu czy LCD,
    komunikacja sieciowa itp) - ale nie ma nic wspólnego ze "startowym
    logiem". A sam start przeciętnego systemu na ARM9 (nie Linuxa) to
    sekunda, może nieco mniej. Poczytaj np. o Nut/OS albo FreeRTOS (oba
    darmowe, dostępne z pełnymi źródłami).

    > Nie uważam, żeby ARM9 był dużo bardziej kłopotliwy w programowaniu niż
    > Atmega128, na którą mam kilkadziesiąt tys linii kodu.

    A jednak jest. Sterowniki bardziej skomplikowane (ot choćby obsługa
    UARTu), zarządzanie pamięcią dużo bardziej zagmatwane (ARM9 ma kesze
    instrukcji i danych oraz MMU), jeszcze bardziej przerwania i wyjątki.

    Polecam rozpoczęcie zabawy najlepiej od systemu, który obsługuje i
    ATmegę128, i różne ARMy - Nut/OS (www.ethernut.de). Posiada wiele
    gotowych sterowników (UARTy, stos TCP/IP itd) tak że będziesz mógł
    skupić się na wytworzeniu właściwego "mięska" zamiast głowić się jak
    przełączać kilka wątków samemu.

    Jednakże ARM9 to duży potwór i najlepiej się czuje np. w Linuxie.
    Poszukaj, czy dla twojej płytki nie ma już jakiegoś gotowego Linuxa (np.
    OpenWRT) - skupisz się wtedy na programowaniu po prostu aplikacji
    linuxowej. A możliwe, że twój LCD będzie już obsługiwany jako
    FrameBuffer - dostęp z własnej aplikacji banalny. System z Flasha będzie
    wstawać z 5s - to chyba nie za długo?

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: