Hallo Leute, ich habe ein C-Programm und möchte es gerne via Keil_uvision modifizieren und auf einen STM32F4 hochladen. Leider wurde das C-Programm vermutlich in einer anderen IDE geschrieben und GCC als Compiler verwendet wodurch es auf Keil nicht funktioniert. Es gibt eine Anleitung zur Verwendung von GCC in Keil aber leider nur für dem Cortex M3: http://m8051.blogspot.dk/2012/10/using-gcc-in-keil-best-of-both-worlds.html Weiß jemand wie das beim Cortex M4 (STM32F4) geht? Leider sind einige Dateien beim M4 anders, wodurch ich das obige verlinkte Beispiel nicht einfach so übernehmen kann. Vielen Dank.
:
Verschoben durch Moderator
Der M4 Prozessor ist mehr oder weniger ein M3 mit DSP Erweiterung und optionaler FPU. Die STM32F4 haben eine FPU. Was sich bei dir Dabei ändert ist die Peripherie auf dem Mikrocontroller, also das um den Kern drum herum. Der Flash hat eventuell eine andere Größe, die Taktverwaltung unterschiedet sich. etc, etc. Was sich für dich dabei ändert ist, dass anstatt der Libs für den STM32F10x musst du die Libs für den STM32F4xx verwenden. Das könnte dann schon alles sein.
Geheimtip: Der GCC und kompatible IDEs sind gratis. Verwende doch einfach eclipse oder emBlocks und spare dir den Aufwand mit uVision...
Dennis R. schrieb: > Was sich bei dir Dabei ändert ist die Peripherie auf dem > Mikrocontroller, also das um den Kern drum herum. Hallo, vielen Dank erstmal für deine Antwort. Das mit der unterschiedlichen stdperiph hab ich mir auch schon gedacht. Leider gibt es den Ordner "CM3" im M4-stdperiph-Ordner gar nicht, wodurch ich die verlinkte Anleitung aus meinem ersten Beitrag nicht einfach übernehmen kann: Here you need to extract the zip file stm32f10x_stdperiph_lib.zip into the directory "STM32F10x_StdPeriph_Lib_V3.5.0" from which we would be copying the following directories: Copy "Libraries\CMSIS\CM3\CoreSupport" => "wsSTM32\CMSIS" Copy "Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x" => "wsSTM32\STM32F10x" Copy "Libraries\STM32F10x_StdPeriph_Driver" => "wsSTM32\STM32F10x_StdPeriph_Driver" Copy "Project\STM32F10x_StdPeriph_Template" => "wsSTM32\STM32F10x_StdPeriph_Driver" Unterschied zu Cortex M4: - Es gibt keinen CM3-Ordner :-(
Du hast doch bereits ein fix und fertiges Projekt. Du willst doch bloß die IDE wechseln. Du schreibst, du willst noch nicht einmal auf Realarm wechseln, sondern weiterhin den gcc nutzen. Das heißt, du nimmst genau die Dateien die du hast und nicht mehr. Du musst nur die IDE so einstellen, dass der gcc genommen wird und dann die passenden Optionen setzen. Offen bleibt dabei natürlich, warum dieser Aufwand?
markus schrieb: > Here you need to extract the zip file stm32f10x_stdperiph_lib.zip Das ist , wie man am Dateinamen erkennt, die Lib für den STM32F1! Du brauchst aber die für den STM32F4... Random .. schrieb: > besserer Debugger? Was kann der denn besser als zB GDB mit JLink?
Dr. Sommer schrieb: > Random .. schrieb: >> besserer Debugger? > Was kann der denn besser als zB GDB mit JLink? mehr Möglichkeiten beim Debuggen durch die IDE. Ggf. Trace / SWO.
:
Bearbeitet durch User
Random .. schrieb: > mehr Möglichkeiten beim Debuggen durch die IDE. Ah, das erklärt natürlich alles. > Ggf. Trace / SWO. Kann eclipse auch.
Random .. schrieb: > besserer Debugger? Die Gründe für seinen Wechsel kann ja nur Markus nennen. Spekulationen bringen uns da nur wenig weiter. Und wenn er sich so schwer tut ein Projekt unter Keil zum Laufen zu bekommen kann ich mir nicht so recht vorstellen, dass es ihm momentan vordringlich um den Debugger geht. Aber ja, ich mag den Debugger vom Keil auch lieber als den gdb.
Warum ist die Anleitung nur für Cortex M3 anwendbar und nicht für Cortex M4? Vermutlich geht es um die CMSIS Files oder? Ist dein "Programm" schon fix fertig für den STM32F4? Normalwerweise erzeugst du für deinen STM32F4 ein neues Projekt, dann werden deine Startupfiles angelegt. Das kannst du auch mit CooCox machen, einfach eine GCC Toolchain herunterladen und in CooCox den Pfad dort hin einstellen.
Man kann natürlich auch einfach GCC so nehmen und sich ein Buildscript erstellen, dann ist man überhaupt nicht mehr auf die Befindlichkeiten irgendwelcher IDEs angewiesen, und man kann auch in 10 Jahren noch das Binary erzeugen. Und auf jedem Betriebssystem (ggf. Batchfile in Shellsript eben umwandeln). Ein bestehendes Elf/Hexfile hochladen wird die Keilumgebung ja wohl noch können. Ist natürlich blöd, wenn vorher eine andere Klickibunt-Umgebung verwendet wurde, die z.B. statt eines vernünftigen Linkerscriptes einen Zoo von Linker-Einstellungen über diverse Dialogboxen verteilt und DARAUS dann erst die Linkereinstellungen selber zusammengefummelt hat.
Vielen Dank euch allen für die Antworten. Das Projekt hab ich von Github heruntergeladen. Es beinhaltet diverse .c und .h Dateien welche mittels eines "makerfiles" auf den STM32F4 hochgeladen werden können. Ich kann die einzelnen .c und .h files im Editor editieren und mittels Ubunut-Eingabekonsole auf den STM laden. fürn Hugo schrieb: > Warum ist die Anleitung nur für Cortex M3 anwendbar und nicht für Cortex > M4? > Vermutlich geht es um die CMSIS Files oder? > Ist dein "Programm" schon fix fertig für den STM32F4? ja, wie gesagt es läuft unter Ubuntu mit dem "Makefile" > > Normalwerweise erzeugst du für deinen STM32F4 ein neues Projekt, dann > werden deine Startupfiles angelegt. Ja, das dachte ich mir auch. Ganz so einfach ist es leider jedoch nicht. Selbst wenn ich den Debugger ändere, kann Keil es nicht richtig kompilieren: http://www.keil.com/arm/gnu.asp
Max M. schrieb: > Es beinhaltet diverse .c und .h Dateien welche mittels eines > "makerfiles" auf den STM32F4 hochgeladen werden können. Ja dann mach das doch so. Makefiles funktionieren auch unter Windows.
Dr. Sommer schrieb: > Ja dann mach das doch so. Makefiles funktionieren auch unter Windows. Solange der Ersteller intelligent genug war, keine absoluten Pfade reinzubauen. https://launchpad.net/gcc-arm-embedded/+download http://gnuwin32.sourceforge.net/packages/make.htm
2⁵ schrieb: > http://gnuwin32.sourceforge.net/packages/make.htm In installiere für sowas gerne Cygwin (und dessen make Paket). Zwei Gründe: Erstens kommt dann auch gleich eine shell mit und auch die anderen wichtigen Tools wie mkdir und rm, da laufen dann auch Makefiles die sonst nur unter *ix laufen würden und man spart sich einen Haufen Extrawürste und Verrenkungen wenn man ein Script oder ein Makefile in beiden Welten gleichermaßen benutzen können will. Zweitens: Früher oder später will man auch unter Windows mal die Schmerzen abstellen und endlich eine gescheite Konsole benutzen können, also wird man es eh irgendwann installieren.
Bernd K. schrieb: > In installiere für sowas gerne Cygwin Andere Möglichkeit: Bei Gnu arm eclipse gibt's einen Installer der busybox + make installiert (völlig unabhängig von eclipse selbst). Damit müssten sich die meisten makefiles ausführen lassen (auf jeden Fall die von eclipse generierten). Der Vorteil ist hier dass die Installation super simpel und automatisch geht und das Paket winzig ist. Mit dem gnuwin32 make hatte ich das Problem, dass es bei manchen makefiles mit der -j Option abstürzt. Die diversen Alternativen (cygwin, mingw, ...) sind alle recht groß und nicht so einfach zu installieren.
Bernd K. schrieb: > Zweitens: Früher oder später will man auch unter Windows mal die > Schmerzen abstellen Die Powershell ist tatsächlich ganz brauchbar, aber halt anders als POSIX Shells.
Nop schrieb: > Ein bestehendes Elf/Hexfile hochladen wird die Keilumgebung ja wohl noch > können. Naja, speziell damit hat sie eher Probleme.
Steffen R. schrieb: > Nop schrieb: >> Ein bestehendes Elf/Hexfile hochladen wird die Keilumgebung ja wohl noch >> können. > > Naja, speziell damit hat sie eher Probleme. eigentlich nicht, man braucht pro CPU (M3, M4, ..) nur ein einziges Keil-Projekt (wir verwenden derzeit uVision3 oder uVision4 für 100'te verschiedner Hexfiles) dem man das Hex-File unterschiebt.
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.