RTOS für Cortex M4 mit 802.15.4/6LoWPAN-Stack

Ich evaluiere Betriebssysteme für die Verwendung in einem Internet der Dinge-Projekt und weiß nicht, wie ich am besten vorgehen soll.

Ich verwende eine TM4C123GH6PM-MCU mit 32k RAM und einem CC2520 802.15.4-Transceiver. Es wäre großartig, wenn das System bereits Treiber dafür bereitstellen würde.

Das System führt eine (interaktive) Aufgabe aus, die einen Punktmatrixbildschirm zeichnet und auf Benutzereingaben reagiert. Es speichert Konfigurations- und Anwendungsdaten auf Spi-Flash. Es wird ein Netz aus mehreren Modulen (basierend auf 802.15.4) geben, um Daten zwischen den Modulen zu synchronisieren, Sensordaten aus den Modulen zu extrahieren und sie an ein Gateway weiterzuleiten (rpl kommt mir in den Sinn) und auch OtA-Firmware-Updates im Klatsch zu verteilen. wie Mode. Und das alles, während auch eine ziemlich speicherhungrige Anwendung ausgeführt wird.

Bisher habe ich mich mit diesen Systemen beschäftigt:


AUFSTAND :

Vorteile

  • gute Hardware-Abstraktion
  • kleiner Fußabdruck
  • sehr aktive und hilfsbereite Community
  • voller 802.15.4/6LoWPAN-Stack

Nachteile

  • instabil, befindet sich noch im grundlegenden Wandel
  • enthält noch Rennbedingungen/Abstürze
  • keine Dateisystemunterstützung
  • wenige Netzwerkprotokolle

Kontiki :

Vorteile

  • ausgereiftes System, das in kommerziellen Produkten verwendet wird
  • Vollständiger 802.15.4/6LoWPAN-Stack mit vielen nützlichen Protokollen
  • Dateisystemunterstützung
  • cc2520-Unterstützung

Nachteile

  • Entwicklung ist ins Stocken geraten
  • 'gewachsene' Codebasis, viel Bitfäule
  • Tiva-C-Port von schlechter Qualität
  • wenig Unterstützung für moderne Plattformen
  • Eine nicht präemptive Planung kann Probleme mit der Anwendung verursachen

FreeRTOS :

Vorteile

  • wenig zusätzlicher Aufwand
  • Einfach zu bedienender, zuverlässiger Scheduler
  • ausgereiftes Projekt, das in vielen Produkten verwendet wird
  • viele Häfen

Nachteile

  • kein Dateisystem
  • keine Hardware-Abstraktion für Treiber/keine Hardware-Treiber
  • kein Netzwerkstack
  • etwas hoher Verbrauch an dynamischem Speicher

NuttX :

Vorteile

  • sehr funktionsreich, fühlt sich fast wie Linux an, ist aber immer noch klein
  • Dateisystemunterstützung
  • gute Hardware-Abstraktion
  • Tiva C-Port, viele andere Ports

Nachteile

  • etwas komplex
  • keine Unterstützung für 802.15.4/6LoWPAN, nur 'klassischer' Netstack

Meine Schlussfolgerung wäre, die guten Teile von Contiki (den Netstack, das Dateisystem) zu nehmen und sie auf FreeRTOS zu portieren. Aber ich fühle mich mit so einer Gabel nicht ganz wohl. Ich würde wahrscheinlich Fehler hinzufügen und wäre nicht in der Lage, Upstream-Fixes zurückzuportieren, außerdem muss ich noch meine eigene Hardware-Abstraktion erfinden, um die MCU in Zukunft wechseln zu können. Also würde ich mit meinem eigenen Betriebssystem für etwas enden, das wie ein Problem aussieht, das viele andere Leute auch haben sollten - hat das nicht schon einmal jemand gemacht? (Ich meine, ich habe etwas gefunden, aber die Idee , das gesamte Contiki-OS als FreeRTOS-Aufgabe auszuführen, ist mir unangenehm.)

Gibt es etwas, das ich vermisse? Vielleicht wäre es die Mühe wert und ich sollte stattdessen versuchen, Contiki auf meiner Hardware in einen funktionsfähigen Zustand zu bringen? Oder gibt es ein anderes System, das ich übersehen habe und das meine Probleme lösen würde?

Ich bin mir auch nicht sicher, ob ich 6lowPan überhaupt brauche, aber wenn das bedeutet, auf bestehenden Protokollen aufbauen zu können/mit anderen Systemen (zB Linux) kompatibel zu sein, wäre ich bereit, den zusätzlichen Overhead in Kauf zu nehmen.

running the entire contiki-os as a FreeRTOS task makes me uncomfortableDas ist einfach ... wow! daran hätte ich nie gedacht..

Antworten (3)

Wenn Sie nicht mit diesem bestimmten Prozessor verheiratet sind (oder versiert genug sind, den Code trotzdem zu kopieren/einzufügen), verwende ich häufig Freescale-MCUs mit CodeWarrior und Processor Expert. PEX enthält eine Reihe von Komponenten, darunter FreeRTOS, MQX, FAT usw. Zusätzliche Komponenten können heruntergeladen werden und letztendlich ist es nur ein GUI-basierter Codegenerator, sodass Sie, wie vorgeschlagen, den resultierenden C-Code kopieren und einfügen können in Ihr Projekt.

Bearbeiten:

-MQX enthält IP-Stack

-FNET

Großes vorkompiliertes Paket mit vielen nützlichen Komponenten: http://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/

Ihnen fehlt mbed OS :Geben Sie hier die Bildbeschreibung ein

Vorteile

  • direkt unterstützt (gefördert) durch den Kerndesigner - ARM Ltd.

Nachteile

  • seine erste stabile Veröffentlichung wird erst im November 15 erwartet (geplant) :-]

Wenn dies für die kommerzielle Nutzung ist, empfehle ich Ihnen dringend, sich die nicht-freien Optionen anzusehen, Support ist alles, wenn es sich um ein persönliches Projekt handelt, kann ich es verstehen.

Ja, es sind Kosten damit verbunden, aber bei einigen RTOS-Entwicklern ist das gar nicht so groß, sie verdienen wirklich Geld mit kundenspezifischer Entwicklung und Lizenzen können kostenlos sein, bis Sie einen Verkauf tätigen. Unten ist ein Link zu einem Artikel, der einige bezahlte Konkurrenten vergleicht:

Vergleich von Mikrocontroller-Echtzeitbetriebssystemen

Ich bin Projektmanager und wir haben von ST angebotenen Treibern zu Unison gewechselt. IIRC, die Lizenzierung war überraschend klein, und wir bekamen eine "vollständige Testversion", bis wir überzeugt waren, aber die konsequente direkte Unterstützung war das, was uns über den Rand getrieben hat und was wirklich dazu beigetragen hat, unsere Entwicklung zu beschleunigen. Ich denke, sie haben bereits Unterstützung für verschiedene TI-Wireless-Chips, bei CC2520 bin ich mir nicht sicher.

Der Typ, der die meisten Verkäufe macht, ist sehr persönlich und listet aus zwei Gründen keine Preise auf, wurde mir gesagt, 1) weil sie hören wollen, was Sie brauchen, sie wirklich Stammkunden und Mundpropaganda wollen, und 2) Wettbewerb.

FYI, die Website von Unison ist wirklich schlecht.