Ich evaluiere Betriebssysteme für ein Internet of Things-Projekt und weiß nicht, wie ich am besten vorgehen soll.
Ich verwende eine TM4C123GH6PM-MCU mit 32 KB RAM und einem CC2520 802.15.4-Transceiver. Es wäre großartig, wenn das System bereits Treiber für diese bereitstellen würde.
Das System führt eine (interaktive) Aufgabe aus, die einen Punktmatrix-Bildschirm zeichnet und auf Benutzereingaben reagiert. Es speichert Konfigurations- und Anwendungsdaten auf SPI Flash. Es wird ein Netz von 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 fällt mir ein) und OtA-Firmware-Updates in einem Klatsch zu verteilen. wie Mode. Währenddessen wird auch eine eher speicherhungrige Anwendung ausgeführt.
Bisher habe ich mich mit diesen Systemen befasst:
Aufstand :
Profis
- gute Hardware-Abstraktion
- kleiner Fußabdruck
- sehr aktive und hilfreiche Community
- vollständiger 802.15.4 / 6LoWPAN-Stapel
Nachteile
- instabil, immer noch grundlegend verändert
- enthält noch Rennbedingungen / Stürze
- Keine Dateisystemunterstützung
- wenige Netzwerkprotokolle
Contiki :
Profis
- 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 abgestanden
- 'gewachsene' Codebasis, viel Bitfäule
- schlechte Qualität tiva c Port
- wenig Unterstützung für moderne Plattformen
- Eine nicht vorbeugende Planung kann Probleme mit der Anwendung verursachen
FreeRTOS :
Profis
- wenig zusätzliche Komplexität
- einfach zu bedienender, zuverlässiger Scheduler
- ausgereiftes Projekt, in vielen Produkten verwendet
- viele Häfen
Nachteile
- kein Dateisystem
- Keine Hardwareabstraktion für Treiber / keine Hardwaretreiber
- kein Netzwerkstapel
- etwas hohe Auslastung des dynamischen Speichers
NuttX :
Profis
- Sehr funktionsreich, fühlt sich fast wie Linux an und ist dennoch 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
Mein Fazit wäre, die guten Teile von Contiki (den Netstack, das Dateisystem) zu nehmen und sie auf FreeRTOS zu portieren. Aber mit einer solchen Gabel fühle ich mich nicht ganz wohl. Ich würde wahrscheinlich Fehler hinzufügen und keine Upstream-Fixes zurückportieren können. Außerdem muss ich noch meine eigene Hardware-Abstraktion erfinden, um die MCU in Zukunft wechseln zu können. Also würde ich mein eigenes Betriebssystem für etwas haben, das wie ein Problem erscheint, das auch viele andere Leute haben sollten - hat das noch niemand gemacht? (Ich meine, ich habe etwas gefunden, aber die Idee , das gesamte Contiki-OS als FreeRTOS-Aufgabe auszuführen, macht mich unangenehm)
Fehlt mir etwas? Vielleicht lohnt sich der Schmerz und ich sollte versuchen, Contiki stattdessen auf meiner Hardware in einen funktionsfähigen Zustand zu versetzen? Oder gibt es ein anderes System, das ich vermisst 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 vorhandenen Protokollen aufbauen zu können / mit anderen Systemen (z. B. Linux) kompatibel zu sein, wäre ich bereit, den zusätzlichen Aufwand zu übernehmen.
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
Das ist nur ... wow!