Hi! Ich probier grad herum und viele Sachen in der AVR Programmierung sind nach wie vor ein Rätzel für mich. Zum Beispiel, wie ich externe Libraries, zB die Procyon AVRlib in das AVR Studio 5 einbinden kann. Kann mir jemand helfen? Danke!
Procyon AVRlib https://ccrma.stanford.edu/courses/250a/docs/avrlib/html/index.html Was genau sind die Probleme: Wie man den Include-Pfad in AVR Studio 5 setzt oder wie man die Dateien auf der Platte ablegt oder wie man die Dateien in sein Projekt aufnimmt oder wie man eine Binärlibrary macht?
Wie gesagt, bin Anfänger. Ich hab in Windows 7 die PATH variablen eingetragen. Nichts. Ich hab versucht, den avrlibb ordner in den AVRStudio toolchain ordner zu kopieren, geht auch nicht, weil der eben reinkopierte Ordner nicht sichtbar ist, kein Ahnung warum. Ich schaffs auch nicht das Makefile (avrproj_make ?) einzubinden mit ebenfalls den PATH Variablen und DOS Konsole Im Moment schau ich mich grad nach einem anderen Kompiler um, wo Libraries schon drin sind. Ich hab mich jetzt fast 1 Woche mit dem Zeug beschäftigt, aber die meiste Zeit mit herumconfigurieren gebraucht. Das geht schon auf die Substanz gelinde gesagt.
Du solltest in Teilschritten vorgehen. 1) Installation des AVR Studio 5 incl. der AVR Toolchain. Diese Installation sollte von Atmel perfekt beschrieben sein. Bei Fragen können dir "Tausende" AVR User weltweit helfen. Damit kannst du bereits AVR C Projekte übersetzen und entwickeln. 2) Installation von "Drittlibraries" (Fleury, Procyon) Es ist zwecklos, das zu versuchen, wenn 1) nicht erfolgreich ist. Nur ein kleiner Anteil von Usern setzt diese Libraries genau in der gesuchten Verbindung mit AVR Studio 5 ein. Wenn man Probleme mit 1) hat und nur die User von 2) anspricht, ist der Helferkreis klein. Helfer aus 1) sind wegen 2) angeschreckt und Helfer von 2) ahnen nicht, dass du Probleme mit 1) hast. Drittlibraries braucht man zur ersten Kontaktaufnahme mit der AVR Entwicklungsumgebung nicht. Alle Beispiele aus dem µC.net Tutorial kommen ohne aus. Beim Durcharbeiten von Beispielen aus dem Tutorial kommen auch einfache Hilfsfunktionen zum Einsatz (Bsp. LCD). Damit kann man lernen, wie man ein Projekt aus mehreren Sourcefiles aufsetzt.
Danke für die Antwort. AVR Studio 5 an sich läuft und ich hab auch schon Projekte damit gemacht (AD Wandlung, PWM, Rotary encoder, LCD Display, 7segment Anzeige) ..zu meist Beispielcode von anderen.. aber MMC/SD Karten ansprechen und andere komplexere Themen hab ich einfach nicht geschafft. und was macht man in so einem Fall? Ja genau, man schaut, ob es irgendwelche Libraries gibt. Die Library hier im Forum für SD Karten geht nicht, weil ich eine gewisse default.h nicht finde, ist aber die ganze Zeit in Erwähnung im Bericht, dürfte ev. ein Linux Ding sein, aber ich hab auf diese Frage (gestell vor 2 Tagen denk ich ) genau 0 Antworten bekommen. Also was bringt eine Library, wenn auch nur eine Datei fehlt? Bei anderen Libraries die ich gesucht hab, war es ähnlich, irgendwas fehlt immer oder ist für was anderes geschrieben. Wie soll man was lernen, wenn das alles einfach nicht geht, oder so komplex ist, dass man das mit einem 100 kilo Hirn nicht verstehen würde (Ich hab keinen Lehrer oder so, sitze alleine da). Zur Zeit schau ich mir den microC Compiler mal genauer an, ist mir empfohlen worden. ..und da sind viele Libraries schon fertig drin. ..das soll den Zweck haben, dass ich was funktionierendes studieren kann um daraus zu lernen und mich nicht in teilweise 10 Jahre alten code reinlesen muss, wo viele Dinge schon längst nicht mehr gelten (sbi, cbi zB).
Siehe Bild! Dort werden die libs eingetragen. Carsten
> Ich hab versucht, den avrlibb ordner in den AVRStudio toolchain ordner > zu kopieren, geht auch nicht, weil der eben reinkopierte Ordner nicht > sichtbar ist, kein Ahnung warum. Im Explorer von Windows7 verschwinden Ordner? Das hat aber eher nix mit dem AVR Studio 5 zu tun, würde ich meinen. > Die Library hier im Forum für SD Karten geht nicht, weil ich eine > gewisse default.h nicht finde Welche? http://www.mikrocontroller.net/forum/codesammlung?filter=sd http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten#Bibliotheken_zur_Ansteuerung > Zur Zeit schau ich mir den microC Compiler mal genauer an, ist mir > empfohlen worden. > ..und da sind viele Libraries schon fertig drin. > ..das soll den Zweck haben, dass ich was funktionierendes studieren kann > um daraus zu lernen und mich nicht in teilweise 10 Jahre alten code > reinlesen muss, wo viele Dinge schon längst nicht mehr gelten (sbi, cbi > zB). Das ist eine komplett andere Philosophie als meine. Ich versuche zunächst das Konzept zu verstehen, so dass ich dann auch den alten Code anpassen kann.
Krapao schrieb: >> Ich hab versucht, den avrlibb ordner in den AVRStudio toolchain ordner >> zu kopieren, geht auch nicht, weil der eben reinkopierte Ordner nicht >> sichtbar ist, kein Ahnung warum. > > Im Explorer von Windows7 verschwinden Ordner? Das hat aber eher nix mit > dem AVR Studio 5 zu tun, würde ich meinen. Oh je, da haben wir wieder die fehlenden Windows 7 Basics! In "Program Files (x86)" bzw. "Program Files" hat so etwas nichts zu suchen, sondern nur im Projekt-Ordner. Das impliziert natürlich, daß man nicht nur die Lib, sondern auch den Pfad dahin mit angibt. Der Linker hat schließlich keine hellseherischen Fähigkeiten. Wenn man schon Dateien in die oben genannten Ordner hineinkopieren muß, dann geht das nur als Administrator. Mit normalen User-Rechten landen die Dateien nur in einem Schattenverzeichnis!
Hallo, ich würde mir mal ein einfaches Demo-Projekt aus dem Studio 5 erzeugen. Da sieht man schön die Struktur der Unterverzeichnis oder der dafür nötigen Libraries. Ich verwende einige Lib-Teile aus der Procyon AVRlib, zum Beispiel rprintf(..), Buffer(..), usw. Du legst dir z.B. einen Ordner "scr" an dahinein kopierst du die *.c und *.h. Mit der rechten Maustaste kannst du dann die einzelnen Dateien im Solution Explorer -> Projekt mit "add" dazu fügen. Fertig... Gruß xmega
Danke für die Tips, da bekommt man wieder Mut weiterzumachen!
@Carsten Wille: Kurze Frage: Was sind das für Eintragungen, die am Bild umrandet zu sehen sind, in der Procyon AVRlib kann ich solche oder ähnliche Dateien nicht finden. Wie kommt man auf solche Einträge? .."libprintf_flt.a" und "libm.a" Was bedeuten sie?
Diese Libs muß man mit einbinden, wenn man Fließkommazahlen mit printf() ausgeben will, bzw. wenn man mit Fließkommazahlen rechnen will. Siehe auch Artikel FAQ, Abschnitt "Aktivieren der Floating Point Version von sprintf beim WinAVR mit AVR-Studio"
Also so wie ich das verstehe sind Libraries eigens gemachte Dateien, die im Fall von Procyon AVRlib aber nicht zur Verfügung stehen. Ich würde aber gerne die Procyon AVRlib einbinden. Frage: Wo kann ich die Ordner eintragen, damit der Compiler beim Linken diese Dateien findet? Danke!
...also mit anderen Worten: Der Compiler soll SELBSTSTÄNDIG benötigte querverbundene header- Files und c- Files einbinden. zB.: projekt besteht aus main.c in der main.c steht #include "lcd.h" in der "lcd.h" steht #include "globals.h" in der "globals.h" steht "avrlibdefs.h" Muss ich jetzt wirklich alle inkludes VON HAND durchschauen und mühsam zusammenschustern oder geht das auch automatisch. ...und wenn ja, wie.. Das wäre die Frage
Ich hab jetzt mal Probehalber ALLE Dateien (ca 60) von procyon AVRLib reingezogen und probiert die Demoprojekt "LCDtest" zum Laufen zu kriegen. Jetzt fehlt zwar keine Datei mehr, dafür schreibt er aber eine gewaltige Fehlerliste: Warning 3 pointer targets in passing argument 1 of 'strlen' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 306 3 test1 Error 4 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 133 15 test1 Warning 5 pointer targets in passing argument 1 of 'strcpy' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 307 4 test1 Error 6 expected 'char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 126 14 test1 Warning 7 pointer targets in passing argument 2 of 'strcpy' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 307 4 test1 Error 8 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 126 14 test1 Warning 9 pointer targets in passing argument 1 of 'strcpy' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 311 3 test1 Error 10 expected 'char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 126 14 test1 Warning 11 pointer targets in passing argument 2 of 'strcpy' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 311 3 test1 Error 12 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 126 14 test1 Warning 13 pointer targets in passing argument 1 of 'strlen' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 313 3 test1 Error 14 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 133 15 test1 Warning 15 pointer targets in passing argument 2 of 'strncmp' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 347 3 test1 Error 16 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 136 12 test1 Warning 17 pointer targets in passing argument 1 of 'strtol' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 439 2 test1 Error 18 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/stdlib.h 208 13 test1 Warning 19 pointer targets in passing argument 1 of 'strtol' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 446 2 test1 Error 20 expected 'const char *' but argument is of type 'u08 *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/stdlib.h 208 13 test1 Error 21 'FAT_SECTOR_BUFFER_ADDR' undeclared here (not in a function) c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 39 51 test1 Error 22 'FAT_FILENAME_BUFFER_ADDR' undeclared here (not in a function) c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 40 52 test1 Error 23 'FAT_PATHNAME_BUFFER_ADDR' undeclared here (not in a function) c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 41 52 test1 Warning 24 pointer targets in assignment differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 235 12 test1 Warning 25 pointer targets in assignment differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 265 13 test1 Warning 26 pointer targets in passing argument 1 of 'strcat' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 329 4 test1 Error 27 expected 'char *' but argument is of type 'unsigned char *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 122 14 test1 Warning 28 pointer targets in passing argument 2 of 'strcat' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 329 4 test1 Error 29 expected 'const char *' but argument is of type 'unsigned char *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 122 14 test1 Warning 30 pointer targets in passing argument 1 of 'strcat' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 330 4 test1 Error 31 expected 'char *' but argument is of type 'unsigned char *' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h 122 14 test1 Warning 32 pointer targets in passing argument 1 of 'rprintfStr' differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 380 2 test1 Error 33 expected 'char *' but argument is of type 'unsigned char *' c:\users\it-lab08\documents\avrstudio\test1\test1\rprintf.h 75 6 test1 Warning 34 pointer targets in return differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 407 2 test1 Warning 35 pointer targets in return differ in signedness c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c 413 2 test1 Was kann ich machen, dass das funktioniert?
captnhanky schrieb: > Was kann ich machen, dass das funktioniert? Hirn einschalten, Meldung lesen und verstehen. Kurz nachdenken und dann handeln! Mann! Steht doch alles da, was schief gegangen ist! Sorry, aber da reicht doch schon die erste Meldung, um zu verstehen, was in die Hose gegangen ist. Mal ganz von vorne: Was sagen denn alle diese (Fehler-)meldungen aus? Richtig, es geht immer um unsigned bzw. signed Variablen, die nicht zueinander passen! Also: Die Bibliotek geht davon aus, daß der Typ char vorzeichenbehaftet ist, nicht vorzeichenlos. Damit diese Meldungen verschwinden, muß man in den Projekteigenschaften unter Toolchain bei den Einstellungen für den AVR/GNU C Compiler unter General den Haken bei "Default char type is unsigned" entfernen.
AYE SIR, das ding wurde abgeschaltet. Fehlermeldungen nun: Warning 1 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart.c 70 3 test1 Error 2 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 3 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart.c 72 3 test1 Error 4 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Error 5 'UCSR0B' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 61 2 test1 Error 6 each undeclared identifier is reported only once for each function it appears in C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 61 2 test1 Error 7 'UCSR1B' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 80 2 test1 Warning 8 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 96 3 test1 Error 9 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 10 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 97 3 test1 Error 11 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 12 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 109 3 test1 Error 13 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 14 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 110 3 test1 Error 15 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Error 16 'UBRR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 134 3 test1 Error 17 'UBRR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 141 3 test1 Error 18 'UCSR1A' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 167 11 test1 Error 19 'UDR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 168 3 test1 Error 20 'UCSR0A' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 172 11 test1 Error 21 'UDR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 173 3 test1 Error 22 'UDR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 307 5 test1 Error 23 'UDR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 309 5 test1 Error 24 'UDR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 333 7 test1 Error 25 'UDR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 335 7 test1
NEUIGKEIT: Hab jetzt noch mal nachgeschaut und bei "all configurations" das Häckchen rausgenommen: Siehe da: Error 1 'UCSR0B' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 61 2 test1 Error 2 each undeclared identifier is reported only once for each function it appears in C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 61 2 test1 Error 3 'UCSR1B' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 80 2 test1 Warning 4 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 96 3 test1 Error 5 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 6 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 97 3 test1 Error 7 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 8 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 109 3 test1 Error 9 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Warning 10 pointer targets in passing argument 2 of 'bufferInit' differ in signedness C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 110 3 test1 Error 11 expected 'unsigned char *' but argument is of type 'char *' C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h 52 8 test1 Error 12 'UBRR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 134 3 test1 Error 13 'UBRR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 141 3 test1 Error 14 'UCSR1A' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 167 11 test1 Error 15 'UDR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 168 3 test1 Error 16 'UCSR0A' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 172 11 test1 Error 17 'UDR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 173 3 test1 Error 18 'UDR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 307 5 test1 Error 19 'UDR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 309 5 test1 Error 20 'UDR1' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 333 7 test1 Error 21 'UDR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 335 7 test1
Dein Projekt ist anscheinend auf einen AVR mit nur einer UART eingestellt, während die Library in uart2.c für einen AVR mit zwei UARTs übersetzen will. Es ist unvermeidlich: Du musst in der Library-Doku nachsehen, wie man der Library bekannt macht, für welchen AVR man die Library übersetzen will.
Ok, hab mal den Prozessor gewechselt auf ATmega1634 von ATmega128: Error 1 'TCCR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\timer.c 127 2 test1 Error 2 each undeclared identifier is reported only once for each function it appears in C:\Users\it-lab08\documents\avrstudio\test1\test1\timer.c 127 2 test1 Error 3 'TCCR0' undeclared (first use in this function) C:\Users\it-lab08\documents\avrstudio\test1\test1\timer.c 147 10 test1 Wahrscheinlich sind die restlichen Fehler nur Proz- Spez. Gehören tut ein ATmega163 rein lt. makefile, aber den gibts nicht im AVR Studio 5. Auf alle Fälle Danke für den Tip. Wie kann ich einen Pfad auf die AVRLib setzen? ev. mit einer Path- Variablen? oder so irgendwie?
Eine Lib gehört in das gleiche Verzeichnis wie die Object-Files rein, dann braucht man im Linker nur den Namen angeben, sonst den ganzen Pfad
Bei Binärlibraries wie man sie aus dem PC Bereich kennt, kann man das so machen. Bei µCs gibt es auch Sourcelibraries wie z.B. die Procyon AVRlib. Ich habe bei AVR Studio 5 im Einsatz und kann nicht beschreiben, wie man Includepaths in der Konfiguration (Settings, Configuration) setzt. Ich erwarte, dass das in der Hilfe oder Doku des AVR Studio 5 beschrieben ist. Dass man an der Windows PATH Variablen drehen müssen sollen muss, halte ich aber für extrem unwahrscheinlich.
Ich hab das Problem mit der Procyon AVRlib so in den Griff bekommen: delete Procyon AVRlib
Hallo, bin ein Neuling hier, verzeit deshalb etwaige Fehler. ich experimentiere seit etwa einem halben Jahr, und bin nun auf die QTouch Library gestoßen(ich arbeite das erstemal mit Libraries). Nach einigen kleineren Problemen bin ich nun an einem für mich großes Problem gestoßen. Ich hab mir dazu auch scho einige Foren durchgelesen, aber auf keinen grünen Zeig gekommen. Ich arbeite mit Win7 Prof 64bit und AVRStudio5 wie ich bis jetzt herausgefunden habe muss man die benötige Library in sein Projektverzeichnis kopieren und in dem Properties in AVRStudio unter den Linker Einstellungen eintragen. Danach hab ich auf Build Solution geklickt und den Fehler: cannot find -lv3g1-8qt-k-2rs die Library die ich kopiert hab ist folgende "libv3g1-8qt-k-2rs.r90" ich hab auch unter "Library search path" meinen Projektpfad eingetragen ohne erfolg. wenn ich allerdings das ganze als include in die main.c schreibe kommen Fehler (ca. 37000) mit folgendem Muster: "stray '\xx' in program" xx ist eine Zahl "Error 7 expected '=', ',', ';', 'asm' or '__attribute__' before 'burst_0_1_00_0_0'" oder, "Warning 9 null character(s) ignored" ich weiß derzeit nichts was ich noch ausprobieren könnte und bin dankbar über jeden Tipp. Schon mal danke im voraus mfg Christoph
Eine Library, für die Linker Einstellungen wie -lv3g1-8qt-k-2rs gesetzt werden müssen, ist eine Library im Binärformat. D.h. sie ist eine bereits kompilierte Datei. Solche Dateien kann man nicht mit Include in seinen unkompilierten Quelltext einbinden, bzw. die dann entstehenden Fehlermeld7ungen sind provoziert! Leider fehlt in deiner Frage die Angabe zum benutzten µC Ist die Library "libv3g1-8qt-k-2rs.r90" laut Library Selection Guide die richtige? Aus der Angabe AVR Studio 5 schliesse ich mal, dass du die GCC Toolchain benutzt und nicht die IAR Toolchain (Compiler). Die Libraries für GCC haben typischerweise Namen die mit libavr.... beginnen und mit .a enden. Die Libraries für GCC haben typischerweise Namen die mit libv.... beginnen und mit .r90 enden. Ich vermute du hast ein IAR Projekt oder eine Anleitung dafür und willst das mit der AVR-GCC Toolchain bearbeiten. Das geht nicht.
QTouch Library Selection Guide (XLS Datei) http://www.atmel.com/dyn/resources/prod_documents/QTouch_Library_Selection_Guide.xls
Danke für die schnelle Antwort! ich bezutze den ATmega168-20PU und das AVRISPmkII Programmiergerät. die genannte library hab ich im Selection Guide nachgeschaut allerdings nicht beachtet das dies mit der Endung .r90 ist und für GCC Toolchain nicht passt. Mit Toolchain kenn ich mich leider noch nicht so aus, aber ich hab gerade nachgesehen in den Einstellungen steht bei mir unter AVR Toolchain gcc version 4.5.1 (AVR_8_bit_GNU_Toolchain_3.2.3_315), wenn das weiter hilft. Ich werdes gleich nochmal probieren mit einer .a Datei vielen Dank für den Tipp
OK ich hab jetzt die Library libavr5g1-4qt-k-1rs.a benutzt und den Pfad dorthin angegeben und das Example Projekt avr5g1_qt_example einfach in meine main.c kopiert. Nun bleiben nur noch folgende zwei Meldungen: Error 1 undefined reference to `burst_1_2_00_0_0' Error 2 undefined reference to `burst_1_2_00_0_0' diese beziehen sich beide auf folgende Zeile: /* initialise touch sensing */ qt_init_sensing(); kann es sein dass irgendeine extern function nicht gelinkt werden kann? Oder ist das ein anderes Thema? mfg Christoph
Zum Glück findet man zwei Treffer, wenn man mit der exakten Fehlermeldung sucht (deshalb ist die Angabe der exakten Fehlermeldung bei der Problembeschreibung so wichtig) http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=91531&start=0 http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=94726&start=0 Am Ende des ersten Links anfangen :)
Ich hab wie im ersten Link beschrieben die "qt_asm_tiny_mega.S"-Datei mittels Add zum Projekt hinzugefügt (mit der Annahme dass es dann Compiliert und gelinkt wird). Dies brachte aber rein garnichts, die Fehlermeldung bestand weiterhin. Im zweiten Link stand, dass man bestimmte #define einfügen muss. Ich hab in dem Beispielcode von mir gekuckt und sie waren nicht vorhanden. Nachdem ich sie eingefügt hatte waren auch diese Fehlermeldungen verschwunden. nach genauerem durchforsten der touch_api.h und touch_qt_config.h hab ich folgendes gefunden, was damit wahrscheinlich zusammenhängt: [..]
1 | //! Build pointer to correct burst function.
|
2 | #define BURST_FUNC_NAME BURST_JOIN( QT_DELAY_CYCLES, QT_SNSK1_PORT , QT_SNS1_PORT, QT_NUM_CHANNELS, \
|
3 | QT_MAX_NUM_ROTORS_SLIDERS)
|
4 | [..]
|
5 | //! Build pointer to correct burst function.
|
6 | #define BURST_FUNC_NAME BURST_JOIN( QT_DELAY_CYCLES, QT_SNSK1_PORT , QT_SNS1_PORT, QT_SNSK2_PORT , QT_SNS2_PORT, QT_NUM_CHANNELS, \
|
7 | QT_MAX_NUM_ROTORS_SLIDERS)
|
8 | [..]
|
leider gab es jetzt drei weitere Fehlermeldungen: Error 1 undefined reference to `_0111010111_' Error 2 undefined reference to `_01001010111_' Error 3 undefined reference to `_0101110111_' die Fehler gehen alle auf die Datei "burst_0_1_00_0_0.c" zurück, laut Fehlermeldung auf den 'Debug'-Ordner in meinem Projekt. Allerdings hab ich keine solche Datei in meinem Projekt und mit einem Doppelklick darauf passiert auch nichts. Ich fand nun aber keine weitere JOIN-Anweisung mit der ich mir eine mögliche #define herleiten könnte. (zumindest soweit mir dies möglich war, bin ja noch Anfänger) ;-) Das einzige das ich finden konnte, das einen solchen Funktionsnamen erzeugen könnte war das hier:
1 | //! Macros for string concatenation.
|
2 | #define BURST_JOIN(A,B) JOIN(A,B)
|
3 | #if (NUM_X_PORTS ==1)
|
4 | #define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1)
|
5 | extern void BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask); |
6 | #elif (NUM_X_PORTS ==2)
|
7 | #define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1)
|
8 | extern void BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask); |
9 | #define BURST_FUNC_2 BURST_JOIN(burst_qm_,PORT_NUM_2)
|
10 | extern void BURST_FUNC_2 (uint8_t channel, TOUCH_DATA_T x_mask); |
11 | #elif (NUM_X_PORTS ==3)
|
12 | #define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1)
|
13 | extern void BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask); |
14 | #define BURST_FUNC_2 BURST_JOIN(burst_qm_,PORT_NUM_2)
|
15 | extern void BURST_FUNC_2 (uint8_t channel, TOUCH_DATA_T x_mask); |
16 | #define BURST_FUNC_3 BURST_JOIN(burst_qm_,PORT_NUM_3)
|
17 | extern void BURST_FUNC_3 (uint8_t channel, TOUCH_DATA_T x_mask); |
18 | #endif
|
allerdings wird dies vom Preprocessor rausgenommen:
1 | #ifdef _QMATRIX_
|
das steht davor. eine suche in Google brachte mich nur auf die von Krapao eingefügten Links, oder auf für mich nicht brauchbare. das einfügen der im Link enthalteten main und auskommentieren der Funktionen die bei mir nicht vorhanden sind brachte nur noch mehr Fehler. Ich weis im Moment nicht wo ich nach einer Lösung suchen kann, vielleicht kann mir ja nochmal wer einen Tipp geben :-) Danke schon mal im voraus mfg Christoph
> Ich hab wie im ersten Link beschrieben die "qt_asm_tiny_mega.S"-Datei > mittels Add zum Projekt hinzugefügt (mit der Annahme dass es dann > Compiliert und gelinkt wird). Wenn du das noch nicht gehabt hast, heisst das dein Qtouch Projekt war falsch aufgesetzt. In http://www.atmel.com/dyn/resources/prod_documents/doc8375.pdf ist ein Demoprojekt beschrieben, bei dem man sieht welche Defines gesetzt werden. Achtung: Das Demoprojekt ist für den Atmel AT90USB646. Qtouch User Guide http://www.atmel.com/dyn/resources/prod_documents/doc8207.pdf Dann ist es auch wahrscheinlich, dass andere Projekteinstellungen nicht stimmen ("Building the application in IAR and GCC requires certain options to be set."). Z.B. die notwendigen Defines für die Toolchain und Anwendung (User Guide S. 51ff) > touch_qt_config.h > allerdings wird dies vom Preprocessor rausgenommen: > #ifdef _QMATRIX_ Ist normal (User Guide S. 49) > (zumindest soweit mir dies möglich war, bin ja noch Anfänger) ;-) IMHO ist Qtouch zu komplex für Anfänger.
> IMHO ist Qtouch zu komplex für Anfänger.
QTouch an sich hab ich schon verstanden, ich hab auch schon selbst einen
Slider gebastelt und ohne Lib ausgewertet. Es ging zwar nicht schlecht
aber es hat mir noch nicht gefallen. Deswegen wollte ich es mit der
Library probieren und das machte mir Probleme, denn ich hatte davor noch
nicht mit solchen Librarys gearbeitet.
vielen Dank für den Link zum Demo Projekt, das hat mich ernorm
weitergebracht.
Und vielen DANK Krapao für deine Hilfe, jetzt funktionierts einwandfrei
:))
Ich weiß, der Beitrag ist schon etwas älter, aber vielleicht hilft es noch jemanden.... Auch ich habe lange gekämpft, bis ich rausgefunden habe, wie ich mittels include schnell an meine selbst geschiebenen c-/h-Dateien komme. Ich habe einfach ein neues Verzeichnis (libs) in der Toolchain angelegt und meine Dateien dort hineinkopiert. Das Verzeichnis lautet (bei mir!!!): D:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.81\AVRToolchain\avr\include\libs Dann AVR-Studio starten... Nun kann ich in der AVR-GCC Toolchain einfach #include <libs/ eingeben nun dann meine Datei auswählen, die ich includieren will. Wenn Ihr eine andere Toolchain-Version habt, kann es sein, daß die Nummer im Verzeichnispfad anders ist.... LG, Axel.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.