Hallo zusammen, als µC-Neuling möchte ich mich nun mit dem Speichern von Dateien auf eine SD-Karte beschäftigen,nachdem mir hier viele Menschen dabei geholfen haben, die USART-Schnittstelle richtig zu programmieren. Also ich habe einen ATMega128 und benutze zum Programmieen das AVR-Studio. Das macht ja vieles schon automatisch. An den ATMEga128 würde ich gern eine SD-Karte anschließen. Den Adapter habe ich mir bereits gebastelt. Jedoch habe ich den Adapter nach folgender Webseite angefertigt: http://www.ulrichradig.de/site/atmel/avr_mmcsd/gfx/MMCSDSCH.JPG Dadurch kann ich nämlich mein auf 5V betriebenes Board weiter verwenden, ohne eine Aufwändige Änderung vornehmen zu müssen. Nun habe ich folgendes Problem: In der Anleitung zum Filesystem steht auf Seite 9 unter anderem: 3. Copy Makefile-AVR to Makefile. MEine Frage dazu ist: Soll ich erstmal das AVR-Studio starten und ein neues Projekt starten, was ich beispielsweise SD-Karte nenne? Das AVR-Studio legt dann nämlich gleich einige Ordner an und in einem Ordner steht auch etwas mit dem Namen Makefile. Soll ich nun dieses Makefile löschen und es durch das Makefile-AVR ersetzen und Makefile-AVR dann anschließend wieder in Makefile umbennennen? Ich weiß einfach nicht genau, was ich da tun soll. 4. Copy conf/config-sample-avr.h to conf/config.h KAnn ich machen, aber in welchen ordner soll ich das schreiben? Jetzt kommt das größere Problem: 5. Compile the library ( make lib ). Now you should have libefsl.a in the efsl directory. Wie soll ich dieses make lib machen? Was soll ich da machen, damit mir das AVR-Studio so eine *.a Datei erzeugt? Über eure Hilfe würde ich mich wirklich sehr freuen. Ich komme nämlich sonst keinen Schritt weiter. Viele Grüße, David
Hätte ich dieses Problem besser in einem Anderen Tehmenbereich gepostet, oderwarum antwortet mir keiner? David
Wirf doch einfach mal einen Blick in den make-File 'lib' - dann wirst du sehen, wie eine .a-Datei erzeugt wird. make ist das Programm, das die Anweisungen ausführt, die efsl/libefsl.a erzeugen. Das .a kommt übrigens von 'archiver' - das ist der Name des Unix-Bibliothekverwalters.
Hallo, leider kenne ich mich zu wenig aus mit sowas. eshalb poste ich ja hier. Flgendes steht in dem Makefile drin: //////////////////////////////////////////////////////////////////// COPT=-g3 -Wall -Os -mmcu=atmega128 INCLUDEDIRS=-Iinc -Iconf CFLAGS=$(COPT) $(INCLUDEDIRS) CC=avr-gcc AR=avr-ar OBJCOPY=avr-objcopy OBJ=src/efs.o src/plibc.o src/disc.o src/partition.o src/time.o src/fs.o src/fat.o src/file.o src/dir.o src/mkfs.o src/debug.o src/ioman.o src/ui.o src/extract.o src/interfaces/atmega128.o src/interfaces/sd.o all: lib lib: $(OBJ) $(AR) rcs libefsl.a $(OBJ) clean : rm -f $(OBJ) libefsl.a //////////////////////////////////////////////////////////////////// aber leider sagt mir das nichts. Und ich verstehe jetzt immer noch nicht, wie ich meine libefsl.a erzeugen kann. Ich bin Anfänger und benutze unter WindowsXP das AVR-Studio. Habe kein Linux. Wie startet man beispielsweise das Programm Make? Ist es vielleicht schon im AVR-Studio implementiert? Muss doch eigentlich, da das AVR-Studio automatisch ein Makefile erzeugt. Wäre um ausführlichere Tipps sehr dankbar.
>Was soll ich da machen, damit mir das AVR-Studio so eine *.a Datei erzeugt? Nix. AVR-Studio ist dafür das falsche tool. Mit fertigen makefiles kann AVR-Studio nichts (oder nicht viel) anfangen. Wenn du die Dateien so, wie vorgesehen, umbenannt und kopiert hast, machts du einfach ein command-Window ("DOS-Box") auf und wechselst damit in das entsprechende Verzeichnis. Dann tippst du "make", und der Rest sollte alleine gehen. Wenn deine WINAVR-Installation mit dem fertigen makefile nicht funktioniert, bastelst du dir selber ein neues. Das geht am einfachsten mit MFile. Die fertige lib kann dann in AVR-Studio-Projekte eingebunden werden. Oliver
Hallo Oliver! Das probiere ich jetzt gleich mal aus. Werde mich wieder melden ! Danke schonmal. David
Hallo, so jetzt habe ich es geschafft eine libefsl.a-Datei zu erzeugen. Kann man den Ordner, in dem sich diese Datei befindet eigentlich nach der Kompilierung woanders hinkopieren, oder ist der dann ortsgebunden? Leider funktioniert das alles nicht so richtig. Wenn ich im ARV-Studio links unter Headefiles das efs.h hinzufüge, dann bekomme ich trotzdem eine Fehlermeldung vom AVR-Studio, die wie folg lautet: "efs.h" no such file or directory. Wieso versteht das AVR-Studio nicht, dass die Dateien doch vorhanden sind? Ich habe sogar alle .h-Dateien in den selben Ordner kopiert, in dem sich auch die .c-Datei befindet. Wäre echt nett, wenn ihr mir mehr Tipps geben könntet. David
Hi 'Oliver! Hier die Fehlermeldungen: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rm -rf SD-Karte.o SD-Karte.elf dep/* SD-Karte.hex SD-Karte.eep Build succeeded with 0 Warnings... avr-gcc.exe -mmcu=atmega128 -Wall -gdwarf-2 -O0 -MD -MP -MT SD-Karte.o -MF dep/SD-Karte.o.d -c ../SD-Karte.c ../SD-Karte.c:1:17: error: efs.h: No such file or directory ../SD-Karte.c:6: warning: return type of 'main' is not 'int' ../SD-Karte.c: In function 'main': ../SD-Karte.c:7: error: 'EmbeddedFileSystem' undeclared (first use in this function) ../SD-Karte.c:7: error: (Each undeclared identifier is reported only once ../SD-Karte.c:7: error: for each function it appears in.) ../SD-Karte.c:7: error: expected ';' before 'efs' ../SD-Karte.c:8: error: 'EmbeddedFile' undeclared (first use in this function) ../SD-Karte.c:8: error: expected ';' before 'file_r' ../SD-Karte.c:12: warning: implicit declaration of function 'debug_init' ../SD-Karte.c:14: warning: implicit declaration of function 'DBG' ../SD-Karte.c:14: warning: implicit declaration of function 'TXT' ../SD-Karte.c:16: warning: implicit declaration of function 'efs_init' ../SD-Karte.c:16: error: 'efs' undeclared (first use in this function) ../SD-Karte.c:20: warning: implicit declaration of function 'file_fopen' ../SD-Karte.c:20: error: 'file_r' undeclared (first use in this function) ../SD-Karte.c:24: error: 'file_w' undeclared (first use in this function) ../SD-Karte.c:28: warning: implicit declaration of function 'file_read' ../SD-Karte.c:28: warning: suggest parentheses around assignment used as truth value ../SD-Karte.c:29: warning: implicit declaration of function 'file_write' ../SD-Karte.c:32: warning: implicit declaration of function 'file_fclose' ../SD-Karte.c:35: warning: implicit declaration of function 'fs_umount' ../SD-Karte.c:9: warning: unused variable 'i' ../SD-Karte.c: In function 'hang': ../SD-Karte.c:43: warning: implicit declaration of function '_NOP' make: *** [SD-Karte.o] Error 1 Build failed with 10 errors and 13 warnings... ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Gruß, David
@ Oliver: Dieses Testprogramm (Siehe Anhang), welches ich mit runtergeladen habe , habe ich ausprobiert und dann kamen die Fehlermeldungen, die ich dir eben gepostet habe. Ich habe es im AVR-Studio in SD-Karte.c umgetauft, da das Gesamtprojekt diesen Namen trägt. David
>#include <efs.h>
Versuchs mal mit
#include "efs.h"
efs.h alleine reicht aber noch nicht. Schau da mal
rein welche *.h Dateien noch benötigt werden !
Hi! Habe geschaut welche .h-Dateien noch benötigt werden und habe die Dateipfade so angepasst, dass sie auch gefunden werden. Leider kommen nun fogende Fehlermeldungen: Build started 15.7.2007 at 18:28:08 avr-gcc.exe -mmcu=atmega128 SD-Karte.o -o SD-Karte.elf SD-Karte.o: In function `main': ../SD-Karte.c:12: undefined reference to `debug_init' ../SD-Karte.c:14: undefined reference to `debug' ../SD-Karte.c:16: undefined reference to `efs_init' ../SD-Karte.c:20: undefined reference to `file_fopen' ../SD-Karte.c:24: undefined reference to `file_fopen' ../SD-Karte.c:29: undefined reference to `file_write' ../SD-Karte.c:28: undefined reference to `file_read' ../SD-Karte.c:32: undefined reference to `file_fclose' ../SD-Karte.c:33: undefined reference to `file_fclose' ../SD-Karte.c:35: undefined reference to `fs_umount' make: *** [SD-Karte.elf] Error 1 Build failed with 10 errors and 0 warnings... Gruß, David
Du musst die libefsl.a als LIB mit dazulinken. Wie das im AVRStudio geht weiss ich aber nicht.
Wäre nett, wenn mir einer sagen könnte, wie man die libefsl.a als LIB im AVR-Studio mit dazulinken kann.
So, unter Project->Configuration Options->Libraries kann man per Mausklick *.a-Dateien hinzufügen. Dass das funktionier, habe ich hier gefunden: Beitrag "Peter Fleurys library einbinden fehlgeschlagen" Das habe ich dann auch gemacht und siehe da, ich habe nur noch eine einzige Fehlermeldung. Wenn mir da jetzt noch einer sagen könnte, was das bedeutet, dann habe ich es geschafft, hoffe ich. Hier die Ausgabe der Fehlermeldung: rm -rf SD-Karte.o SD-Karte.elf dep/* SD-Karte.hex SD-Karte.eep Build succeeded with 0 Warnings... avr-gcc.exe -I"D:\Eigene Dateien\Eigene Dokumente\Uni\Diplomarbeit\Mikrocontroller\Projekte\SD-Karte\conf" -mmcu=atmega128 -Wall -gdwarf-2 -O0 -MD -MP -MT SD-Karte.o -MF dep/SD-Karte.o.d -c ../SD-Karte.c ../SD-Karte.c: In function 'main': ../SD-Karte.c:28: warning: pointer targets in passing argument 3 of 'file_read' differ in signedness ../SD-Karte.c:28: warning: suggest parentheses around assignment used as truth value ../SD-Karte.c:29: warning: pointer targets in passing argument 3 of 'file_write' differ in signedness ../SD-Karte.c:9: warning: unused variable 'i' avr-gcc.exe -mmcu=atmega128 SD-Karte.o -lefsl -o SD-Karte.elf c:\winavr-20070525\bin\..\lib\gcc\avr\4.1.2\..\..\..\..\avr\bin\ld.exe: cannot find -lefsl make: *** [SD-Karte.elf] Error 1 Build failed with 1 errors and 4 warnings... Gruß, David
Kann mir einer sagen, woher diese Datei kommt? Müsste ich sie eigentlich mit runtergeladen haben? Oder entsteht sie wenn man make macht? Ich frage mich, wieso diese Datei nicht da ist. Habe sie mit der Windows Suchfunktion gesucht, finde sie aber nicht. Was mache ich denn jetzt? David
David V. wrote: > KAnn mir einer sagen, woher diese Datei kommt? Müsste ich sie eigentlich > mit runtergeladen haben? Oder entsteht sie wenn man make macht? Ich > frage mich, wieso diese Datei nicht da ist. Vermutlich hast du die in den Linkeroptionen eingetragen? Hier: > So, unter Project->Configuration Options->Libraries kann man per > Mausklick *.a-Dateien hinzufügen.
Ja unter Linkeroptionen habe ich lediglich zusätzlich: libefsl.a eingtragen. Danach hatte ich 9 Fehlermeldungen weniger. Aber ich habe keine ahnung, wo ich lefsl finden kann...
lefsl kommt vom makefile. Dort wird eine LIB ohne "lib" und ohne ".a" eingetragen. Also -lefsl.
Hey Holger ! Das hat geklappt ! Keine Fehlermeldungen mehr. Sche hier: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Build started 15.7.2007 at 19:30:31 avr-gcc.exe -mmcu=atmega128 SD-Karte.o -lefsl -o SD-Karte.elf avr-objcopy -O ihex -R .eeprom SD-Karte.elf SD-Karte.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex SD-Karte.elf SD-Karte.eep || exit 0 c:\WinAVR-20070525\bin\avr-objcopy.exe: there are no sections to be copied! AVR Memory Usage ---------------- Device: atmega128 Program: 23106 bytes (17.6% Full) (.text + .data + .bootloader) Data: 50 bytes (1.2% Full) (.data + .bss + .noinit) Build succeeded with 0 Warnings... ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Menschenskinder, woher wisst ihr sowas? Lernt man so ein tiefes Verständnis durch Erfahrung? Ich mache das hier nämlich seit 1,5 Wochen. Bin also Beginner. Viele Grüße, David
Sinnvoller: füge eine -L Option beim Linken hinzu, die den Standort der Anwenderbibliothek(en) angibt.
Jörg Wunsch wrote: > Sinnvoller: füge eine -L Option beim Linken hinzu, die den Standort > der Anwenderbibliothek(en) angibt. Richtig. Hier nachgeguckt unter der Option "-L": http://www.nongnu.org/avr-libc/user-manual/using_tools.html * -Lpath Additional location to look for archive libraries requested by -l options. Daraus folgt für meine Projekt das ich in AVR Studio folgendes tun muss: Projekt -> Customization Options -> Custom Options -> [Linker Options] und jetzt in dem "Add" - Feld folgendes Eingeben: -L"C:\proj\Projekt 070525 - AVR-Savvy\src\efsl-0.2.8\test" und auf Add drücken. Fertig!
Hendrik H. wrote: > * -Lpath > Additional location to look for archive libraries requested by -l > options. > > Daraus folgt für meine Projekt das ich in AVR Studio folgendes tun muss: > > Projekt -> Customization Options -> Custom Options -> [Linker Options] > und jetzt in dem "Add" - Feld folgendes Eingeben: > -L"C:\proj\Projekt 070525 - AVR-Savvy\src\efsl-0.2.8\test" > und auf Add drücken. -L. wäre auch einen Versuch wert. So für die Schreibfaulen ;-).
Frank Lorenzen wrote: > Hendrik H. wrote: > >> * -Lpath >> Additional location to look for archive libraries requested by -l >> options. >> >> Daraus folgt für meine Projekt das ich in AVR Studio folgendes tun muss: >> >> Projekt -> Customization Options -> Custom Options -> [Linker Options] >> und jetzt in dem "Add" - Feld folgendes Eingeben: >> -L"C:\proj\Projekt 070525 - AVR-Savvy\src\efsl-0.2.8\test" >> und auf Add drücken. > > -L. wäre auch einen Versuch wert. So für die Schreibfaulen ;-). Richtig... oder z.B. -L../
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.