Forum: Compiler & IDEs NEC Board - FreeRTOS


von John (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ich habe auf einem NEC Board das FreeRTOS importiert.
Eine Task läuft ohne Probleme. Nun habe ich aber zwei Tasks die hin und 
her springen sollen. Was muss dafür im Code abändern?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Was du tun musst, steht ganz oben in deinem Code, sogar noch im 
Kommentar in Menschensprache :)

> ... take a look at the FreeRTOS eBook ...

Multitasking ist einer der Hauptgründe, warum Leute sich FreeRTOS antun, 
dazu sollte man innerhalb von Minuten was finden.

von John (Gast)


Lesenswert?

Danke! Ich suche so eine Deutsche Anleitung mit ein paar Beispielen.

von John (Gast)


Lesenswert?

Wenn ich das Programm so teste, dann wird zwar die Task1 reingesprungen 
aber im Hauptprogramm wird nicht in die while(1) Schleife 
reingesprungen.
Eigentlich müsste dies doch parallel laufen oder?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Im Hauptprogramm selber steht sogar wie du den zweiten Task anbekommst, 
der läuft sogar schon!

von John (Gast)


Lesenswert?

Achso mit "vStartSemaphoreTasks(main_PRIORITY1);" wird der andere Task 
aktiviert. Ja und warum wird nicht parallel im Hauptprogramm die 
while(1) Schleife ausgeführt?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Achso mit "vStartSemaphoreTasks(main_PRIORITY1);" wird der andere Task
>aktiviert. Ja und warum wird nicht parallel im Hauptprogramm die
>while(1) Schleife ausgeführt?
Nein wirds nicht. Schau dir die main() doch mal an, da werden zwei Tasks 
angemacht.

Und les dich mal ein bisschen über Multitasking ein, du hast null 
Ahnung.

von Susanne (Gast)


Lesenswert?

Wenn du parallele Verarbeitung haben willst brauchst du ein FPGA.

von John (Gast)


Lesenswert?

Was ich eigentlich möchte ist, dass die zwei Task unabhängig voneinander 
laufen sowie die while(1) Schleife im Hauptprogramm. Das müsste doch 
machbar sein. Ich schonmal unter einem Embedded PC mit VxWorks 
gearbeitet. Da konnte man Tasks erzeugen und diese liefen auch parallel.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

John schrieb:
> Achso mit "vStartSemaphoreTasks(main_PRIORITY1);"

die Funktion betrifft einen Beispieltask in den FreeRTOS Demoprogrammen.

>wird der andere Task aktiviert.

Was gemacht wird, steht recht ausführlich im Kopf der Datei semtest.c 
(demos/common). Es werden sogar zwei Tasks angelegt. Aber das hilft 
wenig für die eigene Anwendung, es sei den man schreibt an der 
Beispieldatei herum.

> Ja und warum wird nicht parallel im Hauptprogramm die
> while(1) Schleife ausgeführt?

Der Scheduler ist das "Hauptprogramm". Wenn man Abläufe quasi-parallel 
haben möchte, legt man dafür tasks an. Im einfachsten  Fall (=meist 
nicht die beste Lösung) Task mit gleichen Prioritäten, damit der 
Scheduler sich alleine um die Rechenzeitzuweisung kümmert.


Ohne bisher mit NEC-Controllern gearbeitet zu haben, dafür ein wenig mir 
FreeRTOS, etwas zum Ausprobieren:
(1) entfernen der Aufrufe von vStartSemaphoreTasks, 
vStartBlockingQueueTasks und vStartSemaphoreTasks, es sei denn man will 
die Demo-Tasks aus den FreeRTOS-Beispielen in der eigenen Anwendung
(2) Bei xTaskCreate für vTask1 und vTask2 gleiche Werte für 
Prioritätsparameter verwenden z.B. indirekt über Makro main_PRIORITY1

von John (Gast)


Lesenswert?

Weiss vielleicht einer ob es ein deutsches Skript zum FREERTOS gibt?

von Mark B. (markbrandis)


Lesenswert?

John will ein deutsches Skript? ;)

von Karl H. (kbuchegg)


Lesenswert?

John schrieb:
> Weiss vielleicht einer ob es ein deutsches Skript zum FREERTOS gibt?

Lies die englische Doku.
Und wenn es am Anfang mit dem Wörterbuch daneben ist. Keine Angst, das 
ist kein Shakespear Englisch. Das lässt sich ziemlich leicht lesen und 
das meiste, was du am Anfang nicht verstehst erschliesst sich aus dem 
Zusammenhang bzw. beim Studium der Beispiele. Das wäre bei einem 
deutschen Skript auch nicht anders und die Fachbegriffe sind sowieso 
alle Englisch.

Und ausserdem kann es nicht schaden, sein Englisch zumindest soweit 
aufzupolieren um technische Doku im Bereich Informatik lesen zu können. 
Man weiß nie, wozu man das noch brauchen kann.

von John (Gast)


Lesenswert?

Danke für eure Hilfe.

Hat von euch mal einer mit QUEUE's von freeRTOS gearbeitet?

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

John schrieb:
> Hat von euch mal einer mit QUEUE's von freeRTOS gearbeitet?
Sicher noch einige ausser mir.

Aber die Fragerei bringt in der Art nichts. Erstmal die FreeRTOS.org 
Seite ansufen, dort ist die Dokumentation online verfügbar. Für Queues 
siehe u.a. Gettings-Started/inter-task-Comm. und API reference/Queues. 
Ansonsten Anleitungen im PDF-Format kaufen. Ja, das ist alles in 
englisch. Nein, ich kenne keine deutsche Übersetzung (man kann es mit 
einem online-Übersetzer versuchen). In der Dokumentation sind 
Codeausschnitte und in den Demoprojekten im FreeRTOS-Paket gibt es 
diverse Beispiele.

von Mark B. (markbrandis)


Lesenswert?

Karl heinz Buchegger schrieb:
> Und ausserdem kann es nicht schaden, sein Englisch zumindest soweit
> aufzupolieren um technische Doku im Bereich Informatik lesen zu können.
> Man weiß nie, wozu man das noch brauchen kann.

Och, zum Beispiel - für jeden einzelnen verdammten Tag im Berufsleben? 
;-)

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.