Problem z WinAVR
-
ZbeeGin
To co pokazałeś to nie kompilacja tylko czysczenie projektu przed jego rekompilacją. W pliku BAT zmień "clean" na "all" i będzie działać. Ewentualnie wpisz razem "clean all"
Poza tym PN2 domyślnie ma wszystko skonfigurowane i to musi działać. System z plikami BAT sprawdza się, jeśli masz jeszcze jakiś inny kompilator C (Borland C++, WinARM itp.)
Poza tym PN2 domyślnie ma wszystko skonfigurowane i to musi działać. System z plikami BAT sprawdza się, jeśli masz jeszcze jakiś inny kompilator C (Borland C++, WinARM itp.)
No właśnie. Instalowałem WinAvr na kilku komputerach i zawsze ruszało bez najmniejszego problemu przy poprawnie skonfigurowanym pliku makefile i umieszczeniu go w katalogu z plikiem *.cZbeeGin pisze:Poza tym PN2 domyślnie ma wszystko skonfigurowane i to musi działać
Proponuję aby kolega zamieścił plik zip z plikiem makefile i projektem. Wtedy zobaczymy w czym tkwi problem. Ewentualnie może prześlij na prv jak nie chcesz umieszczać na forum. Sprawdzę czy u mnie się skompiluje.
-
ZbeeGin
Kolego Grysek pokaż treści plików BAT i jak skonfigurowałeś poszczególne polecenia w PN2 bo pokręciłeś coś i to zdrowo.
A zmiennej TARGET w makefile przypisuje się nazwę pliku do kompilacji bez rozszerzenia.
Zatem nie main tylko AVR bo tak nazywa się plik z programem
Dlatego występował błąd w domyślnych ustawieniach PN2. Po prostu make.exe nie wiedziało o jaki plik Ci chodzi.
---------
Po zmianie w makefile i drobnych poprawkach w programie (stare pliki nagłówkowe i jeden błąd) wszystko się ładnie kompiluje:
A zmiennej TARGET w makefile przypisuje się nazwę pliku do kompilacji bez rozszerzenia.
Zatem nie main tylko AVR bo tak nazywa się plik z programem
Kod: Zaznacz cały
# Target file name (without extension).
TARGET = AVR---------
Po zmianie w makefile i drobnych poprawkach w programie (stare pliki nagłówkowe i jeden błąd) wszystko się ładnie kompiluje:
Kod: Zaznacz cały
#include <avr\io.h>
#include <util\delay.h>
int main(void)
{
/*ustawienie wyjść*/
DDRD =0X7c;
for(;;)
{
/*wyłączenie diod*/
PORTD = 0x7c;
_delay_loop_2(0xffff);
/*włączenie diod*/
PORTD = 0;
_delay_loop_2(0xffff);
}
return 0;
}Kompilator w oknie Output pisze:> "make.exe" all
-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 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.
Compiling C: AVR.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./AVR.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/AVR.o.d AVR.c -o AVR.o
Linking: AVR.elf
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=AVR.o -std=gnu99 -Wundef -MMD -MP -MF .dep/AVR.elf.d AVR.o --output AVR.elf -Wl,-Map=AVR.map,--cref -lm
Creating load file for Flash: AVR.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock AVR.elf AVR.hex
Creating load file for EEPROM: AVR.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex AVR.elf AVR.eep || exit 0
Creating Extended Listing: AVR.lss
avr-objdump -h -S -z AVR.elf > AVR.lss
Creating Symbol Table: AVR.sym
avr-nm -n AVR.elf > AVR.sym
Size after:
AVR Memory Usage
----------------
Device: atmega128
Program: 234 bytes (0.2% Full)
(.text + .data + .bootloader)
Data: 0 bytes (0.0% Full)
(.data + .bss + .noinit)
-------- end --------
> Process Exit Code: 0
> Time Taken: 00:12
Ostatnio zmieniony 06 maja 2008, 20:25 przez ZbeeGin, łącznie zmieniany 1 raz.
No wiec tak. Projekt się kompiluje. Tyle że:
1. Plik który chcesz skompilować nazywa się AVR.c a ty w makefile wpisałeś TARGET=main a to nie ma prawa tak być. Jak już to TARGET=AVR
2. masz błędy w kodzie:
powinno być.
i zjadłeś jeden średnik w linii:
Projekt skompilował się w WinAvr20071221
1. Plik który chcesz skompilować nazywa się AVR.c a ty w makefile wpisałeś TARGET=main a to nie ma prawa tak być. Jak już to TARGET=AVR
2. masz błędy w kodzie:
Kod: Zaznacz cały
#include <avr/io.h>
#include <avr/delay.h>i zjadłeś jeden średnik w linii:
Kod: Zaznacz cały
PORTD=0;Projekt skompilował się w WinAvr20071221
Niestety dalej nic to nie dało oto zwartość plików BAT
make:
clean:
A te pliki to gdzie wogóle powinny być umieszczone w głównym katalogu programu??
make:
Kod: Zaznacz cały
@set PATH=C:\WinAVR-20071221\BIN;C:\WinAVR-20071221\UTILS\BIN;
make.exe allKod: Zaznacz cały
@set PATH=C:\WinAVR-20071221\BIN;C:\WinAVR-20071221\UTILS\BIN;
make.exe cleanMuszą być umieszczone w katalogu w którym masz plik AVR.c czyli swój plik z programem. U mnie pod wersją 20080402 musiałem zmienić
na
Jak masz wersję tą co ja to też to zmień a jak starszą to zostaw <avr/delay.h>
W załączniku masz poprawione i spróbuj to skompilować. Musi się dać.
Kod: Zaznacz cały
#define<avr/delay.h>Kod: Zaznacz cały
#define<util/delay.h>W załączniku masz poprawione i spróbuj to skompilować. Musi się dać.
- Załączniki
-
- AVR1.rar
- (13.75 KiB) Pobrany 548 razy
no teraz się poprawiło lecz wyskakuje cała masa błędów w oknie output
> "C:\WinAVR\make.bat"
c:\avr>make.exe all
-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 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.
Compiling C: AVR.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./AVR.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/AVR.o.d AVR.c -o AVR.o
AVR.c:1:18: warning: avrio.h: No such file or directory
In file included from AVR.c:2:
c:/winavr-20071221/bin/../avr/include/avr\delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."AVR.c: In function 'main':
AVR.c:7: error: 'DDRD' undeclared (first use in this function)
AVR.c:7: error: (Each undeclared identifier is reported only once
AVR.c:7: error: for each function it appears in.)
AVR.c:12: error: 'PORTD' undeclared (first use in this function)
make.exe: *** [AVR.o] Error 1
> Process Exit Code: 2
> Time Taken: 00:00
Aha i w folderze w którym znajdują się plik *.c i makefile to utworzył śię folder o nazwie .dep a w tym folderze plik AVR.o.d
[ Dodano: 2008-05-07, 09:32 ]
A ten program z załącznika się skompilował poprawanie
tylko czemu ten mój nie chce??
> "C:\WinAVR\make.bat"
c:\avr>make.exe all
-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 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.
Compiling C: AVR.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./AVR.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/AVR.o.d AVR.c -o AVR.o
AVR.c:1:18: warning: avrio.h: No such file or directory
In file included from AVR.c:2:
c:/winavr-20071221/bin/../avr/include/avr\delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."AVR.c: In function 'main':
AVR.c:7: error: 'DDRD' undeclared (first use in this function)
AVR.c:7: error: (Each undeclared identifier is reported only once
AVR.c:7: error: for each function it appears in.)
AVR.c:12: error: 'PORTD' undeclared (first use in this function)
make.exe: *** [AVR.o] Error 1
> Process Exit Code: 2
> Time Taken: 00:00
Aha i w folderze w którym znajdują się plik *.c i makefile to utworzył śię folder o nazwie .dep a w tym folderze plik AVR.o.d
[ Dodano: 2008-05-07, 09:32 ]
A ten program z załącznika się skompilował poprawanie
Czemu Twój nie chce? miałeś kilka błędów. Pisali o tym snow, i ZbeeGin.
Pobrałem Twój program i zmieniłem:
#define <avrio.h>
na
#define <avr/io.h>
Zapomniałeś ukośnika.
Potem zmieniłem to co pisze dwa posty wyżej.
Poza tym zapomniałeś średnika tam gdzie pisał snow, i w makefile w miejscu TARGRET = main napisałem TARGET = AVR.
Czyli to co wcześniej już pisali koledzy. To wszystko.
Pobrałem Twój program i zmieniłem:
#define <avrio.h>
na
#define <avr/io.h>
Zapomniałeś ukośnika.
Potem zmieniłem to co pisze dwa posty wyżej.
Poza tym zapomniałeś średnika tam gdzie pisał snow, i w makefile w miejscu TARGRET = main napisałem TARGET = AVR.
Czyli to co wcześniej już pisali koledzy. To wszystko.
-
ZbeeGin
-
Przemo_2014
- -
- Posty: 3
- Rejestracja: 26 lip 2008, 19:24
- Lokalizacja: Wroclaw\Poznań
-
ZbeeGin
-
Przemo_2014
- -
- Posty: 3
- Rejestracja: 26 lip 2008, 19:24
- Lokalizacja: Wroclaw\Poznań
Kod ten sam co i u kolegi. Rezultaty kompilacji:
pierwszej:
> "C:\WinAVR\test\halo\make.bat"
c:\winavr\test\halo>make.exe
-------- begin --------
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 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.
Compiling C: halo.c
avr-gcc -c -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=4000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/halo.lst -std=gnu99 -Wundef -MD -MP -MF .dep/halo.o.d halo.c -o obj/halo.o
Linking: halo.elf
avr-gcc -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=4000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/halo.o -std=gnu99 -Wundef -MD -MP -MF .dep/halo.elf.d obj/halo.o --output halo.elf -Wl,-Map=halo.map,--cref -lm
Creating load file for Flash: halo.hex
avr-objcopy -O ihex -R .eeprom halo.elf halo.hex
Creating load file for EEPROM: halo.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex halo.elf halo.eep
/usr/bin/sh: /c/WinAVR/BIN/avr-objcopy: Invalid argument
make.exe: [halo.eep] Error 126 (ignored)
Creating Extended Listing: halo.lss
avr-objdump -h -S halo.elf > halo.lss
/usr/bin/sh: /c/WinAVR/BIN/avr-objdump: Invalid argument
make.exe: *** [halo.lss] Error 126
> Process Exit Code: 2
> Time Taken: 00:01
druga:
> "C:\WinAVR\test\halo\make.bat"
c:\winavr\test\halo>make.exe
-------- begin --------
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 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.
Size before:
halo.elf :
section size addr
.text 110 0
.data 0 8388704
.bss 0 8388704
.noinit 0 8388704
.eeprom 0 8454144
.stab 852 0
.stabstr 132 0
.debug_aranges 20 0
.debug_pubnames 27 0
.debug_info 201 0
.debug_abbrev 141 0
.debug_line 204 0
.debug_str 126 0
Total 1813
Creating load file for EEPROM: halo.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex halo.elf halo.eep
/usr/bin/sh: /c/WinAVR/BIN/avr-objcopy: Invalid argument
make.exe: [halo.eep] Error 126 (ignored)
Creating Symbol Table: halo.sym
avr-nm -n halo.elf > halo.sym
Size after:
halo.elf :
section size addr
.text 110 0
.data 0 8388704
.bss 0 8388704
.noinit 0 8388704
.eeprom 0 8454144
.stab 852 0
.stabstr 132 0
.debug_aranges 20 0
.debug_pubnames 27 0
.debug_info 201 0
.debug_abbrev 141 0
.debug_line 204 0
.debug_str 126 0
Total 1813
-------- end --------
> Process Exit Code: 0
> Time Taken: 00:01
dołączam jeszcze pliki źródłowe:
pierwszej:
> "C:\WinAVR\test\halo\make.bat"
c:\winavr\test\halo>make.exe
-------- begin --------
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 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.
Compiling C: halo.c
avr-gcc -c -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=4000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/halo.lst -std=gnu99 -Wundef -MD -MP -MF .dep/halo.o.d halo.c -o obj/halo.o
Linking: halo.elf
avr-gcc -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=4000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/halo.o -std=gnu99 -Wundef -MD -MP -MF .dep/halo.elf.d obj/halo.o --output halo.elf -Wl,-Map=halo.map,--cref -lm
Creating load file for Flash: halo.hex
avr-objcopy -O ihex -R .eeprom halo.elf halo.hex
Creating load file for EEPROM: halo.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex halo.elf halo.eep
/usr/bin/sh: /c/WinAVR/BIN/avr-objcopy: Invalid argument
make.exe: [halo.eep] Error 126 (ignored)
Creating Extended Listing: halo.lss
avr-objdump -h -S halo.elf > halo.lss
/usr/bin/sh: /c/WinAVR/BIN/avr-objdump: Invalid argument
make.exe: *** [halo.lss] Error 126
> Process Exit Code: 2
> Time Taken: 00:01
druga:
> "C:\WinAVR\test\halo\make.bat"
c:\winavr\test\halo>make.exe
-------- begin --------
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 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.
Size before:
halo.elf :
section size addr
.text 110 0
.data 0 8388704
.bss 0 8388704
.noinit 0 8388704
.eeprom 0 8454144
.stab 852 0
.stabstr 132 0
.debug_aranges 20 0
.debug_pubnames 27 0
.debug_info 201 0
.debug_abbrev 141 0
.debug_line 204 0
.debug_str 126 0
Total 1813
Creating load file for EEPROM: halo.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex halo.elf halo.eep
/usr/bin/sh: /c/WinAVR/BIN/avr-objcopy: Invalid argument
make.exe: [halo.eep] Error 126 (ignored)
Creating Symbol Table: halo.sym
avr-nm -n halo.elf > halo.sym
Size after:
halo.elf :
section size addr
.text 110 0
.data 0 8388704
.bss 0 8388704
.noinit 0 8388704
.eeprom 0 8454144
.stab 852 0
.stabstr 132 0
.debug_aranges 20 0
.debug_pubnames 27 0
.debug_info 201 0
.debug_abbrev 141 0
.debug_line 204 0
.debug_str 126 0
Total 1813
-------- end --------
> Process Exit Code: 0
> Time Taken: 00:01
dołączam jeszcze pliki źródłowe:
- Załączniki
-
- halo.rar
- Pliki
- (7.27 KiB) Pobrany 545 razy