Forum: Mikrocontroller und Digitale Elektronik FreeRTOS auf LPC 1768


von Hochi (Gast)


Lesenswert?

Hallo Leute,

Ich habe seit gut 4 Wochen ein Projekt in der Schule laufen das sich um 
FreeRTOS dreht. Als Hardware hab ich eine LPC 1768 Stick mit einem 
Evalution Board 24COM-A3 zur Verfügung.

Als Grundstein hab ich mir die Demo von FreeRTOS.org (GCCRedSuite 
Edition) geholt und hab sie nun einigermaßen im HiTop zum laufen 
gebracht. Warum ich HiTop verwenden? Ich muss. Ich würde gerne KEIL 
verwenden, darf das aber nicht. Und eigentlich bin ich ziemlich 
verärgert über die Software von HiTEX da sie nur Fehler bringt aber gut 
das ist jetzt ein anderes Thema.

Nach unzähligen Fehler habe ich es nun endlich geschafft das System zum 
Compelieren und Laufen zubringen. Bisher habe ich nur die DemoTasks 
ausprobiert (LED Flashen, usw.) und diese funktionieren. So jetzt will 
ich aber den WebServer zum laufen bringen.

Und hier tun sich einige Fehler auf. Die Funktion 
xTaskCreate(vuIPTask,...) wird aufgerufen und bewirkt praktisch nichts. 
Ich habe in den Config Files die IP Adresse konfiguriert und auch eine 
FixeAdresse eingestellt aber ich kann das Board nicht ansprechen und das 
Board selbst meldet sich auch nicht. (Muss ich das erst 
hinzuprogrammieren? Also das er z.B. auf einen Ping reagiert?)

Überwachen tu ich die Leitung mit WireShark. So im Task erstellen geht 
er eigentlich alle Funktionen durch und geht auch z.B. in die Funktion 
hinein wo er den uIPTask als den jetzigen Task übernimmt aber es tut 
sich rein garnichts. Vorallem frage ich mich für was die Variablen 
pdFALSE und die Funktion traceTASK_CREATE( .. ) das sind. Da die 
Variabel nie einen Inhalt hat und auch irgendwie nirgends definiert wird 
und die Funktion zwar definiert ist aber nicht ausprogrammiert zu sein 
scheint. (??)

Anfangs habe ich gedacht es liegt möglicherweise an der Priorität aber 
das tut es nicht. Der LED Task so kommt es mir vor wird munter weiter 
ausgeführt, der uIP Task jedoch nicht. Die Prioritäten habe ich deswegen 
auch schon geändert und den uIP Task bevorzugt aber es funktioniert 
nicht.

Was mich noch nachdenklicher macht ist die Tatsache das wenn ich auf 
"run" im Debugger drücke und dannach gleich wieder auf "stop" das das 
Programm irgendwo steht. Entweder im TaskScheduler oder in der 
HardFaulException.

Ich denke ich mache grundsätzlich etwas falsch und ich hoffe hier kann 
mir jemand helfen. Muss ich irgendetwas spezielles konfigurieren bevor 
ich den Ethernet Port starte oder muss ich andere Funktionen ausführen?

Danke für die Hilfe!

Hochi.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Wenn die Kiste im HardfaultExeption steht, schmiert irgend ein Task 
schon mal ab ==> schwerwiegendes Problem,mußt du finden.
Die Tasks mußt du als endlos loop programmieren. Unmittelbar nach 
vTaskStartScheduler starten die Tasks,wenn manche nicht laufen 
sollen,mußt du sie am besten vor der endlos-loop suspendieren. Vorsicht 
auch mit xTaskResumeFromISR , da kann es schell ganz komische Probleme 
geben.
ja, generell ist das ganze nicht einfach zu debuggen, gut überlegen, 
wohin man breakpoints setzt.

viel Erfolg

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.