Hallo allerseits, ich arbeite im Rahmen meiner Masterarbeit zum ersten Mal mit C und einem Mikrocontroller. Die Grundlagen für beides habe ich innerhalb von knapp einer Woche gelernt. Da ich auf dem µC nur rechnen will und evtl. mal eine LED blinken soll genügen die Grundlagen soweit. Meine Erfahrungen in der Programmierung beschränken sich im wesentlichen auf PHP und andere Websprachen, sowie Computer-Algebra-Systeme, wie Sage, Pari, Matlab, Magma und co. Ich bin Mathematiker und wollte die Herausforderung in der Informatik angehen ;) Meine Vertiefung ist die Kryptographie. Nun zum eigentlichen Problem. Ich nutze CooIDE mit der ARM-Toolchain (arm-none-eabi-gcc) und möchte die, von Microsoft zur Verfügung gestellte, FourQ-Lib [1] für den Prozessor kompilieren. Beim Linken bekomme ich dann aber unzählige Fehler wegen fehlender Libs. Angefangen mit librt über libc.so.0, libpthread.so.0 usw. In den Referenzen sind jedoch Benchmark für den Cortex M4 Prozessor gegeben. Es muss also möglich sein diese Lib dafür passend zu übersetzen. Ich habe auch MinGW mit MSYS installiert und habe entsprechend eine CMD, die der Konsole in UBuntu gleicht. Ubuntu habe ich ebenfalls in einer VM-Ware installiert. Worauf ich letztendlich arbeite, ist mir egal. Kurze Info zum System: OS=Win10. Ich konzentriere mich hauptsächlich auf den "FourQ_x64_..." Ordner und habe dort die Makefile für den ARM angepasst. (-march=native auf stmv7-m geändert, -float-abi=hard, ..) Ich habe die Makefile angehängt. Die Tests habe ich noch nicht bearbeitet, hier werde ich aber entsprechend eine grüne oder rote LED blinken lassen, bei pass bzw. error. Also meine Frage nun an die Community, die sich mit den µC auskennen: Wie schaffe ich es, die FourQ Funktionen und Datentypen in eine Lib zu übersetzen, dass ich sie in meinem Hauptprojekt nutzen kann? Viele Grüße und vielen Dank für die Unterstützung :) [1] https://www.microsoft.com/en-us/research/project/fourqlib/
Da wirst Du Dich mal noch tiefer mit C Compiler und Linker beschäftigen müssen, denn da sehe ich doch arge Defizite im Makefile. Das fängt damit an dass Du was mit "LibXXX" erzeugtst, was aber keine Lib sondern ein fertig gelinktes Programm wäre (nach den Compiler Optionen und Parametern). Statische Libs baut man ganz anders. Übrigens: Dynamisch gelinkte Libs gibt es auf ARMv7-M nicht unter GCC. Dann wird auch offenbar Assembler aus AMD64 verwendet - der ist mit 100%iger Sicherheit nicht unter ARM übersetzbar. Ansonsten würde ich halt denjenigen fragen, der die Cortex-M4 Benchmark Werte produziert hat. Der muss ja wissen wie man die Lib erzeugen kann. Vorsicht: Das läuft dann u.U. nur auf dem einen speziellen Mikrocontroller-Typ.
Schau mal hier: https://github.com/Microsoft/FourQlib/tree/master/FourQ_ARM läuft da aber auf einem STM32F407 und entsprechend angepasst werden. m.f.G. Dieter Gräf
Dieter Graef schrieb: > Schau mal hier: > https://github.com/Microsoft/FourQlib/tree/master/FourQ_ARM Wie der Zufall es so will, habe ich genau diesen Link kurz vorher auch endlich finden können :D Ich habe hier den STM32F429ZI-DISCO und den STM32F407 auf einem lilanem Board mit der Aufschrift CJMCU-407. Das Flashen hatte hier zwar geklappt, aber ich habe kein Feedback bekommen, ob der Code auch funktionierte. (Feedback wäre eine LED zum Blinken zu bekommen :) ) Also vielen Dank schon mal für die Hilfe bislang. Sehr flott und sehr nett :) @Jim Meba Ja, da hast du recht. Ich benenne hier eine Datei "libFourQ" in der Makefile, die als Programm kompiliert wird. Habe darauf nicht wirklich geachtet.. eine Lib erzeugt man doch durch z.B. ar -cvq libfourq.a *.o Das habe ich nun in der Makefile ersetzt. Wenn ich diese nun fertig gebaut habe, also die Lib, kann ich dann in meiner Main einfach die Datentypen aus der Lib nutzen, als wären sie native C-Datentypen? Hierzu habe ich kein Tutorial gefunden, dass anhand einer Lib zeigt, wie man sie selber baut, einbindet und nutzt.
Zu einer Lib gehört auch immer ein Headerfile mit den Funktionsprototypen und Datentypen. Ein Programm für einen F4 läuft prinzipiell auch auf allen anderen F4s. Das einzige Problem ist fehlende Peripherie auf den kleineren Modellen (z.B. nur 3 statt 6 UARTS etc...). Von Klein (F407) auf Groß (f429) sollte Problemlos möglich sein, muss aber zumindest neu gelinkt werden (andere größere Speicherbereiche). mfg
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.
