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

[ATmega644][WinAVR] Problemy z kompilacją.

mrh 09 Cze 2010 18:40 3015 6
REKLAMA
  • #1 8173019
    mrh
    Poziom 18  
    Mam problem z kompilacją, nie wiem gdzie jest błąd cały czas wyskakuje mi to samo. Dzieje się zawsze tak kiedy dołączam pliki do projektu np.do lcd HD44780.

    
    > "make.exe" all
    makefile:533: *** multiple target patterns.  Stop.
    
    > Process Exit Code: 2
    > Time Taken: 00:00
    


    Mój plik main wygląda tak:

    
    #include <avr/io.h>
    #define F_CPU 8000000
    #include <util/delay.h>
    #include "HD44780.h"
    
    
    int main()
    {
    	LCD_Initalize();
    	
    	for(;;)
    	{
    		LCD_Clear();
    		LCD_WriteText("1234567890");
    		_delay_ms(250);
    	}
    	return 0;
    }
    
    	



    A cały projekt jest w załączniku.
  • REKLAMA
  • #2 8173052
    tadzik85
    Poziom 38  
    Pewnie jakiś niedozwolony niewidoczny znak w makefile
  • REKLAMA
  • #3 8173067
    tmf
    VIP Zasłużony dla elektroda
    To najpewniej błąd składni w makefile. Z tego co widzę używasz absolutnych ścieżek do plików, w makefile tego nie powinieneś robić. Ścieżki powinny być względne. Jeśli masz problem z makefile to użyj AVR Studio do jego wygenerowania.
  • REKLAMA
  • #4 8173897
    OlekM
    Poziom 17  
    U mnie projekt skompilował się poprawnie, po usunięciu wspomnianej wcześniej bezwzględnej ścieżki. Zatem stosowna linijka w makefile wygląda u mnie tak:

    SRC = $(TARGET).c  HD44780.c


    Kompilacja kończy się dwoma ostrzeżeniami.
    Jedno z nich usuniesz wpisując void w puste nawiasy funkcji main.
    Drugie, usuwając linię #define F_CPU 8000000, ponieważ tą stałą dodaje sam plik makefile (jej wartość ustalasz "na górze" tego pliku).

    No i wszystko gra :-)

    //edit:

    Dodam jeszcze, że formalnie przyczyną problemu był dwukropek w ścieżce (to znak o szczególnym znaczeniu dla programu make)
  • REKLAMA
  • #5 8175993
    mrh
    Poziom 18  
    Dzięki Panowie wszystko się ładnie skompilowało.

    Mam jeszcze jedno pytanie... czemu jak chcę otrzymać plik wyjściowy w systemie binarnym to dalej dostaję w szesnastkowym.
    Ustawione mam tak:
    
    # Output format. (can be srec, ihex, binary)
    FORMAT = binary
    


    Trzeba coś gdzieś jeszcze ustawić(przestawić) ?
  • #6 8177211
    OlekM
    Poziom 17  
    mrh napisał:

    Mam jeszcze jedno pytanie... czemu jak chcę otrzymać plik wyjściowy w systemie binarnym to dalej dostaję w szesnastkowym.


    Plik, który w takiej konfiguracji powstaje - choć ma rozszerzenie hex - jest plikiem binarnym (można mu zmienić rozszerzenie).

    Takie niedociągnięcie w makefile'u :-)

    (być może trzeba będzie wyczyścić projekt by make podmieniło "starego" hex'a na "nowego")

    Widocznie wszystkim do tej pory wystarczał .hex :D
  • #7 8177446
    PO.
    Poziom 20  
    Może dlatego że to nie goły wsad bin a format intel hex :) ?
REKLAMA