-- Noob warning: Ik ben zo'n echte Windows freak, dit is dus mijn eerste aanvaring met GCC en consorten. Ervaring met (hogere) programeertalen heb ik wel, dus de structuur begrijp ik, maar... --
Ik probeer een grafisch LCD aan de praat te krijgen op een Atmel ATmega32. Inmiddels heb ik het al geprobeerd in Programmers Notepad en AVR Studio 4, maar ik loop steeds tegen hetzelfde probleem aan (is ook wel logisch, want ze gebruiken dezelfde compiler
). Ben al een aantal avonden aan het speculeren en googelen geweest, maar ik kop er niet uit. Kan iemand mij misschien een duwtje in de juiste richting geven?
De code:
Het resultaat:
Wat heb ik bedacht?
1. Hij kan de bestanden niet vinden
>>> bestanden naar projectmap kopieren. Maar dat geeft hetzelfde effect. Bovendien, als ik voor de functie glcdLine te weinig argumenten opgeef begint ie daarover te klagen. Hij kan dus wel bij de bestanden. (Ik heb alle AVRlib mappen al geinclude in de projectconfig). Op internet wordt deze fout dan ook omschreven alszijnde een linkfout naar objecten?
2. Alle bestanden invoegen in het project
>>> Geen verandering
3. LIBavr 10x opnieuw installeren
>>> Kwaaie installer, verder niks
Inmiddels denk ik dat ik dichter bij het probleem kom. De bestanden van de library (allemaal .c en .h bestanden) kunnen wel gevonden worden, maar op de een of andere manier zijn ze toch niet goed gelinkt. In AVR Studio include ik de AVRlib bestanden alszijnde externe componenten van m'n code, niet specifiek als library.
Wat doe ik fout?
- Is de library niet goed geinstalleerd? GCC zou toch moeten weten waar de library is, ik hoef hem dan toch helemaal niet te includen? (Als ik 'm niet specifiek include, geeft ie wel aan dat ie de bestanden gewoon niet kan vinden)
- Moet ik de library compileren? (Dus een .a bestand van maken???) Maar hoe dan?
- Moet ik de library anders includen? Er is wel een library sectie in de projectconfig, maar wat ik daar ook invul, er veranderd niks
- Moet ik iets met de makefile die bij AVRlib zit? Maar daar kan ik nergens de gegevens van m'n avr invullen enzo, hij lijkt wel incompleet. Moet ik die misschien includen in m'n huidige makefile? (en hoe)
Of moet ik gewoon overstappen op een andere compiler? GCC wordt in dit verband nogal onderuitgehaald op diverse sites. Maar welke compiler/IDE dan?
Ik probeer een grafisch LCD aan de praat te krijgen op een Atmel ATmega32. Inmiddels heb ik het al geprobeerd in Programmers Notepad en AVR Studio 4, maar ik loop steeds tegen hetzelfde probleem aan (is ook wel logisch, want ze gebruiken dezelfde compiler
De code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| // test1.c
#include <avr/io.h>
#include <glcd.h> //de basis-avrlib-lib voor lcd's
#include <ks0108.h> // de avrlib-lib voor mijn lcd
int main (void)
{
// Teken een lijntje
glcdLine(1,1,50,80);
return 1;
} |
Het resultaat:
code:
1
2
3
4
5
6
7
8
| rm -rf TS2.o TS2.elf dep/* TS2.hex TS2.eep Build succeeded with 0 Warnings... avr-gcc.exe -I"C:\AVR\avrlib" -I"C:\AVR\avrlib\conf" -I"C:\AVR\avrlib\rsl" -mmcu=atmega32 -Wall -gdwarf-2 -O0 -fsigned-char -MD -MP -MT TS2.o -MF dep/TS2.o.d -c ../TS2.c avr-gcc.exe -mmcu=atmega32 TS2.o -L"C:\AVR\avrlib" -o TS2.elf TS2.o: In function `main': ../TS2.c:9: undefined reference to `glcdLine' make: *** [TS2.elf] Error 1 Build failed with 1 errors and 0 warnings... |
Wat heb ik bedacht?
1. Hij kan de bestanden niet vinden
>>> bestanden naar projectmap kopieren. Maar dat geeft hetzelfde effect. Bovendien, als ik voor de functie glcdLine te weinig argumenten opgeef begint ie daarover te klagen. Hij kan dus wel bij de bestanden. (Ik heb alle AVRlib mappen al geinclude in de projectconfig). Op internet wordt deze fout dan ook omschreven alszijnde een linkfout naar objecten?
2. Alle bestanden invoegen in het project
>>> Geen verandering
3. LIBavr 10x opnieuw installeren
>>> Kwaaie installer, verder niks
Inmiddels denk ik dat ik dichter bij het probleem kom. De bestanden van de library (allemaal .c en .h bestanden) kunnen wel gevonden worden, maar op de een of andere manier zijn ze toch niet goed gelinkt. In AVR Studio include ik de AVRlib bestanden alszijnde externe componenten van m'n code, niet specifiek als library.
Wat doe ik fout?
- Is de library niet goed geinstalleerd? GCC zou toch moeten weten waar de library is, ik hoef hem dan toch helemaal niet te includen? (Als ik 'm niet specifiek include, geeft ie wel aan dat ie de bestanden gewoon niet kan vinden)
- Moet ik de library compileren? (Dus een .a bestand van maken???) Maar hoe dan?
- Moet ik de library anders includen? Er is wel een library sectie in de projectconfig, maar wat ik daar ook invul, er veranderd niks
- Moet ik iets met de makefile die bij AVRlib zit? Maar daar kan ik nergens de gegevens van m'n avr invullen enzo, hij lijkt wel incompleet. Moet ik die misschien includen in m'n huidige makefile? (en hoe)
Of moet ik gewoon overstappen op een andere compiler? GCC wordt in dit verband nogal onderuitgehaald op diverse sites. Maar welke compiler/IDE dan?