3 Stimmen

GCC mit FreeRTOS und OpenOCD konfigurieren

Ich bin mir ziemlich sicher, dass dies möglich ist, aber ich bin mir nicht sicher, wie ich es anstellen soll. Ich bin sehr neu in der Entwicklung mit GCC im Allgemeinen und ich habe noch nie FreeRTOS verwendet, aber ich möchte versuchen, das Betriebssystem auf einer TI ARM Cortex MCU zum Laufen zu bringen, aber mit einem kleinen Twist: Ich würde es gerne mit Pascal zum Laufen bringen. Ich bin neugierig:

  • Ist es überhaupt möglich, damit Arbeit zu bekommen? Wenn nicht, sind die nächsten Fragen eher nebensächlich.
  • Aus meiner Delphi-Zeit erinnere ich mich vage an die Möglichkeit, auf Funktionen in C-Bibliotheken zuzugreifen. Ich frage mich, ob ich Zugang zu den C-Routinen in FreeRTOS haben würde.
  • Wenn ich die GCC-Version (bevorzugt) verwenden würde, wäre ich in der Lage, mit OpenOCD auf dem Ziel zu debuggen? Ich bin nicht ganz sicher, wie Debugsymbole funktionieren und ob es mehr oder weniger sprachunabhängig ist (hoffentlich, in diesem Fall).
  • Als eine Art Bonusfrage, die etwas außerhalb des Rahmens der ursprünglichen Anfrage liegt, kann ich FreeRTOS auf einem x86-Prozessor (z.B. meinem Entwicklungs-PC) simulieren, um das Debugging während der Entwicklung zu erleichtern? (Mit einem Pascal-Programm, natürlich )

Ich habe keine Dokumentation darüber gefunden, wie man dies erreicht, und hoffe, dass jemand hier etwas Licht ins Dunkel bringen kann! Jede Ressource wäre sehr hilfreich. Wie ich schon sagte, bin ich sehr neu in dieser Art der Entwicklung. Ich bin auch offen für Vorschläge, wenn Sie denken, es ist eine bessere Alternative.

Zu Ihrer Information: Meine bevorzugte Hostkonfiguration wäre in etwa so:

  • Linux (Ubuntu/Debian)
  • Eclipse IDE für Entwicklung, Unit-Tests und hoffentlich auch Simulation/Debugging
  • OpenOCD für Target-Debugging
  • GNU Pascal + FreeRTOS im Visier

3voto

Richard Barry Punkte 31

FreeRTOS besteht aus C-Quellcode, so dass Sie, wie Sie sagen, einen Mechanismus brauchen, um C mit Ihren Pascal-Programmen zu verknüpfen. Außerdem ist FreeRTOS darauf angewiesen, dass bestimmte Register für Dinge wie die Übergabe eines Parameters an einen Task verwendet werden (als hypothetisches Beispiel könnte der Task immer erwarten, dass sich der Parameter im Register R0 befindet), so dass Sie sicherstellen müssten, dass die ABI für den C-Compiler und den Pascal-Compiler dieselbe ist - oder Sie müssten Ihren Task in C eingeben und ihn dann eine Pascal-Funktion aufrufen lassen (sehr unangenehm). Dann gibt es noch das Problem der Interrupts, des Aufrufs von Inline-Makros, usw. Ich würde sagen, daß dies extrem schwierig zu erreichen wäre.

2voto

Marco van de Voort Punkte 24852

Sowohl GNU Pascal als auch Free Pascal unterstützen das Linken zu C (gcc) und ARM, sowie den Aufruf von Pascal-Code aus C usw. Einen Header zu schreiben und die Prototypen mit cdecl zu deklarieren, ist alles, was es zu tun gibt.

Makros sind ein etwas größeres Problem. Normalerweise schreibe ich sie einfach in Inline-Funktionen um (was sie ohnehin hätten sein sollen). Abgesehen von der Makro-/Kopfzeilenproblematik sind die Probleme eher compilerspezifischer Natur (was auch bei der Portierung von einem C-Compiler zum nächsten ein Problem wäre)

Wenn Sie einen TP/Delphi-Dialekt bevorzugen, ist Free Pascal die bessere Wahl.

Ich kann meinen alten Delphi-Code problemlos auf meinem Sheevaplug ausführen.

2voto

Richard Punkte 236

Es gibt bereits ein Beispiel für FreeRTOS/GCC/OpenOCD auf einem TI Cortex-M3 (war Luminary Micro Cortex-M3). Beachten Sie jedoch, dass es sich um ein sehr altes Beispiel handelt und sowohl die verwendeten Eclipse- als auch OpenOCD-Versionen nicht mehr aktuell sind.

Obwohl ein Eclipse-Projekt zur Verfügung gestellt wird, ist das Projekt als Standard-Make-Projekt (im Gegensatz zu einem verwalteten Make-Projekt) konfiguriert, so dass es ein Standard-Makefile gibt, das genauso einfach von der Kommandozeile wie von Eclipse aus ausgeführt werden kann.

http://www.freertos.org/portLM3Sxxxx_Eclipse.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X