Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięAVT-987 - problem z kompilacją źródeł
Moderatorzy:Jacek Bogusz, Grzegorz Becker, procesorowiec, robertw, Moderatorzy
Witam
Przy kompilacji źródeł w AVR Studio pojawia mi się błąd w funkcji 'GetTemp'
" ../AVT987.c:109: warning: array subscript has type `char' "
Kompilując te same źródła od strony AVRSide mam taki sam błąd.
Źródła są pobrane bezpośrednio ze strony EP, narazie bez żadnych przeróbek.
Proszę o ew. pomoc lub podpowiedź od czego mam zacząć ?
~~~~
Wersja AVR Studio:
AVR Studio 4.12.460
GUI Version 4, 12, 0, 460
AVR Simulator 1, 0, 1, 6
ATMEGA8 186
Przy kompilacji źródeł w AVR Studio pojawia mi się błąd w funkcji 'GetTemp'
" ../AVT987.c:109: warning: array subscript has type `char' "
Kompilując te same źródła od strony AVRSide mam taki sam błąd.
Źródła są pobrane bezpośrednio ze strony EP, narazie bez żadnych przeróbek.
Proszę o ew. pomoc lub podpowiedź od czego mam zacząć ?
~~~~
Wersja AVR Studio:
AVR Studio 4.12.460
GUI Version 4, 12, 0, 460
AVR Simulator 1, 0, 1, 6
ATMEGA8 186
Jest to tylko ostrzeżenie i program powinien działać poprawnie.
Mówi ono że jako index dla tablicy została użyta zmienna typu char - jeśli zmienisz typ tej zmiennej na int to ostrzeżenie zniknie - ale program będzie miał większą objętość i zajmie więcej RAM-u. Jeśli programista panuje nad zakresem tablic to powinno działać.
Marek
Mówi ono że jako index dla tablicy została użyta zmienna typu char - jeśli zmienisz typ tej zmiennej na int to ostrzeżenie zniknie - ale program będzie miał większą objętość i zajmie więcej RAM-u. Jeśli programista panuje nad zakresem tablic to powinno działać.
Marek
tzn. żeby bardzo nie namieszać to podam wszystko co jest efektem kompilacji:
w AVRStudio:
Build started 11.3.2009 at 19:04:38
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,AVT987.o,-MF,dep/AVT987.o.d -c ../AVT987.c
../AVT987.c: In function `GetTemp':
../AVT987.c:107: error: 'for' loop initial declaration used outside C99 mode
../AVT987.c:109: warning: array subscript has type `char'
make: *** [AVT987.o] Error 1
Build failed with 1 errors and 1 warnings...
oraz w AVRSide:
(po kompilacji <Ctrl+F9>:
rl1.c:109 - warning: array subscript has type 'char'
(po kompilacji <F9>:
rl1.c:156: error - undefined reference to 'dtostrf'
rl1.c:215: error - undefined reference to 'dtostrf'
rl1.c:242: error - undefined reference to 'dtostrf'
Źródłą są tutaj.
http://www.ep.com.pl/pobierz.php?id=3036
Narazie nic nie zmieniałem. Przymierzam się do kilku zmian ale chciałem na początek sprawdzić czy kompilacja oryginalnych źródeł da taki sam plik HEX jaki jest opublikowany.
w AVRStudio:
Build started 11.3.2009 at 19:04:38
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,AVT987.o,-MF,dep/AVT987.o.d -c ../AVT987.c
../AVT987.c: In function `GetTemp':
../AVT987.c:107: error: 'for' loop initial declaration used outside C99 mode
../AVT987.c:109: warning: array subscript has type `char'
make: *** [AVT987.o] Error 1
Build failed with 1 errors and 1 warnings...
oraz w AVRSide:
(po kompilacji <Ctrl+F9>:
rl1.c:109 - warning: array subscript has type 'char'
(po kompilacji <F9>:
rl1.c:156: error - undefined reference to 'dtostrf'
rl1.c:215: error - undefined reference to 'dtostrf'
rl1.c:242: error - undefined reference to 'dtostrf'
Źródłą są tutaj.
http://www.ep.com.pl/pobierz.php?id=3036
Narazie nic nie zmieniałem. Przymierzam się do kilku zmian ale chciałem na początek sprawdzić czy kompilacja oryginalnych źródeł da taki sam plik HEX jaki jest opublikowany.
Spróbuj zamiast
Wpisać
lub lepiej
Marek
Kod: Zaznacz cały
for(char i=8;i>=0;i--)
Kod: Zaznacz cały
char i;
for(i=8;i>=0;i--)
Kod: Zaznacz cały
int i;
for(i=8;i>=0;i--)
Po zmianie na tę pierwszą propozycję mam taki efekt:
Po zmianie na tą drugą wersję mam efekt identyczny - też 139 błędów.
Edit:
Kod: Zaznacz cały
Build started 13.3.2009 at 19:53:00
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,AVT987.o,-MF,dep/AVT987.o.d -c ../AVT987.c
../AVT987.c: In function `GetTemp':
../AVT987.c:111: warning: array subscript has type `char'
avr-gcc -mmcu=atmega8 AVT987.o -o AVT987.elf
E:\WinAVR\bin\..\lib\gcc\avr\3.4.3\..\..\..\..\avr\bin\ld.exe: region text is full (AVT987.elf section .text)
AVT987.o(.text+0x2a0): In function `Intro':
../AVT987.c:123: undefined reference to `WriteLcd'
AVT987.o(.text+0x2a6):../AVT987.c:124: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x2ac):../AVT987.c:125: undefined reference to `WriteLcd'
AVT987.o(.text+0x2b2):../AVT987.c:126: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x2b8):../AVT987.c:127: undefined reference to `DispTim'
AVT987.o(.text+0x2bc):../AVT987.c:128: undefined reference to `DispTim'
AVT987.o(.text+0x2ca):../AVT987.c:129: undefined reference to `WriteLcd'
AVT987.o(.text+0x2d0):../AVT987.c:130: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x2d6):../AVT987.c:131: undefined reference to `WriteLcd'
AVT987.o(.text+0x2dc):../AVT987.c:132: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x2e2):../AVT987.c:133: undefined reference to `DispTim'
AVT987.o(.text+0x2e6):../AVT987.c:134: undefined reference to `DispTim'
AVT987.o(.text+0x30a): In function `MeasureTempThread':
../AVT987.c:141: undefined reference to `AdcGetValue'
AVT987.o(.text+0x3c6): In function `DispMainScreen':
../AVT987.c:153: undefined reference to `DispTim'
AVT987.o(.text+0x3d2):../AVT987.c:155: undefined reference to `WriteLcd'
AVT987.o(.text+0x3d8):../AVT987.c:157: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x3f8):../AVT987.c:158: undefined reference to `dtostrf'
AVT987.o(.text+0x3fe):../AVT987.c:159: undefined reference to `PutsLcd'
AVT987.o(.text+0x404):../AVT987.c:160: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x40a):../AVT987.c:162: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x438):../AVT987.c:163: undefined reference to `dtostrf'
AVT987.o(.text+0x43e):../AVT987.c:164: undefined reference to `PutsLcd'
AVT987.o(.text+0x444):../AVT987.c:166: undefined reference to `WriteLcd'
AVT987.o(.text+0x44a):../AVT987.c:168: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x4a6):../AVT987.c:169: undefined reference to `dtostrf'
AVT987.o(.text+0x4ac):../AVT987.c:170: undefined reference to `PutsLcd'
AVT987.o(.text+0x4b2):../AVT987.c:171: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x4ee):../AVT987.c:176: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x4f6):../AVT987.c:179: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x4fe):../AVT987.c:182: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x504):../AVT987.c:186: undefined reference to `DispTim'
AVT987.o(.text+0x55a): In function `DispSetScreen':
../AVT987.c:206: undefined reference to `WriteLcd'
AVT987.o(.text+0x560):../AVT987.c:207: undefined reference to `WriteLcd'
AVT987.o(.text+0x566):../AVT987.c:208: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x5e4):../AVT987.c:214: undefined reference to `dtostrf'
AVT987.o(.text+0x60e):../AVT987.c:217: undefined reference to `dtostrf'
AVT987.o(.text+0x614):../AVT987.c:220: undefined reference to `WriteLcd'
AVT987.o(.text+0x61a):../AVT987.c:221: undefined reference to `PutsLcd'
AVT987.o(.text+0x64c): In function `DisplaySelfTunning':
../AVT987.c:228: undefined reference to `DispTim'
AVT987.o(.text+0x668):../AVT987.c:234: undefined reference to `WriteLcd'
AVT987.o(.text+0x66e):../AVT987.c:235: undefined reference to `WriteLcd'
AVT987.o(.text+0x67e):../AVT987.c:239: undefined reference to `WriteLcd'
AVT987.o(.text+0x684):../AVT987.c:240: undefined reference to `WriteLcd'
AVT987.o(.text+0x68a):../AVT987.c:242: undefined reference to `WriteLcd'
AVT987.o(.text+0x690):../AVT987.c:243: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x6b0):../AVT987.c:244: undefined reference to `dtostrf'
AVT987.o(.text+0x6b6):../AVT987.c:245: undefined reference to `PutsLcd'
AVT987.o(.text+0x6bc):../AVT987.c:246: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x6cc):../AVT987.c:250: undefined reference to `WriteLcd'
AVT987.o(.text+0x6d2):../AVT987.c:251: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x6d8):../AVT987.c:252: undefined reference to `WriteLcd'
AVT987.o(.text+0x6de):../AVT987.c:253: undefined reference to `PutsLcd_P'
7: undefined reference to `WriteLcd'
AVT987.o(.text+0x6f4):../AVT987.c:258: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x6fa):../AVT987.c:259: undefined reference to `WriteLcd'
AVT987.o(.text+0x700):../AVT987.c:260: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x706):../AVT987.c:264: undefined reference to `DispTim'
AVT987.o(.text+0x734): In function `DisplayThread':
../AVT987.c:278: undefined reference to `KeyZTim'
AVT987.o(.text+0x73c):../AVT987.c:278: undefined reference to `key_p'
AVT987.o(.text+0x77c):../AVT987.c:286: undefined reference to `key_p'
AVT987.o(.text+0x784):../AVT987.c:289: undefined reference to `key_r'
AVT987.o(.text+0x7d0):../AVT987.c:292: undefined reference to `Tim'
AVT987.o(.text+0x7da):../AVT987.c:295: undefined reference to `key_p'
AVT987.o(.text+0x7e2):../AVT987.c:298: undefined reference to `key_r'
AVT987.o(.text+0x82c):../AVT987.c:301: undefined reference to `Tim'
AVT987.o(.text+0x836):../AVT987.c:304: undefined reference to `key_p'
AVT987.o(.text+0x850):../AVT987.c:309: undefined reference to `key_p'
AVT987.o(.text+0x866):../AVT987.c:314: undefined reference to `ExitTim'
AVT987.o(.text+0x86a):../AVT987.c:314: undefined reference to `ExitTim'
AVT987.o(.text+0x870):../AVT987.c:315: undefined reference to `KeyZTim'
AVT987.o(.text+0x87a):../AVT987.c:318: undefined reference to `key_p'
AVT987.o(.text+0x894):../AVT987.c:324: undefined reference to `KeyZTim'
AVT987.o(.text+0x89a):../AVT987.c:325: undefined reference to `WriteLcd'
AVT987.o(.text+0x8a0):../AVT987.c:326: undefined reference to `WriteLcd'
AVT987.o(.text+0x8a6):../AVT987.c:327: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x8aa):../AVT987.c:329: undefined reference to `key_p'
AVT987.o(.text+0x8b0):../AVT987.c:333: undefined reference to `key_p'
AVT987.o(.text+0x8d0):../AVT987.c:338: undefined reference to `key_p'
AVT987.o(.text+0x8e0):../AVT987.c:342: undefined reference to `key_r'
AVT987.o(.text+0x92c):../AVT987.c:345: undefined reference to `Tim'
AVT987.o(.text+0x93c):../AVT987.c:349: undefined reference to `key_p'
AVT987.o(.text+0x94c):../AVT987.c:352: undefined reference to `key_r'
AVT987.o(.text+0x996):../AVT987.c:355: undefined reference to `Tim'
AVT987.o(.text+0x9a6):../AVT987.c:359: undefined reference to `key_p'
AVT987.o(.text+0x9ae):../AVT987.c:359: undefined reference to `ExitTim'
AVT987.o(.text+0x9b2):../AVT987.c:359: undefined reference to `ExitTim'
AVT987.o(.text+0x9be):../AVT987.c:363: undefined reference to `key_p'
AVT987.o(.text+0x9c8):../AVT987.c:365: undefined reference to `KeyZTim'
AVT987.o(.text+0x9cc):../AVT987.c:367: undefined reference to `key_p'
AVT987.o(.text+0x9d8):../AVT987.c:370: undefined reference to `ExitTim'
AVT987.o(.text+0x9dc):../AVT987.c:370: undefined reference to `ExitTim'
AVT987.o(.text+0x9e0):../AVT987.c:372: undefined reference to `key_p'
AVT987.o(.text+0x9e8):../AVT987.c:377: undefined reference to `key_p'
AVT987.o(.text+0xa00):../AVT987.c:382: undefined reference to `KeyZTim'
AVT987.o(.text+0xa04):../AVT987.c:384: undefined reference to `key_p'
AVT987.o(.text+0xa10):../AVT987.c:388: undefined reference to `Tim'
AVT987.o(.text+0xa34):../AVT987.c:394: undefined reference to `Tim'
AVT987.o(.text+0xa6e): In function `Restore':
../AVT987.c:405: undefined reference to `key_p'
AVT987.o(.text+0xa80):../AVT987.c:412: undefined reference to `WriteLcd'
AVT987.o(.text+0xa86):../AVT987.c:413: undefined reference to `PutsLcd_P'
AVT987.o(.text+0xa8c):../AVT987.c:414: undefined reference to `WriteLcd'
AVT987.o(.text+0xa92):../AVT987.c:415: undefined reference to `PutsLcd_P'
AVT987.o(.text+0xa98):../AVT987.c:416: undefined reference to `DispTim'
AVT987.o(.text+0xa9c):../AVT987.c:417: undefined reference to `DispTim'
AVT987.o(.text+0xd48): In function `SelfTunning':
../AVT987.c:457: undefined reference to `TimPid'
AVT987.o(.text+0xd4c):../AVT987.c:457: undefined reference to `TimPid'
AVT987.o(.text+0xd50):../AVT987.c:457: undefined reference to `TimPid'
AVT987.o(.text+0xd54):../AVT987.c:457: undefined reference to `TimPid'
AVT987.o(.text+0xd5c):../AVT987.c:459: undefined reference to `pwm_p'
T987.o(.text+0xde2):../AVT987.c:467: undefined reference to `TimPid'
AVT987.o(.text+0xde6):../AVT987.c:467: undefined reference to `TimPid'
AVT987.o(.text+0xdea):../AVT987.c:467: undefined reference to `TimPid'
AVT987.o(.text+0xdee):../AVT987.c:467: undefined reference to `TimPid'
AVT987.o(.text+0xe84):../AVT987.c:475: undefined reference to `TimPid'
AVT987.o(.text+0xe88):../AVT987.c:475: more undefined references to `TimPid' follow
AVT987.o(.text+0xff4): In function `SelfTunning':
../AVT987.c:489: undefined reference to `pwm_p'
AVT987.o(.text+0xff8):../AVT987.c:490: undefined reference to `TimPid'
AVT987.o(.text+0xffc):../AVT987.c:490: undefined reference to `TimPid'
AVT987.o(.text+0x1000):../AVT987.c:490: undefined reference to `TimPid'
AVT987.o(.text+0x1004):../AVT987.c:490: undefined reference to `TimPid'
AVT987.o(.text+0x1012):../AVT987.c:494: undefined reference to `pwm_p'
AVT987.o(.text+0x11c4):../AVT987.c:502: undefined reference to `TimPid'
AVT987.o(.text+0x11c8):../AVT987.c:502: undefined reference to `TimPid'
AVT987.o(.text+0x11cc):../AVT987.c:502: undefined reference to `TimPid'
AVT987.o(.text+0x11d0):../AVT987.c:502: undefined reference to `TimPid'
AVT987.o(.text+0x11da):../AVT987.c:506: undefined reference to `TimPid'
AVT987.o(.text+0x11de):../AVT987.c:506: more undefined references to `TimPid' follow
AVT987.o(.text+0x1472): In function `RegThread':
../AVT987.c:551: undefined reference to `pwm_p'
AVT987.o(.text+0x1490):../AVT987.c:557: undefined reference to `TimPid'
AVT987.o(.text+0x1494):../AVT987.c:557: undefined reference to `TimPid'
AVT987.o(.text+0x1498):../AVT987.c:557: undefined reference to `TimPid'
AVT987.o(.text+0x149c):../AVT987.c:557: undefined reference to `TimPid'
AVT987.o(.text+0x14e4):../AVT987.c:561: undefined reference to `TimPid'
AVT987.o(.text+0x14e8):../AVT987.c:561: more undefined references to `TimPid' follow
AVT987.o(.text+0x1586): In function `RegThread':
../AVT987.c:565: undefined reference to `pwm_p'
AVT987.o(.text+0x15c6): In function `main':
../AVT987.c:581: undefined reference to `InitHw'
AVT987.o(.text+0x15ca):../AVT987.c:585: undefined reference to `InitLcd'
AVT987.o(.text+0x15d6):../AVT987.c:595: undefined reference to `key_p'
make: *** [AVT987.elf] Error 1
Build failed with 139 errors and 1 warnings...
Edit:
Kod: Zaznacz cały
[/color]
Ostatnio zmieniony 13 mar 2009, o 23:32 przez _ImPuLs_, łącznie zmieniany 2 razy.
Witam
Sciągnąłem plik z programem do którego link załączyłeś.
Skompilowałem z AVR Studio z użycie WinAVR edycja 2008-06-10
Po pierwszej kompilacji miałem 4 warningi, ale program się skompilował.
Po poprawkach kompiluje się bez błędów i warningów.
Poprawione pliki załączam zarchiwizowane.
Spróbuj czy się skompilują.
Kompilowałem dla ATMega32, ale to nie powinno mieć większego znaczenia.
Marek
Sciągnąłem plik z programem do którego link załączyłeś.
Skompilowałem z AVR Studio z użycie WinAVR edycja 2008-06-10
Po pierwszej kompilacji miałem 4 warningi, ale program się skompilował.
Po poprawkach kompiluje się bez błędów i warningów.
Poprawione pliki załączam zarchiwizowane.
Spróbuj czy się skompilują.
Kompilowałem dla ATMega32, ale to nie powinno mieć większego znaczenia.
Marek
- Załączniki
-
- lutownica.zip
- (7.97KiB)Pobrany 302 razy
Chyba jednak ma, i to duże. Zauważ że sama kompilacja zgłasza tylko 1 warning, ten co poprzednio ("/AVT987.c:111: warning: array subscript has type `char' "). Reszta to błędy linkera, który stwierdza co następuje:Kompilowałem dla ATMega32, ale to nie powinno mieć większego znaczenia.
Kod: Zaznacz cały
region text is full (AVT987.elf section .text)
marek1 - to co podesłałeś jak kompiluję w AVRStudio dla procesora ATMega8 to mam taki efekt:
Napisałem do autora źródeł. Podobno da się to tylko skompilować w GCC w trybie natywnym. W AVRStudio się nie da.
Teraz będę musiał zasięgnąć trochę wiedzy jak to zrobić i dlaczego jest właśnie takie uzależnienie.
Aczkolwiek jest to trochę dziwne że w jednym kompilatorze się da, a w innym już nie. Ale jeszcze za mało umiem żeby móc polemizować na ten temat
~~~~
... do moderatora który edytował mój poprzedni post -> mam wyłączone używanie BBCODE i nie mogę robić tak 'ładnie' jak inni - może ktoś by mi włączył taką możliwość - byłbym wdzięczny
Edit: by moderator który nagminnie edytuje posty
Jedyne co mogę Ci teraz poradzić, to ręczne włączanie BBCode przy każdym poście (odhaczasz "wyłącz BBCode w tym poście" - a może tego nie masz? Sprawdzałem na userze, który domyślnie ma włączone, wówczas jest taka możliwość), rzeczywiście w profilu nie widzę możliwości włączenia BBCode na stałe.
Pajączek
Kod: Zaznacz cały
rm -rf lutownica.o lutownica.elf dep/ lutownica.hex lutownica.eep
Build succeeded with 0 Warnings...
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,lutownica.o,-MF,dep/lutownica.o.d -c ../lutownica.c
avr-gcc -mmcu=atmega8 lutownica.o -o lutownica.elf
E:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/lib/avr4/crtm8.o(.init9+0x0): undefined reference to `main'
make: *** [lutownica.elf] Error 1
Build failed with 1 errors and 0 warnings...
Napisałem do autora źródeł. Podobno da się to tylko skompilować w GCC w trybie natywnym. W AVRStudio się nie da.
Teraz będę musiał zasięgnąć trochę wiedzy jak to zrobić i dlaczego jest właśnie takie uzależnienie.
Aczkolwiek jest to trochę dziwne że w jednym kompilatorze się da, a w innym już nie. Ale jeszcze za mało umiem żeby móc polemizować na ten temat
~~~~
... do moderatora który edytował mój poprzedni post -> mam wyłączone używanie BBCODE i nie mogę robić tak 'ładnie' jak inni - może ktoś by mi włączył taką możliwość - byłbym wdzięczny
Edit: by moderator który nagminnie edytuje posty
Jedyne co mogę Ci teraz poradzić, to ręczne włączanie BBCode przy każdym poście (odhaczasz "wyłącz BBCode w tym poście" - a może tego nie masz? Sprawdzałem na userze, który domyślnie ma włączone, wówczas jest taka możliwość), rzeczywiście w profilu nie widzę możliwości włączenia BBCode na stałe.
Pajączek
Ostatnio zmieniony 14 mar 2009, o 17:42 przez _ImPuLs_, łącznie zmieniany 1 raz.
Witam
U mnie ten program kompiluje się bez błędów i ostrzeżen, ma jednak aż ponad 11kB więc w ATMega8 się nie zmieści - nie wim czy może to być wina kompilowania pod AVR Studio i WinAVR.
Poniżej przesyłem raport z kompilacji
Jeśli ktoś wie jak go zmniejszyć aby się zmieścił w 8kB to też chętnie się dowiem
Pozdrawiam
Marek
U mnie ten program kompiluje się bez błędów i ostrzeżen, ma jednak aż ponad 11kB więc w ATMega8 się nie zmieści - nie wim czy może to być wina kompilowania pod AVR Studio i WinAVR.
Poniżej przesyłem raport z kompilacji
Kod: Zaznacz cały
Build started 14.3.2009 at 20:08:09
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT rl1.o -MF dep/rl1.o.d -c ../rl1.c
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT hw.o -MF dep/hw.o.d -c ../hw.c
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd.o -MF dep/lcd.o.d -c ../lcd.c
avr-gcc.exe -mmcu=atmega16 -Wl,-Map=xxxxx.map rl1.o hw.o lcd.o -o xxxxx.elf
avr-objcopy -O ihex -R .eeprom xxxxx.elf xxxxx.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex xxxxx.elf xxxxx.eep || exit 0
avr-objdump -h -S xxxxx.elf > xxxxx.lss
AVR Memory Usage
----------------
Device: atmega16
Program: 11366 bytes (69.4% Full)
(.text + .data + .bootloader)
Data: 351 bytes (34.3% Full)
(.data + .bss + .noinit)
EEPROM: 21 bytes (4.1% Full)
(.eeprom)
Build succeeded with 0 Warnings...
Pozdrawiam
Marek
A więc tak, już wiem co jest grane i udało mi się to skompilować.
Niestety tak jak autor źródeł informował mnie zrobiłem to bezpośrednio w GCC poprzez 'make all'.
Dodanie do projektu pliku 'Makefile' niewiele wniosło do efektu kompilacji pomimo tego że jest tam wpis " CSTANDARD = -std=gnu99 " który musi być przy kompilacji bezpośrednio w GCC.
Plik wynikowy to 7810 Bajtów.
~~~~
... do moderatora -> nie mam opcji włączenia BBCODE. W opcjach mam tylko:
HTML: NIE
BBCode: NIE
Uśmieszki: TAK
Niestety tak jak autor źródeł informował mnie zrobiłem to bezpośrednio w GCC poprzez 'make all'.
Dodanie do projektu pliku 'Makefile' niewiele wniosło do efektu kompilacji pomimo tego że jest tam wpis " CSTANDARD = -std=gnu99 " który musi być przy kompilacji bezpośrednio w GCC.
Plik wynikowy to 7810 Bajtów.
~~~~
... do moderatora -> nie mam opcji włączenia BBCODE. W opcjach mam tylko:
HTML: NIE
BBCode: NIE
Uśmieszki: TAK
Pisząc o Makefile miałem na myśli byś nam go pokazał bo widać było jakiś problem ze znalezieniem main().
Pytanie za 100pkt, czy kompilując teraz pod gcc stosowałeś optymalizację?? Bo w pierwszych Twoich logach ewidentnie widać, że linkerowi zabrakło miejsca, o czym zresztą już pisałem 2 dni temu.
Co do BBCode, jak się wyjaśni sprawa, to wrócimy do tematu, a włączenie BBCode jest obok tego co zacytowałeś (takie checkboxy). Sprawdzałem zwykły użytkownik mający domyślnie włączone, może sobie w pojedynczym poście wyłączyć. Być może u Ciebie faktycznie problem w tym, że masz domyślnie wyłączone.
Dodano (po wyjaśnieniu sprawy):
Zajrzyj do profilu, i włącz sobie BBCode, teraz już powinieneś mieć taką możliwość. Jak zadziała, podziękuj ładnie Endowi.
Pytanie za 100pkt, czy kompilując teraz pod gcc stosowałeś optymalizację?? Bo w pierwszych Twoich logach ewidentnie widać, że linkerowi zabrakło miejsca, o czym zresztą już pisałem 2 dni temu.
Co do BBCode, jak się wyjaśni sprawa, to wrócimy do tematu, a włączenie BBCode jest obok tego co zacytowałeś (takie checkboxy). Sprawdzałem zwykły użytkownik mający domyślnie włączone, może sobie w pojedynczym poście wyłączyć. Być może u Ciebie faktycznie problem w tym, że masz domyślnie wyłączone.
Dodano (po wyjaśnieniu sprawy):
Zajrzyj do profilu, i włącz sobie BBCode, teraz już powinieneś mieć taką możliwość. Jak zadziała, podziękuj ładnie Endowi.
Przy kompilacji po raz pierwszy w AVRStudio lub w AVRSide nie korzystałem z żadnego makefile.
Przy kompilacji ręcznej w GCC wykorzystałem załączony przez autora do projektu plik makefile.
Jak do projektu w AVRSide dołączę plik makefile dołączony przez autora to też niewiele się zmienia. Efekt kompilacji wygląda tak (u mnie):
... skróciłem bo jest tego duuuużo (podobnie jak we wcześniejszym poście).
Z opcji można wywnioskować że kompilator z AVRStudio bierze pod uwagę ustawienia z makefile ale rezultatu to żadnego nie daje. Zapewne jest jednak różnica pomiędzy sposobem kompilacji w GCC i w AVRStudio (a wydawało mi się że AVRStudio korzysta z pakietu GCC).
Dziękuję za rozwiązanie problemu dotyczącego BBCODE. Teraz wszystko jest OK.
Przy kompilacji ręcznej w GCC wykorzystałem załączony przez autora do projektu plik makefile.
Jak do projektu w AVRSide dołączę plik makefile dołączony przez autora to też niewiele się zmienia. Efekt kompilacji wygląda tak (u mnie):
Kod: Zaznacz cały
Build started 15.3.2009 at 22:32:35
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,AVT987.o,-MF,dep/AVT987.o.d -c -std=gnu99 ../AVT987.c
../AVT987.c: In function `GetTemp':
../AVT987.c:109: warning: array subscript has type `char'
avr-gcc -mmcu=atmega8 AVT987.o -o AVT987.elf
E:\WinAVR\bin\..\lib\gcc\avr\3.4.3\..\..\..\..\avr\bin\ld.exe: region text is full (AVT987.elf section .text)
AVT987.o(.text+0x2a0): In function `Intro':
../AVT987.c:121: undefined reference to `WriteLcd'
AVT987.o(.text+0x2a6):../AVT987.c:122: undefined reference to `PutsLcd_P'
AVT987.o(.text+0x2ac):../AVT987.c:123: undefined reference to `WriteLcd'
AVT987.o(.text+0x2b2):../AVT987.c:124: undefined reference to `PutsLcd_P'
....
- ciach, ciach, ciach -
....
AVT987.o(.text+0x14e8):../AVT987.c:559: more undefined references to `TimPid' follow
AVT987.o(.text+0x1586): In function `RegThread':
../AVT987.c:563: undefined reference to `pwm_p'
AVT987.o(.text+0x15c6): In function `main':
../AVT987.c:579: undefined reference to `InitHw'
AVT987.o(.text+0x15ca):../AVT987.c:583: undefined reference to `InitLcd'
AVT987.o(.text+0x15d6):../AVT987.c:593: undefined reference to `key_p'
make: *** [AVT987.elf] Error 1
Build failed with 139 errors and 1 warnings...
Z opcji można wywnioskować że kompilator z AVRStudio bierze pod uwagę ustawienia z makefile ale rezultatu to żadnego nie daje. Zapewne jest jednak różnica pomiędzy sposobem kompilacji w GCC i w AVRStudio (a wydawało mi się że AVRStudio korzysta z pakietu GCC).
Dziękuję za rozwiązanie problemu dotyczącego BBCODE. Teraz wszystko jest OK.
A mógłbyś napisać przy jakich ustawieniach i w jakim programie udało Ci się osiągnąć te 7810 bajtów.
W moim przypadku jak kompiluję pod AVR Studio + najnowszy WinAVR to mam ponad 11kB a jak kompiluję z linii komend w tym samym WinAVR ale bez AVR Studio, używając makefile dostarczony razem z projektem, to wychodzi około 8600 bajtów.
Jako że AVR Studio wywołuje również WinAVR to muszą być możeliwe takie ustawienia że osiągnie się ten sam rezultat.
Marek
W moim przypadku jak kompiluję pod AVR Studio + najnowszy WinAVR to mam ponad 11kB a jak kompiluję z linii komend w tym samym WinAVR ale bez AVR Studio, używając makefile dostarczony razem z projektem, to wychodzi około 8600 bajtów.
Jako że AVR Studio wywołuje również WinAVR to muszą być możeliwe takie ustawienia że osiągnie się ten sam rezultat.
Marek
Używałem GCC wywołując go z linii poleceń poprzez 'make all'.
Plik 'Makefile' wykorzystałem dołączony do projektu przez autora.
GCC w wersji 'gcc-3.4.3-2.15-1.2.3'.
Szczegółowy wynik kompilacji poniżej:
Plik 'Makefile' wykorzystałem dołączony do projektu przez autora.
GCC w wersji 'gcc-3.4.3-2.15-1.2.3'.
Szczegółowy wynik kompilacji poniżej:
Kod: Zaznacz cały
-------- begin --------
avr-gcc (GCC) 3.4.3
Copyright (C) 2004 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: lcd.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-bitfields -fpack-struct -Wall -Wstrict-prototypes -Wa,-adhlns=lcd.lst -std=gnu99 -MD -MP -MF .dep/lcd.o.d lcd.c -o lcd.o
Compiling: rl1.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-bitfields -fpack-struct -Wall -Wstrict-prototypes -Wa,-adhlns=rl1.lst -std=gnu99 -MD -MP -MF .dep/rl1.o.d rl1.c -o rl1.o
Compiling: hw.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-bitfields -fpack-struct -Wall -Wstrict-prototypes -Wa,-adhlns=hw.lst -std=gnu99 -MD -MP -MF .dep/hw.o.d hw.c -o hw.o
Linking: rl1.elf
avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-bitfields -fpack-struct -Wall -Wstrict-prototypes -Wa,-adhlns=lcd.o -std=gnu99 -MD -MP -MF .dep/rl1.elf.d lcd.o rl1.o hw.o --output rl1.elf -Wl,-Map=rl1.map,--cref -lm
Creating load file for Flash: rl1.hex
avr-objcopy -O binary -R .eeprom rl1.elf rl1.hex
Creating load file for EEPROM: rl1.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O binary rl1.elf rl1.eep
Creating Extended Listing: rl1.lss
avr-objdump -h -S rl1.elf > rl1.lss
Creating Symbol Table: rl1.sym
avr-nm -n rl1.elf > rl1.sym
Size after:
rl1.elf :
section size addr
.text 7810 0
.data 0 8388704
.bss 87 8388704
.noinit 0 8388791
.eeprom 21 8454144
.debug_aranges 60 0
.debug_pubnames 614 0
.debug_info 3146 0
.debug_abbrev 975 0
.debug_line 3156 0
.debug_str 746 0
.debug_ranges 12 7810
Total 16627
AVR Memory Usage:
-----------------
Device: atmega8
Program: 7810 bytes (95.3% Full)
(.text + .data + .bootloader)
Data: 87 bytes (8.5% Full)
(.data + .bss + .noinit)
-------- end --------
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości