Hallo, habe ein Problem mit dem Elm-Chan-FAT-Code, den ich nicht zum Laufen bringe. In einem der .c-files findet sich folgende Zeile: #include <windows.h> Wenn ich kompiliere, kommt die Fehlermeldung, dass die windows.h nicht gefunden wird. Ich vermute, dass in dem include die Funktion f_mount enthalten ist, denn diese ist offenbar in keinem der .c-files oder include files enthalten, die zu Elm Chans Code gehören. Kann jemand weiterhelfen? Dank im Voraus, Roman
Hallo Roman, die f_mount Funktion ist normalerweise in der ff.h Datei enthalten. Vielleicht hast du irgendwo #include "ff.h" vergessen?
Den include sehe ich nur in integer.h, und da ist er natürlich hinter einem #ifdef _WIN32 verborgen. Wenns anderswo auch nochmal vorkommen sollte, dann sicher auch hinter _WIN32. Warum hast du _WIN32 also gesetzt, wenn du kein Windows verwendest?
c-hater schrieb: > Wie wäre es mit Microsoft? Meines Wissens gibt's von Microsoft keine Windows-Version für AVR, daher glaube ich nicht, daß es von dort viel Hilfe gibt. Man muß sich aber schon fragen, was auf dem AVR ein windows.h zu suchen hat.
Hallo, vielen Dank für Eure Antworten! Ich habe (auch unter deren Berücksichtigung) noch mal systematisch überprüft, was ich in makefiles etc. geändert habe, alles sortiert, und siehe da: Es geht! @fred: Ich verwende WINDOWS; habe den Rechner nach "windows.h" durchsucht, allerdings ohne Erfolg. Im Netz habe ich verschiedene Hinweise gefunden, dass man "windows.h" nicht einfach als file kopieren kann, die Begründungen hierfür jedoch nicht verstanden... Das war der Grund für die Frage. @robo-man: [die f_mount Funktion ist normalerweise in der ff.h Datei enthalten. Vielleicht hast du irgendwo #include "ff.h" vergessen?] Das habe ich überprüft; tatsächlich wird die "ff.h" in "main.c" UND in "ff.c" mittels "include" eingebunden. Mein Fehler lag im Umgang mit den Makefiles (sind Anfängerprobleme, bin gerade dabei zu verstehen, was die genau tun); jetzt forsche ich noch ein wenig weiter, dann melde ich mich mit präziseren Fragen zu makefiles zurück :-) Danke!
Roman S. schrieb: > Ich verwende WINDOWS; habe den Rechner nach "windows.h" durchsucht, nein machst du nicht wirklich - du willst nicht ein Windows Programm bauen oder doch? Wenn ja brauchst du das PlatformSDK von MS.
Roman S. schrieb: > Ich verwende WINDOWS; habe den Rechner nach "windows.h" durchsucht, > allerdings ohne Erfolg. Im Netz habe ich verschiedene Hinweise gefunden, > dass man "windows.h" nicht einfach als file kopieren kann, die > Begründungen hierfür jedoch nicht verstanden... Das war der Grund für > die Frage. Die windows.h wird u.a. mit Visual Studio ausgeliefert und ist sowas wie die avr/io.h oder picxxxx.h nur eben für Grundlegende Windows-relevante Funktionen. Dahinter stecken noch weitere benötigte Dateien, wodurch man die nicht einfach kopieren kann, da dann die Abhängigkeiten fehlen. Auch wenn du Windows zum kompilieren benutzt ist dein Zielsystem immernoch ein Mikrokontroller.
Roman S. schrieb: > Mein Fehler lag im Umgang mit den Makefiles Dann versuche doch erst einmal, den Compiler direkt, als per Kommandozeile bzw. Batchdatei aufzurufen. Einfach damit du mitkriegst, was für Kommandozeilenparameter der Compiler in deinem Fall tatsächlich benötigt, um das Richtige zu machen. Ansonsten geb ich dir den Tip, gerade bei Chan's Quellen darauf zu achten, daß der Startupcode tatsächlich allen benutzten RAM auf 0 ablöscht - auch nach einem eventuellen Warmstart. Chan's ihrer ist m.E. ein bissel bockig und besteht darauf, daß alle globalen struct's von ihm am Anfang auf 0 abgelöscht sind. Ich hatte damals Streß damit und deshalb in dessen Init-Routine das Initialisieren der Variablen nachgerüstet. W.S.
Schau mal in welchem File das steht. Im Integer.h. Du compilierst zwar auf Windows aber nicht für Windows, sondern für deinen AVR, d.h. das was im Bereich für '/* Embedded platform */' steht willst du haben. Keine Ahnung warum bei dir _WIN32 definiert ist, aber ich vermute du kannst einfach den Block
1 | #ifdef _WIN32 /* FatFs development platform */ |
2 | |
3 | #include <windows.h> |
4 | #include <tchar.h> |
5 | |
6 | #else /* Embedded platform */ |
und eins der zwei unteren
1 | #endif
|
entfernen.
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.