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

Eclipse + AVR - duży rozmiar programu po kompilacji.

Rariusz 21 Wrz 2009 22:52 3565 6
REKLAMA
  • #1 7043790
    Rariusz
    Specjalista Automatyk
    Posty: 1775
    Pomógł: 268
    Ocena: 128
    Witam

    Mam taki problem:
    Zainstalowałem wtyczkę do Eclipse żeby móc programować microkontrolery
    AVR ponieważ w eclipsie lepiej mi się pisze niż w AVR Studio.
    Po założeniu nowego projektu i wpisaniu takiego o to kodu:

    #include<avr/io.h>
    #include <stdio.h>
    #define F_CPU 1000000UL
    #define __OPTIMIZE__
    #include <util/delay.h>
    int main(void){
    DDRB=0xFF;

    while(1){
    PORTB&=~_BV(PB0);
    _delay_ms(1);
    PORTB=_BV(PB0);
    _delay_ms(1);
    }
    return 0;
    }

    i skompilowaniu zdziwiłem się bardzo ponieważ w AVR Studio program zajmował
    180 bytes a w Eclipse az 3358 bytes. Czemu po kompilacji w Eclipse program zajmuje za tyle???

    Dodatkowo na koniec kompilacji pojawia sie Error
    Cannot run program "C:\...\Projekty Eclipse C C++\AVR.Pierwszy projekt\Debug\AVR.Pierwszyprojekt.elf": Launching failed
    Cannot run program "C:\...\Projekty Eclipse C C++\AVR.Pierwszy projekt\Debug\AVR.Pierwszyprojekt.elf": Launching failed
    Cannot run program "C:\...\Projekty Eclipse C C++\AVR.Pierwszy projekt\Debug\AVR.Pierwszyprojekt.elf": Launching failed

    Gdzie tkwi błąd ??

    Pozdrawiam.
  • REKLAMA
  • #2 7043812
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    A optymalizację włączyłeś? Ale tak naprawde włączyłeś w opcjach kompilacji, a nie jakieś makro __OPTIMIZE__, które nic nie robi?

    To ostatnie jest dziwne, bo niezbyt wiem, czemu ty chcesz uruchamiać tego .elfa i co to miałoby dać.

    4\/3!!
  • REKLAMA
  • #3 7043861
    Rariusz
    Specjalista Automatyk
    Posty: 1775
    Pomógł: 268
    Ocena: 128
    Witam

    Już znalazłem optymalizację i program zmniejszył rozmiar.
    Ale dalej jest coś z tym .elf. i nie mogę skompilować.
    Pozdrawiam.
  • REKLAMA
  • #5 7043974
    kwesoly
    Poziom 15  
    Posty: 110
    Pomógł: 11
    Ocena: 1
    Domyślać się możemy że klikasz pewnie Run (F9) i całkiem słusznie ci mówi, że bezpośrednio na PC nie da się tego odpalić. Jeśli chodzi o rozmiar to przy ikonie młotka kliknij strzałkę i zbuduj wersje Release. Tak jak Freddie napisał OPITIMIZE to chyba nie jest sposób. Tak przygotowany plik hex możesz bezpośrednio wgrać po tym jak w Project Properties wybierzesz/skonfigurujesz programator.

    Jeśli chcesz po prostu emulować prace procka możesz zawsze użyć AVRStudio - jak to w miare połączyć z eclipse napisałem swego czasu tutaj: http://kwesoly.net/programowanie/avr/eclipse-winavr-avrstudio-debuger/
  • #6 7043979
    Rariusz
    Specjalista Automatyk
    Posty: 1775
    Pomógł: 268
    Ocena: 128
    Witam

    Założyłem nowy projekt z zakładce optymalizacji dałem
    Size Optimization (-Os)d
    Chce skompilować i mam taki bład:
    Launch failed. Binary not found.

    Wyłączyłem i włączyłem eclipsa i się skompilowało to zawsze są takie problemy??
    czy ja coś źle ustawiam??
  • REKLAMA
  • #7 7044062
    kwesoly
    Poziom 15  
    Posty: 110
    Pomógł: 11
    Ocena: 1
    Ciężko zgadywać - przynajmniej u mnie stworzenie projektu tworzy dwie konfiguracje przygotowane do zbudowania - debug i release, automatycznie release ma ustawione właśnie te optymalizacje. Natomiast komunikat "Launch failed. Binary not found." niewiele mówi sam w sobie - czy to jedyne co eclipse wywala w konsoli? Tam znajdziesz więcej informacji - i nie zadawaj pytań dopóki nie odniesiesz się do kilku sugestii z tego tematu - bo ja dalej mam wrażenie że możesz mylić Run i build.

Podsumowanie tematu

✨ Problem dotyczy znacznie większego rozmiaru skompilowanego programu AVR w Eclipse w porównaniu do AVR Studio oraz błędu uruchomienia pliku .elf. Przyczyną dużego rozmiaru była brak włączenia optymalizacji kompilatora w ustawieniach projektu, a nie definiowanie makra __OPTIMIZE__. Po włączeniu optymalizacji (-Os) rozmiar programu znacznie się zmniejszył. Błąd "Launch failed. Binary not found." pojawia się, ponieważ próba uruchomienia pliku .elf na komputerze PC jest niemożliwa – plik ten jest przeznaczony do mikrokontrolera, a nie do bezpośredniego uruchomienia w systemie operacyjnym. Zaleca się budowanie wersji Release z optymalizacją i wgrywanie pliku hex do mikrokontrolera za pomocą odpowiednio skonfigurowanego programatora. Do debugowania i emulacji pracy mikrokontrolera można użyć AVR Studio lub połączyć go z Eclipse według dostępnych poradników. Problem z błędem uruchomienia może wynikać z mylenia funkcji kompilacji (build) i uruchamiania (run) w Eclipse.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA