Forum: Mikrocontroller und Digitale Elektronik RTOS für STM32F4-Discovery


von Peter S. (psavr)


Lesenswert?

Hallo Leute

Wer verwendet welches RTOS für den STM32F4 (-Discovery), bzw.
was würdet ihr empfehlen? Insbesondere welche Erfahrungen wurden gemacht 
bezüglich:

 - Stabilität/Zuverlässigkeit/Bugs (auch für komplexe Projekte)
 - Footprint, Resourcbelegung
 - Effizients/Geschwindigkeit
 - Einfachheit/Übersichtlichkeit/Dokumentation
 - FPU-Unterstützung?

Für meine private Projekte soll vorzugsweise Gratis-SW verwendet werden, 
und für den GCC-ARM (Eclipse-IDE) compilierbar sein

Bisher habe ich etwas mit CoOS (CooCox) gespielt, es scheint mir aber 
nicht wirklich ausgereift. Ich vermute Probleme mit der Stackverwaltung 
(besonders wenn man etwas mehr Stack pro Task verwenden möchte >2kByte, 
zudem wird es nicht weitergepflegt, bzw. es gab kein Update mehr seit 
Juni 2012.

Zur Zeit habe ich ChibiOS und FreeRtos im Visier. Wer kann darüber 
(oder andere Alternativen) etwas Berichten?

von Bernhard _. (Firma: dl1bg) (bernhard_)


Lesenswert?

Ich verwende seit zwei Jahren eCos auf STM32F103 und seit kurzem auf dem 
STM32F407. Das Betriebssystem ist lange gewachsen, extrem konfigurierbar 
und unterstützt sehr viele Plattformen.
Ich bin schwer begeistert davon und gebe eCos in deinen KPIs gute Noten, 
aber der Einstieg ist recht komplex.

von hans (Gast)


Lesenswert?

Ich verwende FreeRtos auf dem stm32F407 in Coocox. Das System ist sehr 
einfach einzubinden und gut dokumentiert. Es gibt auch ein Buch von 
Freertos wo alles genau erklärt wird.

von hans (Gast)


Lesenswert?

Hier der Link:

http://www.freertos.org/

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

NuttX unterstützt das Discovery schon über ein Jahr :-)

-> www.nuttx.org

von Mehmet K. (mkmk)


Lesenswert?

Ich verwende scmRtos
- sehr einfach gehalten
- kann ohne Klimmzüge mit C++ benutzt werden

von Gerd E. (robberknight)


Lesenswert?

Ich verwende auch das NuttX mit dem STM32F4.

Den größten Vorteil sehe ich darin, daß die Schnittstelle zwischen RTOS 
und Deinem Programm weitgehend POSIX-kompatibel ist. Wenn Du also schon 
etwas Erfahrung mit der Programmierung unter Linux (oder anderen Unixen) 
hast, geht der Einstieg sehr einfach von der Hand weil Du die ganzen 
Schnittstellen und deren Verhalten/Besonderheiten schon kennst. Auch 
lassen sich Linux-Programme so leichter rüberportieren. Natürlich gibts 
auch ne Shell auf dem Teil, das finde ich fürs Debuggen ziemlich 
praktisch.

von Martin K. (martinko)


Lesenswert?

Hi,

Ich verwendet zur Zeit das CMSIS-RTOS RTX

Gruß Martin

von Peter S. (psavr)


Lesenswert?

Danke für die Feedbacks, man hat die Qual der Wahl!

RTX ist vermutlich nicht frei, bzw erhält man nur mit dem Kauf der 
Keil IDE.

eCOS klingt interresant, es gibt sogar einen Port für den Discovery! 
Aber nur mal zum angucken ist der Aufwand schon recht gross, habe keine 
Lust mir erst einen CVS-Client einzurichten nur um mir die 
Discovery-Demo runterzuladen. Zudem ist das arpeiten mit Cygwin immer 
recht buckelig, ich möchte den native Win32 ARM-GCC verwenden, mit 
Eclipse oder CooCoox als IDE.
=> Hätte jemand ein kleines Demo-Projekt als Zip-File bereit?

NuttX ist auch schon recht umfangreich/komplex, bietet aber vieles was 
mir sehr willkommen ist.
-TCP/IP-Stack
-Filesystem
-Shell
-Posix (vxWorks/Linux-ähnlich)
=> Hätte jemand ein kleines Demo-Projekt als Zip-File bereit?

von Manfred B. (manib)


Lesenswert?

Hi,

Uwe hat auf seiner Seite gerade ein Beispielprojekt hochgeladen
73-FreeRTOS-Library (STM32F4)

http://mikrocontroller.bplaced.net/wordpress/?page_id=3396

von Bernhard _. (Firma: dl1bg) (bernhard_)


Angehängte Dateien:

Lesenswert?

Hi,

hier ein für das STM32F4 gebautes eCos, das du in ein beliebiges Projekt 
einbinden kannst.

Kopiere in deine "main.cpp" oder .c einfach

#include <stdlib.h>
#include <cyg/infra/diag.h>

#include "DSPController/CDSPController.h"
#include "Common/SystemMonitor/CSystemMonitor.h"
#include "WebServer/CWebServer.h"

extern "C" void cyg_user_start(void);

CDSPController* pub_pcl_DSP;
CWebServer* pub_pcl_Web;

void cyg_user_start()
{
  diag_printf("cyg_user_start()\n");

  pub_pcl_Web = new CWebServer;
}

und starte wie ich in CWebServer deine threads.

Gruß
Bernhard

von Peter S. (psavr)


Lesenswert?

Super, schon mal vielen Dank... Wird mich wohl eine Weile beschäftigen!

von Uwe Bonnes (Gast)


Lesenswert?

Falls Dir kooperatives Multitasking langt, dann schau die auch mal 
Ethernut an.

von Juri (Gast)


Lesenswert?

Hallo alle zusammen!
Ich versuche momentan eCos auf dem stm32f4_discovery zum Laufen zu 
bringen. Das setup und das flashen funktioniert so weit so gut. 
Allerdings habe ich einige Probleme mit dem HAL. Die Ansteuerung der 
LEDs zum Beispiel funktioniert bei mir überhaupt nicht, auch nicht mit 
dem setup von Bernhard. Selbst wenn ich die clocks manuell konfiguriere 
tut sich da nix. Kann mir da eventuell jemand nen Tipp geben was man da 
machen muss?
Ansonsten müsste ich weiterhin auf asm-Code zurückgreifen.

Gruß Juri

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.