Skocz do zawartości

Część 1-Kurs programowania uC AVR w C (WinAVR, Kurs AVR-GCC)


Pomocna odpowiedź

Tym razem wyskakuje coś takiego:

rm -rf cos.o cos.elf dep/* cos.hex cos.eep

Build succeeded with 0 Warnings...

avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT cos.o -MF dep/cos.o.d -c ../cos.c

avr-gcc.exe: installation problem, cannot exec `cc1': No such file or directory

make: *** [cos.o] Error 1

Build failed with 1 errors and 0 warnings...

I to w programie AVRstudio

avr-gcc.exe: installation problem, cannot exec `cc1': No such file or directory

Poszukaj, gdzie masz wpisane "cc1". Musiałeś wpisać gdzieś w ustawieniach, albo w jakimś pliku.

Przejrzałem ustawienia i nic tam takiego nie ma. A co w ogóle ma wspólnego wpis "cc1" z działaniem programu? Powinno wyświetlić się tam coś innego czy co, bo nie rozumiem jaki to jest typ błędu?

Chodzi o to, że gdzieś _musiało_ zostać wpisane przez Ciebie lub kogoś innego "cc1", bo nei może odnaleźć takiego pliku bądź katalogu. Stąd pytanie: w jaki sposób dodałeś pliki do projektu? Czy przeniosłeś je z WinAVR (łącznie z plikami ustawień itp.) czy też dodałeś je normalnie?

Spróbuj utworzyć pusty projekt, wpisz tam tylko:

//tutaj daj include do io.h

main()

{

while(1)

{

}

}

I sprawdź czy sie kompiluje.

Dzieje się tak samo identyczny błąd. Program pisałem w winavr, plik makefile tworzyłem sam. Przeinstalowywałem już winavra kilkukrotnie i nic.

> "make.exe" all

-------- begin --------

avr-gcc (WinAVR 20090313) 4.3.2

Copyright © 2008 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.

make.exe: *** No rule to make target `main.elf', needed by `elf'. Stop.

> Process Exit Code: 2

> Time Taken: 00:00

To jest komunikat jaki wyskakuje po skompilowaniu programu który podałeś.

mariusz7844, jeszcze raz: robiłeś to w WinAVR czy w AVRStudio (którym?)? Bo z opisu wynika, że coś grzebałeś w pliku makefile.

Zrób wg tej instrukcji:

https://www.forbot.pl/forum/topics20/programowanie-przygotowanie-srodowiska-do-programowania-avr-vt3702.htm

Jeśli będziesz postępował wg tej instrukcji to musi działać. Oczywiście w "Project options" musisz wybrać odpowiedni procesor i inne ustawienia, bo na podstawie tych ustawięń AVRStudio tworzy makefile.

Nie neguję tego, że modyfikowanie samemu pliku makefile się przydaje, ale trzeba najpierw wiedzieć jak to zrobić, chociaż raz mieć to zrobione dobrze, a tutaj niestety widzę, że się błąkasz, zamiast skorzystać z odpowiednich narzędzi. To trochę tak, jakbyś próbował coś wywiercić mając tylko wiertło i szmatę do trzymania, zamiast użyć wiertarki.

Testowałem już każdą możliwą opcję w programach winAVR, oraz AVRStudio. Jednak tak łatwo się nie poddam. Tworzę właśnie wirtualny system windowsXP na dysku. Zobaczę czy uda mi się coś zdziałać. Zależy mi na możliwości programowania.

[ Dodano: 01-02-2013, 21:04 ]

Mam pytanie, jak w programie AVRstudio przypisać plik make do programu?? Bo wydaje mi się że nie jest on widziany.

W większości większych IDE (w tym Atmel Studio czy Eclipse) "mejkowanie" jest zautomatyzowane - nie trzeba tworzyć/edytować/przejmować się makefile'em...

mariusz7844, na jakim systemie pracujesz? Bo jeśli na Linux to AVRStudio4 ma poważne problemy a 5 w górę w ogóle nie ruszy.

I czy kompilujesz wywołując "make" z wiersza poleceń czy "Build" w programie? To pierwsze nie zadziała, bo plik makefile jest tworzony przez AVRS dopiero w momencie wywołania kompilacji.

Coś jest nie w porządku z plikiem makefile. Uprzednio zmieniałem jego nazwę przy tworzeniu, a gdy dziś zmieniłem nazwę na "makefile" wyskoczył inny komunikat:

"make.exe" all

-------- begin --------

avr-gcc (WinAVR 20100110) 4.3.3

Copyright © 2008 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: dioda.c

avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -O3 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./dioda.lst -std=gnu99 -MMD -MP -MF .dep/dioda.o.d dioda.c -o dioda.o

avr-gcc: CreateProcess: No such file or directory

make.exe: *** [dioda.o] Error 1

> Process Exit Code: 2

> Time Taken: 00:03

Przy własnej nazwie wyskakuje komunikat:

> "make.exe" all

make.exe: *** No rule to make target `all'. Stop.

> Process Exit Code: 2

> Time Taken: 00:01

.

Projekt robię w programie winavr

[ Dodano: 05-02-2013, 15:58 ]

Dobrze, to że plik makefile, nie nazywał się "Makefile" to mój błąd:D:D. Teraz coś się dzieje. Tylko co z tym komunikatem??

> "make.exe" all

-------- begin --------

avr-gcc (WinAVR 20100110) 4.3.3

Copyright © 2008 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: dioda.c

avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -O3 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./dioda.lst -std=gnu99 -MMD -MP -MF .dep/dioda.o.d dioda.c -o dioda.o

avr-gcc: CreateProcess: No such file or directory

make.exe: *** [dioda.o] Error 1

> Process Exit Code: 2

> Time Taken: 00:02

Hmm, spróbuj nie komplikować sobie życia:

- utwórz nowy projekt w AVRS, skonfiguruj np. dla ATmegi8 (wystarczy wybrać symulator do debuggowania i on sam wstępnie skonfiguruje), nazwij go np. test

- w pliku test.c wpisz:

#include

int main(void)

{

while(1)

{

}

}

- spróbuj skompilować.

Powyższe zrób w katalogu ze ścieżką bez spacji - kiedyś mogło powodować problemy dla avr-gcc.

Mi to dało wynik:

Build started 6.2.2013 at 09:38:23

avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d -c ../test.c

avr-gcc -mmcu=atmega8 -Wl,-Map=test.map test.o -o test.elf

avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature test.elf test.hex

avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex test.elf test.eep || exit 0

avr-objdump -h -S test.elf > test.lss

AVR Memory Usage

----------------

Device: atmega8

Program: 100 bytes (1.2% Full)

(.text + .data + .bootloader)

Data: 0 bytes (0.0% Full)

(.data + .bss + .noinit)

Build succeeded with 0 Warnings...

mariusz7844, to nie AVRS nie moze znaleźć, tylko kompilator, którym jest avr-gcc. WinAVR będzie miało dokładnie ten sam problem. Nie wiem jak Eclipse, ale pewnie też. Najnowszy AVRS nie powinien mieć problemów i tym samym sądzę, że byłby naprawdę dobrym pomysłem.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...