Forum: Mikrocontroller und Digitale Elektronik FreeRtos auf LPC1768 GCC Startschwierigkeiten


von Tueftler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Bastlerkollegen,


Ich arbeite momentan mit dem Cortex M3, speziell mit dem LPC1768 von 
NXP.

Es läuft eigentlich auch alles ganz gut. Ich benutze ein Makefile von 
Martin Thomas welches ich so weit angepasst habe, dass meine "normalen" 
Projekte damit funktionieren. Als Compiler kommt der arm-none-eabi-GCC 
von CodeSourcery zum Einsatz.

Nun wollte ich mir FreeRtos anschauen. Leider gibt es da für den LPC1768 
nur ein Projekt für Rowley-Crossworks und die Code-Red-IDE, die jedoch 
beide auf dem ARM-GCC basieren.
Da ich weder das eine noch das andere habe, habe ich also alle Dateien 
in mein MakeFile aufgenommen und soweit angepasst, dass es kompiliert.
(Rowley-Version)


Bei folgenden Sachen hat er gemeckert:
1. Kann kein File "IntQueueTimer.h" finden
   ->Habe darauf hin dieses File eines anderen DemoProjekts, nämlich
   LMS... in mein Verzeichniss kopiert und damit ist er zufrieden. 
(dieses
   File sieht bei allen Projekten gleich aus)

2. Eigenes StartupFile hinzugefügt (von Martin Thomas) da er bei dem
   Original die Datei "LPC1000.h" includieren wollte, die ich jedoch
   nirgends finden konnte.

Nun Kompiliert er die ganze Sache schon Fehlerfrei (nur einige Warnings
werden ausgespuckt) aber es blinken noch keine LEDs, leider.

Also mit der LED-Debug-Methode versucht herauszufinden, bis zu welcher 
Stelle er kommt.

Er ruft alle Funktionen auf bis "vTaskStartScheduler();" auf.

Nachdem ich dort dann etwas weiter geforscht habe, konnte ich
herausfinden, dass er bis zur Funktion "vPortStartFirstTask(void)" 
kommt.
Hier soll normalerweise die erste Task aufgerufen werden. Ab dort 
verliert
sich die Spur... :(

die Funktion xPortSysTickHandler wird anscheinend nicht aufgerufen, was 
ja schon mal schlecht ist, da innerhalb dieser ja normalerweise der 
Scheduler läuft.

Nun bin ich auch nicht so der Assembler Held, als dass ich da so ohne
Hilfe weiter kommen würde.
Vielleicht hat ja jemand von euch ein ähnliches Problem oder eben nicht,
und kann mir einen Tip geben.
Habe leider keinen Debugger, deshalb bleibt mir nur die 
LED-Debug-Methode.

Habe das Projekt angehängt, vielleicht kann ja mal einer einen Blick 
reinwerfen oder versuchen es zu kompilieren.

Ich freue mich auf eure Tips und hoffe, dass ihr mir vielleicht helfen 
könnt.

Tueftler

von holger (Gast)


Lesenswert?

Du hast wahrscheinlich die falsche Startup-Datei genommen.
Wieso brauchst du eigentlich so viele?

Du musst die nehmen wo das hier drin steht:

.extern xPortPendSVHandler
.extern xPortSysTickHandler
.extern vPortSVCHandler

Das wäre dann

LPC1700_Startup.s

von Tueftler (Gast)


Lesenswert?

Hallo Holger,
Vielen Dank, dass du dir die Zeit genommen hast, in den Code 
hineinzuschauen und mir den Tip zu geben.
Hab gar nicht dran gedacht, dass der ja die richtigen 
Interrupt-Sprungaddressen da haben muss, um richtig zu funktionieren. 
Habe also die entsprechenden Interrupteinträge noch hinzugefügt und es 
nun also zum Laufen bekommen, und zumindest die LEDs blinken schonmal 
JuHu!

Jetzt gehts weiter.
Vielen Dank.

von noch`n Tüftler (Gast)


Lesenswert?

Hallo Tueftler,
könntest Du das funktionierende Projekt hier reinstellen?
Danke!!!

von Tueftler (Gast)


Lesenswert?

kommt demnächst, will das ganze noch etwas aufräumen..

von Tueftler (Gast)


Angehängte Dateien:

Lesenswert?

So hier nun die aufgeräumte Version...

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
Noch kein Account? Hier anmelden.