Używam linuxa Gentoo, i kompilatora AVR-GCC. Niedawno zabrałem się za programowanie AVR-ów. Startuję na AT90S2313. Pierwsze programy pisałem w bascomie, ale musiałem je kompilować na osobnym komputerze, na którym jest windows. Postanowiłem przerzucić się na C, ponieważ powinien dobrze chodzić na linuxie, a poza tym pisałem już programy na PC w C++, łatwo mi będzie nauczyć się C. Ja to na początku bywa, nie obyło się bez problemów, ale po trzech dniach udało mi się skompilować AVR-GCC. I tutaj zaczynają się schody. Napisałem prosty program dołączyłem do niego tylko avr/io.h oraz util/delay.h, wydaje mi się, że to absolutne minimum. W programie dałem tylko pętlę nieskończoną for, oraz polecenie _delay_ms(200);. Po kompilacji za pomocą avrdude wgrywałem plik *.hex do procesora, i program wywalił mi następujący komunikat:
Wydaje mi się, że plik hex nie mieści się w pamięci FLASH procka. Jeśli tak, to w jaki sposób tak mały programik ma taki rozmiar? Dodam, że avrdude ładował programy z bascoma poprawnie. A ponoć kompilatory C dają mniejsze pliki wynikowe. Wygooglowałem coś na temat optymizacji w AVR-GCC, ale żadnych szczegółów.
Będę wdzięczny za wskazówki, bardzo mi zależy na rozwiązaniu tego problemu.
avrdude -c stk200 -p t2313 -U flash:w:prog1.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e910a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "prog1.hex"
avrdude: input file prog1.hex auto detected as Intel Hex
avrdude: ERROR: address 0x0810 out of range at line 129 of prog1.hex
avrdude: write to file 'prog1.hex' failed
avrdude: safemode: Fuses OK
avrdude done. Thank you.Wydaje mi się, że plik hex nie mieści się w pamięci FLASH procka. Jeśli tak, to w jaki sposób tak mały programik ma taki rozmiar? Dodam, że avrdude ładował programy z bascoma poprawnie. A ponoć kompilatory C dają mniejsze pliki wynikowe. Wygooglowałem coś na temat optymizacji w AVR-GCC, ale żadnych szczegółów.
Będę wdzięczny za wskazówki, bardzo mi zależy na rozwiązaniu tego problemu.
