Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowanie avr w c pod ubuntu

maly_elektronik 16 Sty 2009 12:05 4631 8
  • #1 16 Sty 2009 12:05
    maly_elektronik
    Poziom 23  

    Witam :)
    Od jakiegoś czasu próbuje skompilować program dla procesora avr (oczywiście pod linuxem). Niestety w żaden sposób mi to nie wychodzi. Czy może mi ktoś wyjaśnić co i jak zrobić aby kompilować programy na avr'ki :?:
    PS. Próbowałem instalować gcc-avr i binutils ale w momencie w którym próbuje skompilowac te programy otrzymuje błędy

    0 8
  • #2 16 Sty 2009 13:04
    kred
    Poziom 19  

    U mnie działa.

    Podejrzewam że na forum nikt nie jest wróżką i z fusów Ci nikt nie wywróży co jest nie tak. Napisz wiecej informacji - jaki masz sprzęt, oprogramowanie, krok po kroku co robisz że Ci nie działa. Wyhledawałeś już na google jakiś tutorial? Podejrzewam że przynajmniej jeden byś znalazł.

    0
  • #3 16 Sty 2009 14:58
    cbreaker
    Poziom 9  

    Domyślnie w Ubuntu nie są instalowane narzędzia developerskie. Dlatego jeżeli np nie kompilowałeś nigdy jądra linuxa własnoręcznie to nie masz pewnie wielu programów potrzebnych do kompilacji.

    Na pewno musisz zainstalować paczki typu gcc-avr ,binutils-avr i avr-libc. Sprwdź czy masz takie pakiety jak np autoconf, make i kernel-headers. Jeżeli to będzie to powinno się skompilować.

    Najlepiej jakbyś wkleił co wyrzuca Ci kompilator podczas próby skompilowania programu.

    Pozdrawiam

    0
  • #4 16 Sty 2009 17:21
    Dr.Vee
    VIP Zasłużony dla elektroda

    Ehhh...
    Nic nie trzeba kompilować, wystarczy:

    Code:
    sudo aptitude install binutils-avr avr-libc avr-gcc make avrdude

    Ewentualnie jak nie masz zainstalowanego aptitude, to użyj
    Code:
    sudo apt-get install aptitude
    i dalej tak jak poprzednio :)

    Pozdrawiam,
    Dr.Vee

    0
  • #5 16 Sty 2009 18:02
    maly_elektronik
    Poziom 23  

    kred najpierw doczytaj co napisałem a potem się wypowiadaj bo wyraźnie napisałem że chodzi o kompilace a nie fuse bity i programowanie.

    Mam napisany najprostszy program w C (ustawia tylko port C na wyjście i podaje stan 0xFF). Posiadam plik makefile (znajduje się on w katalogu z programem w C) wchodzę do konsoli wpisuje cd Pulpit-> make i wywala błąd Makefile:16: *** brakujący separator. Stop.

    Poniżej treść Makefile:

    Code:

    PRG            = main
    OBJ            = main.o
    MCU_TARGET    = atmega8
    OPTIMIZE      = -O2
    DEFS          =
    LIBS          =
    # You should not have to change anything below here.
    CC            = avr-gcc
    # Override is only needed by avr-lib build system.
    override CFLAGS        = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) -I/usr/avr/include -D__AVR_ATMega8__
    override LDFLAGS      = -Wl,-Map,$(PRG).map
    OBJCOPY        = avr-objcopy
    OBJDUMP        = avr-objdump
    all: $(PRG).elf lst text eeprom
    $(PRG).elf: $(OBJ)
    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
    clean:
    rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak
    rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
    lst:  $(PRG).lst
    %.lst: %.elf
    $(OBJDUMP) -h -S $< > $@
    # Rules for building the .text rom images
    text: hex bin srec
    hex:  $(PRG).hex
    bin:  $(PRG).bin
    srec: $(PRG).srec
    %.hex: %.elf
    $(OBJCOPY) -j .text -j .data -O ihex $< $@
    %.srec: %.elf
    $(OBJCOPY) -j .text -j .data -O srec $< $@
    %.bin: %.elf
    $(OBJCOPY) -j .text -j .data -O binary $< $@
    # Rules for building the .eeprom rom images
    eeprom: ehex ebin esrec
    ehex:  $(PRG)_eeprom.hex
    ebin:  $(PRG)_eeprom.bin
    esrec: $(PRG)_eeprom.srec
    %_eeprom.hex: %.elf
    $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
    %_eeprom.srec: %.elf
    $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@
    %_eeprom.bin: %.elf
    $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@
    # Every thing below here is used by avr-libc's build system and can be ignored
    # by the casual user.
    FIG2DEV                = fig2dev
    EXTRA_CLEAN_FILES      = *.hex *.bin *.srec
    dox: eps png pdf
    eps: $(PRG).eps
    png: $(PRG).png
    pdf: $(PRG).pdf
    %.eps: %.fig
    $(FIG2DEV) -L eps $< $@
    %.pdf: %.fig
    $(FIG2DEV) -L pdf $< $@
    %.png: %.fig
    $(FIG2DEV) -L png $< $@

    0
  • #6 16 Sty 2009 19:24
    romario4
    Poziom 16  

    Najwidoczniej jest coś nie tak z plikiem makefile. Proponuję użyć pliku Makefile np. z pakietu WinAVR.

    0
  • #7 16 Sty 2009 19:38
    Dr.Vee
    VIP Zasłużony dla elektroda

    Klasyczny błąd - w regule komendy do wykonania muszą się zaczynać od znaku tabulacji.

    W Twoim przypadku:

    Code:
    clean:
    
        -rm -rf ...
        -rm -rf ...


    Niestety Makefile niezbyt się nadają do operacji typu copy-paste :)

    Pozdrawiam,
    Dr.Vee

    0
  • #8 16 Sty 2009 22:00
    Freddie Chopin
    Specjalista - Mikrokontrolery

    maly_elektronik napisał:
    kred najpierw doczytaj co napisałem a potem się wypowiadaj bo wyraźnie napisałem że chodzi o kompilace a nie fuse bity i programowanie.

    gratulacje! jestes wielkim_elektronikiem [; tylko pokaz nam gdzie ktos tu (poza toba) pisal o fuse bitach...

    piszesz sobie nowy temat w stylu 'mam costam, costam sciagnalem, cos tam napisalem, nie dziala mi, pomocy!' i od razu oczekujesz porad typu 'masz zle przecinek w 15 linii 7 pliku'... zart? prowokacja? nowe standardy wypowiedzi? ja z twojego pierwszego postu wywnioskowalem, ze masz problem, zeby skompilowac toolchain'a avr-gcc dla linuxa... albo ja jestem glupi, albo...

    4\/3!!

    0
  • #9 17 Sty 2009 10:44
    Dr.Vee
    VIP Zasłużony dla elektroda

    Freddie, po prostu niektórzy są już takimi hardcoreowymi elektronikami, że "wróżenie z fusów" kojarzy im się tylko z jednym ;)

    Pozdrawiam,
    Dr.Vee

    0