Forum: Mikrocontroller und Digitale Elektronik RTOS-Empfehlung gesucht


von Frank K. (fchk)


Lesenswert?

Hallo!

Ich suche eine Empfehlung für ein RTOS für den kommerziellen Einsatz

Situation: Bei meinem Arbytegeber werden aktuell TI TIVA TM4C Controller 
zusammen mit dem TI RTOS und dem Code Composer Studio eingesetzt. 
Funktioniert soweit, aber das TI RTOS ist nicht wirklich bugfrei, die 
TIVA-Prozessoren werden irgendwie nur stiefmütterlich unterstützt, und 
eine Weiterentwicklung und ein Wachstumspfad (z.B. in Richtung Cortex M7 
oder so) ist nicht in Sicht. Daher suche ich jetzt eine Alternative.

Anforderungen:

• Komponenten
  o RTOS-Kernel
  o TCP-IP Stack mit Basis-Protokollen (DNS, DHCP, TFTP, SNMP, …)
  o USB-Stack mit Support für minimal HID, CDC-ACM, CDC-ECM/EEP, Mass 
Storage als Device
  o gerne Support für CAN-High-Level Protokolle wie CANOpen
  o Hardware-Abstraktionsschicht
• Herstellerübergreifend, möglichst architekturübergreifend
• Support für
  o TI TIVA TM4C
  o Microchip PIC32
  o gerne weitere Cortex M/Cortex R Architekturen
• Kommerzieller Support verfügbar. Meine Arbeitszeit ist teuer, und wenn 
es da Probleme mit dem Produkt gibt, will ich die gelöst haben.
• Lizenz geeignet für den kommerziellen Einsatz (BSD, MIT, 
proprietär,...), kein GPL
• stabiler Hersteller, den es auch noch in 5 oder 10 Jahren gibt
• kann ruhig Geld kosten

vxworks hatte ich schon mal in den Fingern gehabt, aber das ist jetzt 20 
Jahre her.
Mit ThreadX/NetX habe ich auch schon gearbeitet, aber das ist ja jetzt 
vermicrosoftet und heißt nun AzureRTOS - keine Ahnung, was ich davon 
halten soll und welche Zukunfsaussichten das Zeugs jetzt hat.
EmbOS von Segger klingt erstmal interessant, ist mir aber ansonsten 
unbekannt.

Mein Arbytegeber ist im allgemeinen industriellen Umfeld unterwegs. 
Sachen, die speziell für Automotive oder Luftfahrt zugeschnitten sind, 
passen für uns nicht. Irgendwelche SIL oder ISO26262 Sachen brauchen wir 
auch nicht.

Anregungen?

fchk

von 123 (Gast)


Lesenswert?

FreeRTOS -> gehört jetzt glaube ich zu Amazon, gab meines wissens auch 
komerzielle support/versio

NucleusPlus -> Mentor graphics, OS war eigentlich grauchbar, Vom 
Functkions umfang vergleichbar mit ThreadX. nicht ganz preiswert. für 
das was du alles haben wilst, wird das sicher ganz schnell 6 stellig. 
USB Code (Class / controller) waren so ne sache, Waren damals nicht 
immer bug frei. der Code  waren mit irgend einem Code generator 
generiert. In dem C code Fehler suchen war ein echter graus, ... 5 fach 
erweiterte Arrays of function pointers, ... (war vermutlich OO code der 
als C generiert wurde)

Micrium OS ist weniger complex wie ThreadX / NucleusPlus (keine 
aufteilung in Hiser und Liser) eher vergleichbar mit FreeRTOS

RTXC Quadros (nur mal geschult worden nie eingesetzt) eher unbekant.

von Mike (Gast)


Lesenswert?

Wenn es gratis sein soll und Du viel Zeit+Lust auf patchwork-debugging 
hast:
FreeRTOS +  LwIP + FatFS

Zahlbar, performant und mit gutem Support:
ChibOS http://www.chibios.org/dokuwiki/doku.php
Für wenig Geld (bzw. beim Kauf einer Lizensierung) wird Giovanni rasch 
eine Portierung/BSP auf deine CPU erzeugen.

TCP/IP Stack:
https://www.oryx-embedded.com/products/CycloneTCP

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Schau dir mal MDK-ARM Professional an. CMSIS-RTOS (RTX5), Middleware mit 
FlashFS, Ethernet, USB. Unterstützung / Visualisierung im UV Debugger.
Vorteil: Alles aus einem Guss, einfachere Integration und Zusammenspiel.
Und es sollte alle deine Anforderungen erfüllen :-)

https://www2.keil.com/mdk5/editions/pro

: Bearbeitet durch User
von John Doe (Gast)


Lesenswert?

Frank K. schrieb:
> • stabiler Hersteller, den es auch noch in 5 oder 10 Jahren gibt
>
> Anregungen?

Damit bleibt kein RTOS mehr übrig.
Dein Problem ist gelöst.

von pc (Gast)


Lesenswert?

Seggers embOS kann ich nur empfehlen. Bisher keine Probleme gehabt und 
der Support meldet sich i.d.R. noch am selben Tag.

von asaa (Gast)


Lesenswert?

NuttX?

von Johannes S. (Gast)


Lesenswert?

Schade, hätte ja gerne Mbed empfohlen, aber ARM und TI scheinen nicht 
die besten Freunde zu sein, da gibt es so gut wie nix. Und PIC32 sind 
auch nicht von ARM. Ein OS das die alle Unterstützt wird teuer sein und 
ich gehe davon aus das man auch den Herstellersupport öfter braucht. 
Wenn soviele grundverschiedene Targets gleichermassen incl. High Level 
Funktionalität zuverlässig unterstützt werden sollen, dann ist das ein 
irrer Testaufwand.

Das FreeRTOS ist sicher ein gutes RTOS, aber der freie Kernel hat 
erstmal keine Unterstützung für Prozessorspezifische Peripherie. Da muss 
man sich selber um Mutex & Co kümmern, und das ist sicher nicht immer 
trivial. Zusätzliche Bibliotheken waren bei FreeRTOS ja auch Kaufware.

von 900ss (900ss)


Lesenswert?

Frank K. schrieb:
> vxworks hatte ich schon mal in den Fingern gehabt,

Das hätte ich jetzt genannt. Erfüllt das was du suchst. Was spricht für 
dich dagegen es wieder zu nutzen? Der Preis?

von Frank K. (fchk)


Lesenswert?

900ss D. schrieb:
> Frank K. schrieb:
>> vxworks hatte ich schon mal in den Fingern gehabt,
>
> Das hätte ich jetzt genannt. Erfüllt das was du suchst. Was spricht für
> dich dagegen es wieder zu nutzen? Der Preis?

Ich habe mir die Liste der Board Support Packages angeschaut und recht 
wenig Cortex M3/M4/M7 gefunden. Insbesondere kein TI TIVA.

fchk

von Mike (Gast)


Lesenswert?

> Frank K. schrieb:
>> vxworks hatte ich schon mal in den Fingern gehabt,
>
> Das hätte ich jetzt genannt. Erfüllt das was du suchst. Was spricht für
> dich dagegen es wieder zu nutzen? Der Preis?

Der Preis ist definitiv ätzend. Viel Geld für (*)Null Support und 
Unterstützung.

von 900ss (900ss)


Lesenswert?

Mike schrieb:
> Viel Geld für (*)Null Support und Unterstützung.

Selten soviel Blödsinn gelesen. Kann aus eigener Erfahrung sagen, dass 
Support und Unterstützung recht gut sind wenn man entsprechend zahlt 
natürlich.
Aber das wird OT.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Zu deinem TI Prozessor kann ich jetzt leider nix sagen.

Ich kann aber für die anderen beiden Serien mich den Vorrednern nur 
anschließen und MicriumOS sowie FreeRTOS empfehlen.
MicriumOS hat ne gute Doku, da fuchst man sich schnell ein.
Nen TCP Stack gibts auch, aber dann doch lieber lwip.

Die Aufkauferei hat auch Micrium nicht verschont, die wurden von 
SiliconLabs geschluckt.

von 900ss (900ss)


Lesenswert?

Frank K. schrieb:
> Ich habe mir die Liste der Board Support Packages angeschaut und recht
> wenig Cortex M3/M4/M7 gefunden. Insbesondere kein TI TIVA.

TI bietet scheinbar ein BSP an.

http://www.ti.com/tool/WIND-3P-VXWORKS-LINUX-OS#descriptionArea

von Frank K. (fchk)


Lesenswert?

900ss D. schrieb:
> Frank K. schrieb:
>> Ich habe mir die Liste der Board Support Packages angeschaut und recht
>> wenig Cortex M3/M4/M7 gefunden. Insbesondere kein TI TIVA.
>
> TI bietet scheinbar ein BSP an.
>
> http://www.ti.com/tool/WIND-3P-VXWORKS-LINUX-OS#descriptionArea

Das ist für die SItaras (Cortex A) und für die Windriver Linux-Variante, 
nicht fürs RTOS und auch nicht für die TIVA Cortex M.

fchk

von Lothar (Gast)


Lesenswert?

Frank K. schrieb:
> Das ist für die Sitaras (Cortex A) ... nicht fürs RTOS

Für Sitara AM5728 gibt es auch RISC OS und ein Eval-Board damit:

http://www.ti.com/tool/ELESAR-3P-SITARA-SOMS

https://www.riscosopen.org/content/downloads/titanium

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

pc schrieb:
> Seggers embOS kann ich nur empfehlen. Bisher keine Probleme gehabt
> und
> der Support meldet sich i.d.R. noch am selben Tag.

Das hätte ich jetzt auch empfohlen ;-). Also eigentlich versuchen wir 
sogar in den ersten 15 Minuten zu antworten und sei es nur ein "Danke 
für die Anfrage, müssen wir uns kurz anschauen und melden uns gleich 
wieder.".

Frank K. schrieb:
> Hallo!
>
> Ich suche eine Empfehlung für ein RTOS für den kommerziellen Einsatz

Da können wir dir weiterhelfen. Auf den ersten Blick würde ich sagen wir 
haben alles bis auf CAN da:
https://www.segger.com/products/rtos-embedded-software/
https://www.segger.com/products/rtos/embos/

Du könntest dir einfach mal die embOS Cortex-M ES Free Version und das 
Embedded Studio downloaden (oder alternativ das embOS Cortex-M für einen 
anderen Compiler/IDE) und damit rumspielen.
https://www.segger.com/products/rtos/embos/supported-cores-compiler/arm/cortex-m/embos-cortex-m-embedded-studio/
https://www.segger.com/downloads/embos/embOS_CortexM_EmbeddedStudio_Trial
https://www.segger.com/products/development-tools/embedded-studio/

Oder erstmal einen Blick in das embOS Manual werfen: 
https://www.segger.com/downloads/embos/UM01001

Du kannst mich natürlich auch gerne direkt per Email oder Telefon 
erreichen.
Telefonnummer steht unten auf https://www.segger.com/. Entweder hier ein 
Ticket aufmachen (https://www.segger.com/support/technical-support/) 
oder die embOS Support Emailadresse benutzen. Diese findest du im embOS 
Manual im Kapitel Support. Ist nur wahrscheinlich besser sie hier nicht 
hinzuschreiben wegen Spam.

von Adib (Gast)


Lesenswert?

also ich schaue mir gerade Zephyr näher an.

Das kommt aus dem Linux-Umfeld. https://www.zephyrproject.org/
Wer mit der Kommandozeile vertraut ist, wird auch zurechtkommen.
Das basiert auf einem Windriver OSKern.
Gut finde ich die Treiberintegration. TCP, USB, BLE, Sensoren, Flash, 
Filesysteme alles drin.

Aktuell stabilisieren sich auch die Windows-Umgebungen dazu.
Sie benutzen ARM GCC. Inwiefern auch der Keil Compiler geht, weiss ich 
nicht.

HTH, Adib.
--

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Frank K. schrieb:
> • Kommerzieller Support verfügbar. Meine Arbeitszeit ist teuer, und wenn
> es da Probleme mit dem Produkt gibt, will ich die gelöst haben.

Ich kenne sowohl von einem früheren Arbeitgeber als auch von etlichen 
meiner Kunden die massiven Probleme mit einigen 
Betriebssystemherstellern, die vorrangig unter dem Gesichtspunkt des 
kommerziellen Supports ausgewählt wurden. Der Vertrieb erzählt dem 
Kunden, dass es ja überhaupt kein Problem wäre, nur ein vorkompiliertes 
Betriebssystem auszuliefern, denn schließlich gäbe es ja den 
kommerziellen Support, über den man als Kunde ja beliebige Wünsche 
einkippen kann. Die Praxis sieht leider deutlich anders aus. Schon 
kleinste Anpassungen sind nicht in den schon horrenden Supportkosten 
enthalten, sondern kosten natürlich extra. Die Bibliotheken werden 
natürlich ohne Debug-Symbole ausgeliefert, damit der Kunde kaum eine 
Chance hat, Fehler zu suchen bzw. zu finden. Bei nachgewiesenen Fehlern 
heißt es dann, man hätte die Software auf einer nicht durch den 
OS-Hersteller zertifizierten Hardware eingesetzt. Bei nachgewiesenen 
Fehlern im Netzwerkstack werden Support und Fehlerkorrektur mit der 
Begründung abgelehnt, es handele sich auf Seiten des Herstellers um 
zugekaufte Module, die selbstverständlich vom Support ausgenommen seien. 
Bei Änderungswünschen heißt es, dass diese zu einer Aufsplitterung der 
Quellcodebasis führen.

Die o.a. Probleme kenne ich sowohl von ENEA bzw. OSE (um 2002) und von 
Windriver bezüglich VxWorks (2013). ENEA wurde nach einer länglichen 
gerichtlichen Auseinandersetzung dann irgendwann verurteilt, den 
Quellcode zu liefern, damit der Kunde die Fehler selbst beheben konnte; 
allerdings war der Quellcode nicht vollständig, sondern sie lieferten 
dann einfach nur winzige Codefragmente aus, in denen die konkret 
reklamierten Fehler waren.

Ein anderer Kunde hatte für sehr viel Geld die Anpassung von VxWorks auf 
den damals neuen Prozessortyp im 64 Bit-Modus beauftragt. Das lief auch 
soweit ganz gut, so dass die Lieferung auch abgenommen wurde. Später 
stellte sich dann aber heraus, dass wichtige APIs keine 
64-Bit-tauglichen Datentypen unterstützten. Windriver verlangte einen 
siebenstelligen Betrag(!) für die Erweiterung.

Auf eigener Erfahrung kann ich Nucleus PLUS empfehlen. Das gesamte 
Betriebssystem wird als Quelltext geliefert. Die Anpassungen der 
Makefiles an die eigene Buildumgebung war auch sehr einfach. Damals(tm), 
d.h. 1998 oder 1999, war jedoch der TCP/IP-Stack sehr fehlerhaft. Der 
damalige Hersteller Accelerated Technology (mittlerweile Mentor/Siemens) 
hatte einfach den damals eigentlich sehr guten kostenlosen 
NCSA-Telnet-Stack genommen und rudimentär angepasst. Leider 
berücksichtigten sie dabei nicht, dass auf damaligen ARM-Prozessoren 
Langwortzugriffe nur auf durch vier teilbaren Adressen zulässig waren. 
Da ein Ethernet-Header aber 14 Byte lang ist, waren alle Zugriffe auf 
IP- und TCP-Ebene falsch ausgerichtet. Und die Puffer für Netzwerkpakete 
wurden auch einfach mittels der normalen dynamischen Speicherverwaltung 
(NU_Allocate_Memory oder so) angefordert, was in Windeseile zu einer 
Fragementierung des spärlichen RAMs führte.

Auch hier folgte von Seiten ATI die Argumentation, der Stack sei ja 
nicht selbst entwickelt worden und somit vom Support ausgeschlossen. Und 
wieso verlangten sie dann rund $20.000 für den eigentlich freien Stack? 
Letztendlich lief es darauf hinaus, dass ich eine eigene 
Speicherverwaltung für Netzwerkpuffer schreiben und die Datenstrukturen 
für TCP, UDP und IP so umbauen musste, dass keine Alignmentprobleme mehr 
auftraten. Bei OOO-TCP-Paketen kam das ganze aber aus dem Tritt, da die 
entsprechende Funktionalität zum Umhängen von Pufferketten komplett 
fehlte.

Einige Monate später gab es dann von ATI ein umfangreiches Update mit 
einerm komplett überarbeiteten Netzwerkstack. Die o.a. Probleme waren 
darin eigentlich behoben, aber leider war die Pufferverwaltung extrem 
fehlerhaft. Deswegen blieben wir bei der von mir überarbeiteten Version.

Ein generelles Problem solcher Betriebssysteme mit irgendwie 
rangeflanschtem Netzwerkstack besteht aber oft darin, dass man nicht 
veranlassen kann, dass beim Beenden einer/s Task/Prozess/Thread die 
offenen Netzwerkverbindungen automatisch geschlossen werden. Daher muss 
man ggf. noch einen Wrapper bauen, der den Überblick behält und nur 
lokal genutzte Verbindungen wieder schließt.

Einen anderen wesentlichen Unterschied von Nucleus PLUS zu den meisten 
anderen Betriebssystemen gilt es auch noch zu beachten: die beim 
Erzeugen eines Prozesses vergebene PID entspricht der Speicheradresse 
des zugehörigen Task Control Blocks. Das ist sehr praktisch, weil ohne 
längliche Suchoperation auf den TCB zugegriffen werden kann; auch das 
Debugging wird immens vereinfacht. Wenn jedoch ein Prozess beendet und 
wieder neu gestartet wird, bekommt er wieder dieselbe PID, da der TCB 
wiederverwendet wird. Damals setzten wir einen SDL-Codegenerator ein, 
der (bzw. dessen zugehörige Bibliotheken) sich darauf verließ, dass PIDs 
eindeutig waren bzw. eine Wiederverwendung erst nach Überlauf eines 
Zählers erfolgt. Das krachte natürlich gewaltig, wenn SDL-Prozesse 
sofort wieder neu gestartet wurden. Aus diesem Grund erweiterte ich die 
TCB-Struktur um eine "konventionelle", fortlaufende PID, und die 
Funktionen in der SDL-Integration schauten dann nicht mehr auf die durch 
den TCB bestimmte PID, sondern auf die darin enthaltene fortlaufende. Es 
war ja auch überhaupt nicht erforderlich, nach diesen PIDs suchen zu 
können, sondern die SDL-Integration machte nur einen einfachen 
Vergleich, um erkennen zu können, ob ein Prozess neu gestartet wurde.

Da das ganze mitterweile rund zwanzig Jahre her ist, gehe ich davon aus, 
dass ATI/Mentor mittlerweile auch die Probleme mit dem TCP/IP-Stack 
selbst in den Griff bekommen hat. Ansonsten wäre der Kram heutzutage 
unverkäuflich.

Die Kernaussage ist jedoch: Wer sich auf den teuren kommerziellen 
Support verlässt, ist verlassen. So etwas in komplett unwägbar, und der 
Aufwand, um Fehlerkorrekturen oder Anpassungen durchzusetzen, ist meist 
höher als wenn man es selbst erledigt. Zudem müssen unnötig viele Leute 
(Einkauf, Rechtsabteilung, usw.) involviert werden. Wenn man es trotzdem 
nicht selbst machen will, rate ich dazu, ein Betriebssystem zu nehmen, 
das komplett mit Quelltext geliefert wird, und sich einen mit diesem 
Betriebssystem erfahrenen externen Entwickler zu suchen, der die 
Anpassungen usw. wesentlich schneller durchführt. Und wenn derjenige 
auch ins Projekt komplett einbezogen wird, muss man ihm auch nicht bei 
jeder Kleinigkeit erklären, worum es überhaupt geht. Die 
Support-Mitarbeiter der Betriebssystemhersteller interessiert das 
Kundenprojekt nämlich nicht die Bohne.

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

900ss D. schrieb:
> Mike schrieb:
>> Viel Geld für (*)Null Support und Unterstützung.
>
> Selten soviel Blödsinn gelesen. Kann aus eigener Erfahrung sagen, dass
> Support und Unterstützung recht gut sind wenn man entsprechend zahlt
> natürlich.
> Aber das wird OT.

Aus der Erfahrung meiner Kunden kann ich sagen, dass VxWorks zum Fass 
ohne Boden wird, wenn man auf Anpassungen durch den Hersteller 
angewiesen ist.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Andreas S. schrieb:
> Ich kenne sowohl von einem früheren Arbeitgeber als auch von etlichen
> meiner Kunden die massiven Probleme mit einigen
> Betriebssystemherstellern, die vorrangig unter dem Gesichtspunkt des
> kommerziellen Supports ausgewählt wurden.

Ok, das sind mal echt krasse Erfahrungen, das würde ich mich gar nicht 
gegenüber meinen Kunden trauen. Ich empfehle immer allen Interessenten 
auch den Support vor dem Kauf bzw. während der Evaluierung zu testen. 
Also nicht nur schauen, ob das Produkt passt sondern wie schnell und 
kompetent ist der Support? Es macht nämlich z.B. keinen Spaß drei Tage 
auf eine Antwort warten zu müssen und währenddessen nicht weiterarbeiten 
zu können.

> Die Bibliotheken werden
> natürlich ohne Debug-Symbole ausgeliefert, damit der Kunde kaum eine
> Chance hat, Fehler zu suchen bzw. zu finden.

Die embOS Libraries werden auch ohne Debug Informationen gebaut aber das 
hat einen anderen einfachen technischen Grund. Würde man ansonsten in 
eine RTOS API Funktion reinsteppen fragen die meisten Debugger nach der 
Source Datei, die in dem Moment natürlich nicht automatisch gefunden 
werden kann.

Eigentlich sollten Kunden auch nicht in RTOS Libraries Fehler suchen 
müssen. In dem Fall, wenn man meint etwas funktioniert nicht so, wie 
erwartet, sollte man den RTOS Hersteller um Hilfe bitten. Und der soll 
das Problem dann asap lösen, auch wenn das in 99% der Fälle ein 
Anwendungsfehler ist. Denn auch das hilft dem RTOS Hersteller sein 
Produkt zu verbessern indem er einen zusätzlichen Debug Check einbauen 
oder die Dokumentation verbessern kann.

Es sollte aber immer auch die Möglichkeit geben den Source Code bekommen 
zu können. Das hat einfach den Vorteil das man unabhängig ist.

Andreas S. schrieb:
> Bei nachgewiesenen Fehlern
> heißt es dann, man hätte die Software auf einer nicht durch den
> OS-Hersteller zertifizierten Hardware eingesetzt.

Mich als RTOS Hersteller sollte gar nicht interessieren müssen auf 
welcher Hardware das RTOS läuft (solange der gleiche Core/Compiler 
verwendet wird). Wie sollte ich denn auch Kundenhardware zertifizieren 
können?

Andreas S. schrieb:
> Die Kernaussage ist jedoch: Wer sich auf den teuren kommerziellen
> Support verlässt, ist verlassen. So etwas in komplett unwägbar, und der
> Aufwand, um Fehlerkorrekturen oder Anpassungen durchzusetzen, ist meist
> höher als wenn man es selbst erledigt.

Das würde ich nicht so pauschal sagen aber wie schon gesagt, stimme ich 
dir zu, dass man guten Support nicht unterschätzen sollte. Denn selbst 
wenn man fit in RTOS ist, kann während der Entwicklung immer der Punkt 
kommen, an dem man ein Problem/Frage/Anforderung hat und auf die Hilfe 
des Supports angewiesen ist.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Til S. schrieb:
> Eigentlich sollten Kunden auch nicht in RTOS Libraries Fehler suchen
> müssen. In dem Fall, wenn man meint etwas funktioniert nicht so, wie
> erwartet, sollte man den RTOS Hersteller um Hilfe bitten. Und der soll
> das Problem dann asap lösen, auch wenn das in 99% der Fälle ein
> Anwendungsfehler ist.

Wenn man eine nagelneue eigene Hardware entwickelt, zeigen sich manche 
Hardwareprobleme erst bei laufendem Betriebssystem. Einer meiner Kunden 
beauftragte mich, ihn bei der Fehlersuche im TCP/IP-Stack von Linux zu 
unterstützen. Wie ich jedoch durch scharfen Blick auf Kernel Oopses, 
einige Anwendungsfehler und eingebauten Testcode herausfand, war bei 
korrupten Daten immer entweder Bit 1 oder Bit 17 gesetzt. Nach langen 
Diskussionen mit dem zuständigen Hardwareentwickler schaute ich dann auf 
das Leiterplattenlayout, und siehe da: aus Platzgründen war eine 
Datenleitung des mit 16 Bit angebundenen und 400 MHz getakteten DDRRAMs 
ganz anders, d.h. mit etlichen Zentimetern Umweg, verlegt als die 
restlichen Leitungen.

Bei einem anderen Projekt gab es sporadisch unerklärliche Abstürze, 
scheinbar verursacht durch durch falsche Pointerzugriffe o.ä.. Auch 
hier musste ich das ganze auf sehr, sehr tiefer Ebene debuggen. Die 
Speicherfehler ließen sich aber selbst mit Write-Watchpoints nicht 
finden. Nach mehrwöchiger Suche mit Debugger und Logikanalysator fand 
ich heraus, dass während eines normalen Speicherzugriffs auf das externe 
SRAM einfach eine neue Adresse angelegt wurde. Es lag also ein 
Busarbitrierungsfehler vor. Zusammen mit noch einigen anderen 
Hardwarebugs führte das dazu, dass der Hersteller den Prozessor 
einstampfte.

Bei demselben Projekt gab es aber auch noch andere Speicherfehler, d.h. 
einzelne Bitkipper. Ebenfalls nach langer Fehlersuche fand ich auch hier 
die Ursache, nämlich eine Fehlbestückung der SRAMs. Bei einigen, aber 
nicht allen Bausteinen, wurde irrtümlich die 5V- statt der 3,3V-Variante 
bestückt. Meistens, aber nicht immer ging das auch gut, so dass es erst 
recht spät auffiel.

Es wäre niemals möglich gewesen, diese Fehler ohne Betriebssystemquellen 
zu finden.

> Es sollte aber immer auch die Möglichkeit geben den Source Code bekommen
> zu können. Das hat einfach den Vorteil das man unabhängig ist.

Genau. Und da helfen keine vollmundigen Versprechungen der schmierigen 
Vertriebler, denen nach Vertragsschluss eh alles egal ist, sondern nur 
Fakten: Quellcode im Lieferumfang und nicht erst bei Problemen.

> Mich als RTOS Hersteller sollte gar nicht interessieren müssen auf
> welcher Hardware das RTOS läuft (solange der gleiche Core/Compiler
> verwendet wird). Wie sollte ich denn auch Kundenhardware zertifizieren
> können?

Und genau da wären wir bei dem eigentlichen Problem: die Fehler werden 
zwischen Kunde und Hersteller hin- und hergespielt. Natürlich handelt es 
sich in den meisten Fällen um Fehler des Kunden. Und auch eine instabile 
Hardware liegt in der Verantwortung des Kunden. Aber wenn sich der 
Betriebssystemhersteller in solchen Fällen komplett zurückzieht

> Das würde ich nicht so pauschal sagen aber wie schon gesagt, stimme ich
> dir zu, dass man guten Support nicht unterschätzen sollte. Denn selbst
> wenn man fit in RTOS ist, kann während der Entwicklung immer der Punkt
> kommen, an dem man ein Problem/Frage/Anforderung hat und auf die Hilfe
> des Supports angewiesen ist.

Ein großes Problem bei vielen Unternehmen besteht darin, dass die 
Entscheidungen für oder gegen bestimmte Lieferanten und deren Produkte 
völlig unabhängig von deren Eignung für den konkreten Zweck gefällt 
werden. Bei einem meiner Kunden ist das wichtigste Kriterium für einen 
Lieferanten, dass er mindestens 5.000 Mitarbeiter hat. Ich habe es dort 
selbst mitbekommen, dass ein Lieferant aussortiert wurde, weil er bei 
der Produktpräsentation jedes technische Detail genau erklären konnte. 
Wir Entwickler waren positiv beeindruckt. Einer der anwesenden Manager 
meinte in der Nachbesprechung, die beiden Referenten hätten einen nicht 
hinreichend selbstbewussten Eindruck vermittelt, und das wäre ein 
Zeichen dafür, dass sie von ihrem eigenen Produkt nicht überzeugt seien.

Und wie wir ja auch bei dem TE sehen, will er ja auch Verantwortung 
deligieren. Ich habe durchaus auch schon Techniker/Entwickler erlebt, 
die den angeblich so schlechten Herstellersupport vorschieben, um von 
ihrer eigenen Inkompetenz abzulenken. Begründet wird dies - genau wie 
beim TE - damit, selbst viel zu qualifiziert zu sein, um sich mit 
solchen banalen Problemen noch abgeben zu müssen. Ich kann mir sehr gut 
vorstellen, dass auch Ihr einen Haufen solcher "speziellen" Kunden 
habt... Ich bin auch sehr vorsichtig gegenüber Neukunden, die schon sehr 
schnell durchblicken lassen, dass sie eigentlich nur einen Schuldigen 
für ihr totes Pferd suchen.

von 900ss (900ss)


Lesenswert?

Andreas S. schrieb:
> ein Betriebssystem zu nehmen

Das vxWorks bei uns liegt vollständig im Quelltext vor. Und ja, es 
stimmt, auch da habe ich schon Fehler gesucht und gefunden. Kochen alle 
mit Wasser ;)

Meine Erfahrungen mit dem Support sind nicht schlecht. Aber es wird 
nichts verschenkt, dass stimmt.

von Frank K. (fchk)


Lesenswert?

Andreas S. schrieb:

> Und wie wir ja auch bei dem TE sehen, will er ja auch Verantwortung
> deligieren.

Verantwortung weniger. Ich bin Nicht-Leiter und trage daher nach 
hausinterner Definition eh keinerlei Verantwortung. Viel mehr Arbeit.

Wir haben etwa eine handvoll reine Weichwareentwickler, die 
Applikationsentwicklung machen, auf Standardhardware und auf selbst 
entwickelter. Mikrocontroller-Weichware machen bei uns nur genau zwei 
Leute, wobei einer sich um die ganzen Altlasten kümmert - 8 Bit Zeugs. 
Ich bin der andere, und ich mache auch noch harte Ware und habe noch 
einen Kollegen, der vor allem Leistungselektronik macht.

Bevor ich gekommen bin, war die Firma mikrocontrollertechnisch eher auf 
gehobenem Arduino-Niveau, was die Komplexität angeht. Ich war der erste, 
der solch Teufelszeugs wie PCIe, USB, FPGA, RTOS, 32 Bit Microcontroller 
mit mehr als 20 MHz etc. angefasst hat. Und ich bin momentan der 
einzige, der davon Plan hat. Klar kann ich mir da in mühsamer Handarbeit 
irgendeine Open Source Lösung zusammenbasteln. Ich habe aber einfach 
nicht die drei bis 6 Monate, die ich für unsere Plattformen dafür 
realistischerweise benötigen würde. Ich brauche irgend etwas, wo der 
Inbetriebnahmeaufwand überschaubar ist, um in absehbarer Zeit meinen 
Berg an Arbeit abarbeiten zu können, und wo die Basisarbeit bereits 
erledigt ist.

So bin ich eben zum TI RTOS gekommen. Die letzte Version für Tiva C ist 
von 2016. Als ich in den Foren beispielsweise den Haufen an Patches für 
den Ethernet-Treiber gesehen habe, bin ich bleich geworden. Ich hatte 
nur Glück, auf keinen der Bugs selber zu stoßen, aber wenn, dann wäre 
das ein elendiger Kampf geworden, der unmengen Zeit gekostet hätte, die 
ich eigentlich nicht habe. Und da es seit 4 Jahren keine Bugfix-Version 
davon gibt, wo die ganzen bekannten Problemlösungen mal eingepflegt 
werden, bekomme ich so langsam kalte Füße und prüfe meine Optionen.

fchk

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Andreas S. schrieb:
> Es wäre niemals möglich gewesen, diese Fehler ohne Betriebssystemquellen
> zu finden.
>
>> Es sollte aber immer auch die Möglichkeit geben den Source Code bekommen
>> zu können. Das hat einfach den Vorteil das man unabhängig ist.
>
> Genau. Und da helfen keine vollmundigen Versprechungen der schmierigen
> Vertriebler, denen nach Vertragsschluss eh alles egal ist, sondern nur
> Fakten: Quellcode im Lieferumfang und nicht erst bei Problemen.

Ja, solche Hardwarefehler sind echt böse. Wir haben bei solchen 
Geschichten auch schon viel Zeit investieren müssen bevor wir dem Kunden 
nachweisen konnten das es an seiner Hardware liegt und nicht an unserer 
Software. Das kann man aber vorab natürlich nicht wissen so das wir 
solche Probleme erst einmal untersuchen müssen. Kommt aber auch extrem 
selten vor. Hatte ich vielleicht in den letzten 14 Jahren nur ein paar 
Mal.

Das sehe ich zumindest bei embOS nicht so als Problem. Wenn ich den 
embOS Source Code haben möchte kaufe ich den einfach, d.h. beim Kauf 
entscheide ich mich, ob ich nur die Libraries oder auch den Source Code 
kaufen möchte. Der Source Code ist natürlich teurer. Dann sollte es auch 
keine Probleme mit Vertrieblern geben ;-).

Unser Konzept ist da eh ein bisschen anders. Ich habe kein Interesse 
daran einmalig an einem Kunden etwas zu verdienen und ihn dann zu 
vergraulen sondern die meisten Kunden gehen mit uns eine langjährige 
Partnerschaft ein. Viele größere Firmen entscheiden sich einmalig für 
ein RTOS und wechseln das dann auch nicht wieder so schnell. Wenn man 
als gleichwertige Partner auftritt macht das für beide Seiten mehr Spaß 
und wir können bei vielen Sachen auch einfach mal kulant sein. Ich weiß 
ja, wenn ich jetzt dem Kunden weiterhelfe, das er happy ist und auch 
auch in Zukunft unsere Produkte kauft. Und ich muss auch 
zugeben...letztlich macht mir das persönlich jede Menge Spaß, vor allem 
wenn man dann sieht in welchen interessanten Produkten so ein RTOS 
eingesetzt wird.

von Klaus H. (klummel69)


Lesenswert?

Ein Aspekt, den ich man nicht unterschätzen sollte:

In einem Projekt hatte ich Probleme im Zusammenspiel
mit Compiler, Debugger, RTOS, Hardware.
Jeder Lieferant einzeln hat die Schuld auf den anderen geschoben.

Dann alles in die Tonne getreten (außer unserer Hardware)
und alles von einem (Segger) gekauft.

Damit war ein Großteil der Probleme weg.
Meist war schnell lokalisiert wer zuständig (Hardware wir, Rest 
Lieferant).
Der Support war auch gut.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Bevor ich gekommen bin, war die Firma mikrocontrollertechnisch eher auf
> gehobenem Arduino-Niveau, was die Komplexität angeht. Ich war der erste,
> der solch Teufelszeugs wie PCIe, USB, FPGA, RTOS, 32 Bit Microcontroller
> mit mehr als 20 MHz etc. angefasst hat. Und ich bin momentan der
> einzige, der davon Plan hat.

Das klingt durchaus plausibel. Bei Deiner o.a. Anfrage hörte es sich 
aber durchaus so an, als würdest Du zu der anderen Kategorie von Kunden 
gehören.

> Klar kann ich mir da in mühsamer Handarbeit
> irgendeine Open Source Lösung zusammenbasteln.

Open Source bedeutet nicht das gleich wie ein im Quelltext vorhandenes 
Betriebssystem eines kommerziellen Anbieters, siehe z.B. das von Til S. 
genannte embOS. Problematisch ist es jedoch, die Nichtverfügbarkeit des 
Quellcodes als Qualitätsmerkmal darzustellen, insbesondere wenn die 
Lieferung auch noch etliche hinzugepfuschte Pakete von Drittanbietern 
beinhaltet, für die der Anbieter dann trotz teuren Wartungsvertrags 
keinen Support leisten will. Siehe ENEA/OSE vor etlichen Jahren. Oder 
eben die vergessenen API-Erweiterungen, die sich Windriver vergolden 
lassen wollte.

> Ich habe aber einfach
> nicht die drei bis 6 Monate, die ich für unsere Plattformen dafür
> realistischerweise benötigen würde. Ich brauche irgend etwas, wo der
> Inbetriebnahmeaufwand überschaubar ist, um in absehbarer Zeit meinen
> Berg an Arbeit abarbeiten zu können, und wo die Basisarbeit bereits
> erledigt ist.

Dann wäre doch SEGGER der richtige Lieferant für Euch. Kein 
aufgeblasener Geldschneider, Quellcode für moderaten Aufpreis 
erhältlich, Support gleich um die Ecke.

Wenn Du jemanden suchst, der ein wie auch immer geartetes Betriebssystem 
(mit Quelltext) auf Eurer Hardware zum Laufen bringt, kann ich Dir diese 
Leistung auch anbieten. Wie Du meinen vorherigen Ausführungen entnehmen 
kannst, habe ich auch etliche Erfahrungen mit "technischen Härtefällen".

> So bin ich eben zum TI RTOS gekommen. Die letzte Version für Tiva C ist
> von 2016. Als ich in den Foren beispielsweise den Haufen an Patches für
> den Ethernet-Treiber gesehen habe, bin ich bleich geworden. Ich hatte
> nur Glück, auf keinen der Bugs selber zu stoßen, aber wenn, dann wäre
> das ein elendiger Kampf geworden, der unmengen Zeit gekostet hätte, die
> ich eigentlich nicht habe. Und da es seit 4 Jahren keine Bugfix-Version
> davon gibt, wo die ganzen bekannten Problemlösungen mal eingepflegt
> werden, bekomme ich so langsam kalte Füße und prüfe meine Optionen.

Immerhin gibt es solche Patches. Es gibt auch Anbieter, die 
Fehlerkorrekturen mit der Begründung ablehnen, das Produkt sei ja schon 
nach XYZ "zertifiziert" und dürfe deswegen auch nicht mehr geändert 
werden.  (Atmels offizielle Stellungnahme zu Fehlern im AT91RM9200). Und 
was dem Kunden überhaupt einfalle, dem "zertifizierten" Produkt 
irgendwelche Mängel zu unterstellen. Im Zweifelsfall wird die 
Rechtsabteilung losgeschickt, um den Entdecker solcher Fehler davon 
abzuhalten, die Fehler öffentlich zu machen (Sharp LH79402: Sharp bot 
uns nach Prüfung meiner länglichen Fehlerliste an, nach Unterzeichnung 
eines NDA mit wichtigen Informationen zu dem Prozessor zu versorgen. Wir 
unterzeichneten das NDA, und deren knappe Antwort lautete sinngemäß: 
"Wir stellen das Produkt ein, haben unsere inkompetenten Entwickler in 
den USA entlassen, und Ihr dürft nicht herumerzählen, welche Scheiße wir 
gebaut haben." Ich sehe mich mittlerweile nicht mehr an das NDA 
gebunden, zum einen, weil es schon ewig her ist, und zum anderen, weil 
es uns mit einem gänzlich anderen Versprechen abgerungen wurde.)

von Peter D. (peda)


Lesenswert?

Wenn RTOS und Schnittstellen vorrangig sind, dann würde ich genau da 
ansetzen und nicht das Pferd von hinten aufzäumen. Also erstmal die 
optimale Entwicklungsumgebung suchen und zum Schluß die CPU, die dazu 
optimal paßt.

Wenn man sich gleich auf eine bestimmte CPU versteift, dann wird man 
immer wieder Kompromisse eingehen müssen.
Der CPU-Typ ist heutzutage nebensächlich und kostenmäßig scheinst Du ja 
auch keine Bindung an alte Programmiertools zu haben.

von 123 (Gast)


Lesenswert?

Wenn ich mir deine Schnittstellen/Anwendungs Liste so anschaue was du 
alles haben möchtest, stellt sich mir die Frage ob für die ganzen 
HighEnd kram eine Linux Platform interresanter währe? wobei das als one 
man show mit HW schon heftig wird.

Die ganzen Netzwerk Protokolle und Dienste die du oben aufgeschrieben 
hast krigst du alle für fast umsonst und noch jede menge mehr. Ja es 
gibt keinen support vom hersteller, da es keinen hersteller gibt. aber 
eine grosse gemeinde die den code pflegt, vorausgesetzt man hat nicht 
den exoten unter den exoten ausgewählt. und zur not gibt es externe die 
dir gerne gegen geld beim Fehler fixien helfen. (und davon gibt es 
genut)

Ist halt die Frage wie viel echte RealTime ihr braucht.
Und es gibt auch durchaus Bausteine die neben dem Dickschiff (Cortex Ax) 
noch ein kleines Beiboot (Cortex Mx) haben. (STM32MP1, ab IMX6, Sitara, 
...)

von Lothar (Gast)


Lesenswert?

Peter D. schrieb:
> Wenn RTOS und Schnittstellen vorrangig sind

Es sollte immer zuerst das geeignete RTOS gewählt werden, und dann kann 
man sehen, welche Hardware gut unterstützt wird.

Wenn für Sitara AM5728 und NXP i.MX6 und Pi CM3+ unter RISC OS alle 
Treiber vorhanden und getestet sind, dann muss ich ja nicht unbedingt 
Experimente mit  AM6528 oder i.MX8 oder Pi 4 machen, nur weil die ganz 
toll neu sind.

Mal abgesehen davon ist für den Frager vielleicht doch eine SPS auf Pi 
CM3+ oder i.MX6 Basis am günstigsten:

https://revolution.kunbus.de/

https://www.stv-electronic.de/produkte/automatisierungstechnik/linux-controller/

https://www.controllino.biz/myplc/

von Frank K. (fchk)


Lesenswert?

123 schrieb:
> Wenn ich mir deine Schnittstellen/Anwendungs Liste so anschaue was du
> alles haben möchtest, stellt sich mir die Frage ob für die ganzen
> HighEnd kram eine Linux Platform interresanter währe? wobei das als one
> man show mit HW schon heftig wird.

Linux kennen wir, haben wir und nutzen wir, aber das ist eine andere 
Klasse. Für gewisse Sachen ist Linux einfach zu fett, und für externes 
RAM und Bootmedien ist der Platz einfach nicht da. Echtzeitig muss es 
auch sein, und innerhalb weniger ms nach dem Power-on laufen und die 
Hardware initialisiert haben.

Außerdem habe ich dann ernsthafte Probleme, aktuelle Linux-Hardware auf 
der gleichen Leiterplatte wie die Leistungselektronik daneben mit 105u 
Kupfer und Stromstärken von >50A unterzubringen. Ein TQFP64 im 0.5mm 
Raster geht noch problemlos, nur die Vias werden dann etwas unhandlich 
bei Restringen von min. 0.25mm.

Die Frage war berechtigt, aber die Antwort lautet: nein, ist nicht, geht 
nicht, keine weitere Diskussion.

fchk

von 123 (Gast)


Lesenswert?

Ok verstanden,
Nachfolgendes zur Info: Es gibt Modul Moudle Hersteller, die dir das 
ganze auf ein paar quadrat cm zusammen dampfen mit ggf brauchbaren 
Pinning. Um DDR, Flash, PMIC, HF routing, ... braucht man sich dann 
nicht zu kümmern alles on "CHIP" bzw "Module"
z.B. https://octavosystems.com/octavo_products/osd32mp15x/

Ihr solltet euch auch überlegen ob Ihr eure MCU auswahl nicht ausdünnen 
könnt. Hintergrund ist für jede HW / IP block braucht ihr einen 
entsprechenden LowLevel Treiber den Ihr zusätzlich bezahlen Müsst. Ihr 
zahlt dann den USB LL Treiber für jede zusätzliche Platform. Und die 
Qualität kann beim gleichen Hersteller durchaus von Platform zu Platform 
schwanken, je nach dem wie viele User den schon einsetzen oder ob der 
für euch neu entwickelt wurde.
Das gleiche beim RTOS selber, jede MCU architektur muss separat 
Lizenziert und bezahlt werden. Zumindest kenn ich es nur so von den 
grossen. Oder noch besser es wird Projekt spezifisch Lizenziert, ... 
Beim nächsten Projekt mit ähnlichen RTOS anforderungen muss man das 
ganze noch mal Lizenzieren und bezahlen. Das kann ggf noch teurer 
werden, ...

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

123 schrieb:
> Das gleiche beim RTOS selber, jede MCU architektur muss separat
> Lizenziert und bezahlt werden. Zumindest kenn ich es nur so von den
> grossen. Oder noch besser es wird Projekt spezifisch Lizenziert, ...
> Beim nächsten Projekt mit ähnlichen RTOS anforderungen muss man das
> ganze noch mal Lizenzieren und bezahlen. Das kann ggf noch teurer
> werden, ...

Ich kann jetzt wieder nur vom embOS reden aber da ist es tatsächlich so, 
dass es nicht das eine embOS gibt. Jede Portierung für eine beliebige 
Core/Compiler Kombination ist ein separates Produkt. Zum Beispiel ein 
embOS für Cortex-M und GCC kann ich auf jedem Cortex-M Device laufen 
lassen. Ein embOS für PIC32 und dem XC32 Compiler läuft nur auf einem 
PIC32. Wenn ich beide Cores einsetzen möchte brauche ich zwei embOS 
Ports, die ich separat lizenzieren muss.
https://www.segger.com/products/rtos/embos/supported-cores-compiler/embos-ports-overview/

Wieso gibt es die unterschiedlichen embOS Ports und nicht ein embOS, das 
alles unterstützt?
Während 99% eines RTOS in C geschrieben sind, und auf jedem Core und mit 
jedem Compiler funktioniert, ist ein kleiner Teil Core und Compiler 
abhängig. Bei über 80 embOS Ports würde das ansonsten sehr unhandlich 
werden (vor allem für den RTOS Hersteller ;-) ). Letztlich macht das 
auch kommerziell Sinn da man als Kunde ansonsten die 79 übrigen embOS 
Ports mit bezahlt obwohl man nur z.B. ein embOS Cortex-M GCC nutzt.

von Olf (Gast)


Lesenswert?

Til S. schrieb:
> Ich kann jetzt wieder nur vom embOS reden aber da ist es tatsächlich so,
> dass es nicht das eine embOS gibt. Jede Portierung für eine beliebige
> Core/Compiler Kombination ist ein separates Produkt.

Eher ein Grund, die Finger davon zu lassen, oder?

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Olf schrieb:
> Eher ein Grund, die Finger davon zu lassen, oder?

Wieso? Ich denke aus technischer Sicht macht das schon Sinn in dem 
Shipment nur die Sachen drin zu haben, die ich brauche. Wofür brauche 
ich in einem Cortex-M Shipment Dateien für einen M16C? Das macht es 
nicht übersichtlicher.

Von der kommerziellen Seite könnte man jetzt meinen das es teurer sei 
die embOS Ports einzeln lizenzieren zu müssen. Aber wie teuer soll dann 
ein Gesamtpaket sein, in dem > 80 embOS Ports sind? Das wäre so als 
müsste ich beim VW Händler den ganzen Ausstellungsraum leer kaufen 
obwohl ich nur einen Golf haben möchte.

Das es natürlich auch anders geht zeigt FreeRTOS. Ich finde die 
Sortierung dort nicht schlecht auch wenn man das vom Konzept her nicht 
ganz mit embOS vergleichen kann.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Olf schrieb:
> Til S. schrieb:
>> Ich kann jetzt wieder nur vom embOS reden aber da ist es tatsächlich so,
>> dass es nicht das eine embOS gibt. Jede Portierung für eine beliebige
>> Core/Compiler Kombination ist ein separates Produkt.
>
> Eher ein Grund, die Finger davon zu lassen, oder?

Wenn alle Portierungen gleiche APIs und Konzepte verwenden, ist das doch 
alles kein Problem. Ich habe neulich in der embOS-Kompatibilitätsliste 
sogar etliche ur-uralte unterstützte Plattformen gesehen. Es wäre wenig 
sinnvoll, all diese "Altlasten" in einem generischen Betriebssystem 
mitschleppen zu müssen. Wenn ich mir so manche lange gewachsenen 
Softwarepakete anschaue, sind diese doch aus Kompatibilitätsgründen 
völlig unübersichtlich geworden. Und wenn man dann in solch einem Grab 
aus Präprozessordefinitionen usw. einen Fehler finden und beheben muss, 
ist die Wahrscheinlichkeit sogar sehr hoch, dass es dabei gar nicht um 
die eigene Plattform geht.

Ich gehe aber auch schwer davon aus, dass Segger großenteils auf einer 
gemeinsamen Codebasis aufsetzt und nicht 80 separate Entwicklungen 
pflegt.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Andreas S. schrieb:
> Wenn alle Portierungen gleiche APIs und Konzepte verwenden, ist das doch
> alles kein Problem.

Ja, natürlich. Die API ist immer identisch bzw. kompatibel. Ich kann im 
Prinzip eine 20 Jahre alte M16C Applikation ohne Änderungen auf einem 
aktuellen embOS Cortex-M laufen lassen.

Andreas S. schrieb:
> Ich gehe aber auch schwer davon aus, dass Segger großenteils auf einer
> gemeinsamen Codebasis aufsetzt und nicht 80 separate Entwicklungen
> pflegt.

Genau, die gemeinsame Codebasis nennt sich bei embOS "generische 
Sourcen" bzw. der Verzeichnisname "GenOSSrc". Das sind die embOS C 
Sourcen, die für alle embOS Ports identisch sind und machen ~99% von 
einem embOS Port aus. Der Core und Compiler spezifische Teil bestehlt 
aus ein bisschen Assembler Code, ein paar Core spezifischen C Funktionen 
und zwei Header Dateien, die Core/Compiler spezifische Settings setzen.

Die generischen Sourcen werden weiter entwickelt und neue Features 
hinzugefügt bzw. Fehler korrigiert. Mit einer neuen Version dieser 
generischen Sourcen können dann die einzelnen embOS Ports upgedatet 
werden.

von Christopher J. (christopher_j23)


Lesenswert?

Ich würde hier, gerade angesichts der Forderung nach USB- und IP-Stacks, 
mal NuttX in die Runde werfen, das läuft nämlich auf so ziemlich allem 
von ARM9 bis Z-80. Stacks für USB und IPv6 sind vorhanden, ebenso wie 
ein POSIX-Interface und verschiedene Dateisysteme.
Google (Project Ara), Samsung (TizenRT), Sony und die ETH Zürich (PX4) 
nutzen es, kann also nicht sooo übel sein, oder?
Es kommt eben darauf an was man will bzw. braucht. Unter NuttX ist die 
Hardware halt relativ stark in High- und Low-Level-Treiber gekapselt und 
sofern es die Low-Level-Treiber noch nicht gibt, muss man die halt 
schreiben, was nicht sooo trivial ist.
Zugegebenermaßen kenne ich außer Gregory Nutt (dem Schöpfer von NuttX) 
keine Firma die kommerziellen Support bietet. Es liegt aber alles im 
Quellcode vor (BSD- bzw. seit neuestem Apache-Lizenz) und du kannst es 
ausprobieren um es auch ggf. mit anderen Kandidaten zu vergleichen.
Ich kenne aber kein anderes RTOS, welches so dermaßen stark an Linux 
bzw. UNIX angelehnt ist und dementsprechend einfach ist es damit 
wirklich komplizierte Sachen hinzubekommen. Z.B. einen USB-Stick per 
USB-Host bzw. OTG anbinden und dann mittels BSD-Sockets eine Datei aus 
dem Netz laden und auf dem Stick speichern ist wirklich ein Kinderspiel 
(vorausgesetzt die Low-Level-Treiber sind schon vorhanden), weil halt 
quasi wie unter Linux .

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

RT-threat ist super leider ist die Doku in chinesisch.

von Christopher J. (christopher_j23)


Lesenswert?

Noch ein Nachtrag zu WindRiver und vxWorks:
WindRiver wurde ja von Intel geschluckt und die haben daraufhin Zephyr 
auf den Markt der Open-Source RTOS geschmissen. Wenn man so will, 
bekommt man mit Zephyr jetzt ein leicht abgewandeltes vxWorks in neuer 
Verpackung und das unter Apache-Lizenz. Zephyr macht auf mich auf den 
ersten Blick auch gar keinen so üblen Eindruck und es lehnt sich wie bei 
NuttX alles sehr stark am Linux- bzw. Unixumfeld an. Habe damit aber 
noch nicht so viel gemacht, lediglich bisschen mit rumgespielt.

Habe eben nochmal deine Anforderungsliste durchgelesen und bin dabei auf 
die Angabe mit "vor deiner Zeit, etwa Arduinolevel" gestoßen. Wie lange 
ist das denn jetzt her? So wie sich das anhörte möchtest du ja 
eigentlich Arbeit abgenommen bekommen, weil die Todo-Liste schon ohnehin 
zu lange ist. Dann bist du vermutlich bei Segger oder Keil besser dran. 
Die Entscheidung mit PIC32 und Cortex-M parallel zu fahren kostet dann 
bei Segger entsprechend doppelt, das muss man sich dann eben überlegen 
ob das Sinn macht. Sich mit Keil bzw RTX auf Cortex-M festzunageln wäre 
mir persönlich aber auch nicht so ganz geheuer, wenn auch besser als mit 
TI-RTOS sich an einen einzelnen Hersteller zu binden.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Christopher J. schrieb:
> Die Entscheidung mit PIC32 und Cortex-M parallel zu fahren kostet dann
> bei Segger entsprechend doppelt, das muss man sich dann eben überlegen
> ob das Sinn macht.

Einfacher ist das natürlich bei einem Core zu bleiben, aber ansonsten 
...mit uns kann man reden ;-). Bis jetzt haben wir immer eine Lösung 
gefunden, die für beide Seiten passt.


Man muss aber auch sehen, das wir hier von "nur" 5 KEuro für Cortex-M 
und PIC32 reden (Object Code, Singe Developer oder Single Product 
Lizenz). Ob das im Budget ist kommt natürlich auf das konkrete Projekt 
an. Für eine 1 Mann Firma mit wenigen Stückzahlen pro Jahr ist das viel 
Geld aber für einen Konzern mit größeren Stückzahlen eher Peanuts.
Fairerweise musst man noch die weitere Embedded Software wie USB oder 
Filesystem dazurechnen da embOS nur das reine RTOS ist.

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.