Hallo, ich benutze für ein Studienprojekt den MSP4305438. Ich möchte für das Projekt ein Echtzeitbetriebssystem einsetzen. Das ganze sollte aber keine Lizensgebüren kosten. Ich habe bereits einige erfahrungen mit dem RTOS µC/OS 2 von Micrium. Das fällt wohl leider wegen den Gebühren aus. Aber es gibt ja unzählige Alternativen. Ich habe hier 2 gefunden die für mich interessant aus sehen. Das sind von TI SYS/BIOS und free RTOS. Beide scheinen kostenlos nutzbar zu sein. Meine Anforderungen sind eigentlich lachhaft, ich brauche: - Nutzung von Interrupts für Serielle Schnittstellen - Priorisierung der Tasks - Präemtives Multitasking - Binäry Semaphore - Shared Memory (notfalls über globale Variablen) Weiterhin wünschenswert: - später vielseitig einsetzbar (spricht eher für freeRTOS) damit ich das gelernte weiter verwenden kann - möglichst einfach anzuwenden - und es sollte nicht allzu ressourcenhungrig sein Das Projekt wird recht umfangreich, Hauptaufgaben sind: FAT-Dateisystem (SD-Card), Daten der seriellen Schnittstelle auswerten. Was ich gerne Wissen würde ist: -Hat jemand erfahrungen mit den genannten und kann mir eine Empfehlung geben? -Gibt es stolpersteine auf die ich unbedingt aufpassen sollte (wenn ja welche)? -Habe ich eine wichtige alternative übersehen? Danke für Antworten und Anregungen.
Student schrieb: > - Shared Memory (notfalls über globale Variablen) Shared memory braucht man nur dann, wenn es überhaupt eine virtuelle Speicherverwaltung gibt, die in der Lage ist, die Adressräume von Tasks voneinander zu isolieren. Für eine virtuelle Speicherverwaltung braucht man eine MMU. Hat der MSP430 eine? Wohl kaum. > Das Projekt wird recht umfangreich, Hauptaufgaben sind: FAT-Dateisystem > (SD-Card), Daten der seriellen Schnittstelle auswerten. Das ist doch mehr oder weniger unkritischer Kinderkram. Dazu allein braucht man ganz sicher kein ausgewachsenes RTOS. Natürlich kann man das auch unter einem RTOS implementieren, aber der Overhead steht in keinem Verhältnis zum Nutzen der Sache. Ein RTOS ist dann sinnvoll, wenn man eine Vielzahl von weitgehend unabhängig laufenden Tasks und Ereignisquellen hat bzw. haben will. Deine Beschreibung läßt davon nichts erkennen.
Hallo, danke für die Antworten. Embedded-OS wäre vlt. noch eine möglichkeit. Ich sehe aber keinen Vorteil gegenüber freeRTOS oder dem von TI. Was die anforderungen angeht hab ich mich unklar ausgedrückt. Es ist natürlich deutlich mehr als das. Es ist nicht wie oben (schlecht formuliert) steht eine, sondern es sind min. 3. Zusätzlich kommt noch die Datenauswertung und speicherung in einen Task und noch eine ganze Menge mehr. Das hätte ich schreiben können. Natürlich geht das auch ohne RTOS aber der Verwaltungsaufwand wäre groß zumal ich dann selbst eine Art Multitasking schreiben müsste (ich habe einige Tasks drin die längere Pausen ((>= 10ms) machen müssen). Die Formulierung SD-Karte und Serielle Schnittstelle ist schlecht gewesen. Ich gebs zu. Was die SharedMemory angeht: ich habe natürlich keine MMU, jedoch brauche ich dynamischen Speicher. Bei µC/OS-2 gibt es hier memory partitions. Das ist eine Memorypartition (eigentlich nur eine globale variable) von der man "ein stück" anfordern kann. Wenn was frei ist bekommt man es, wenn nicht wird der Task Schlafen gelegt bis etwas frei ist. Der letzte Punkt ist der entscheidende. Mit Globalen Variablen müsste ich mich da selbst drum kümmern das immer was frei ist.
RTOS heißt noch lange nicht "schnell". So wie Du es aufziehen willst, wird es eher langsam. Blackbird
Blackbird schrieb: > RTOS heißt noch lange nicht "schnell". > So wie Du es aufziehen willst, wird es eher langsam. Deswegen heisst es ja auch "Echtzeitbetriebssystem", weil dann alles echt Zeit braucht ;)
Hallo nochmal, von schnell hatte ich auch nichts geschrieben. Was ich geschrieben hatte war: "nicht allzu ressourcenhungrig". Das eine Betriebssystemlösung viel langsamer als eine manuelle ist ist absolut logisch. Geschwindigkeit ist aber auch nicht das entscheidende Kriterium. Rechtzeitigkeit ist es :)
Datenspeicherung, -auswertung, SD-Card-Schreiben, ... nirgendwo sind echtzeitfähige Anforderungen zu finden. Die wären erst gegeben, wenn Du auf ein externes Ereignis in einer bestimmten, immer gleichen, Zeit antworten mußt. Davon hast Du nichts geschrieben. Es sieht mir eher nach exzessiver C++ Programmiererei aus, UML-generiert. Die paar Anwendungen kann man auch interruptgesteuert abarbeiten. Mit einem RTOS geht es auch, aber der Aufwand ... Blackbird
Student schrieb: > Natürlich geht das auch ohne RTOS aber der Verwaltungsaufwand wäre groß > zumal ich dann selbst eine Art Multitasking schreiben müsste (ich habe > einige Tasks drin die längere Pausen ((>= 10ms) machen müssen). So what? Sowas macht man mit einem "Timer-Device". Alle µC (natürlich auch MSP430) haben Timer dafür. Und klar: Der "Verwaltungsaufwand" ist bei sowas größer, als wenn man nur in main() eine LED blinken läßt und die Blinkfrequenz per delay() steuert. Aber RTOS haben den "Verwaltungsaufwand" natürlich genauso und leider auch noch viel mehr. Weil deine eigene Verwaltung dem Einsatzzweck angepaßt sein und deswegen minimal sein kann, das RTOS aber universell und deswegen vergleichsweise fett und langsam sein muß. > Was die SharedMemory angeht: ich habe natürlich keine MMU, jedoch > brauche ich dynamischen Speicher. Was mit SharedMemory rein garnix zu tun hat... > von der man "ein stück" anfordern kann. Wenn was frei ist > bekommt man es, wenn nicht wird der Task Schlafen gelegt bis etwas frei > ist. Das kann dann schonmal kein Echtzeit-Task sein. Das ist dir doch hoffentlich klar? Jedenfalls sollte dir das klar sein, sonst brauchst du mit der Sache erst garnicht anfangen und solltest statt dessen besser eine Ehrenrunde einlegen, in der du mindestens das aktuelle Semester noch einmal machst...
c-hater schrieb: >> von der man "ein stück" anfordern kann. Wenn was frei ist >> bekommt man es, wenn nicht wird der Task Schlafen gelegt bis etwas frei >> ist. > > Das kann dann schonmal kein Echtzeit-Task sein. Das ist dir doch > hoffentlich klar? Jedenfalls sollte dir das klar sein, sonst brauchst du > mit der Sache erst garnicht anfangen und solltest statt dessen besser > eine Ehrenrunde einlegen, in der du mindestens das aktuelle Semester > noch einmal machst... Doch das kann ein Echtzeittask sein wenn ich sicherstellen kann das rechtzeitig speicher frei wird. c-hater schrieb: >> Was die SharedMemory angeht: ich habe natürlich keine MMU, jedoch >> brauche ich dynamischen Speicher. > > Was mit SharedMemory rein garnix zu tun hat... Wikipedia sagt dazu: Shared Memory (dt. „gemeinsam genutzter Speicher“) wird in der Computertechnologie verwendet und kann dabei je nach Kontext eine andere Technologie beschreiben: Shared Memory in der Interprozesskommunikation (IPC): Hier nutzen zwei oder mehrere Prozesse einen bestimmten Teil des Hintergrundspeichers (RAM) gemeinsam. Genau das ist das was ich brauche. Das ich mir Dynamisch den speicher besorge ist natürlich mit drin. Mit dem Blinken einer LED hat das ganze auch wenig zutun. Da ich ständig mehrere Sensoren auswerte (gut die hatte ich bisher nicht erwähnt, es gibt einen ganzen haufen von aufgaben die da noch parallel laufen müssen aber relativ schnell gehen und zeitlich unabhängig sind). Die Frage war aber auch nicht ist ein Echtzeitbetriebssystem geeignet, sondern was sind die Besonderheiten der beiden genannten Echtzeitbetriebssysteme. Dennoch danke für eure Antworten.
@c-hater (Gast) lass ihn, er will unbedingt eine Taschenuhr mit Fäustlingen an den Händen bauen ;) Die einzige Rechtfertigung für sein Vorhaben könnte sein - er weiß noch nicht so genau, was er alles in das Projekt packen will. Und hält sich so alle Optionen für Erweiterungen offen (die er aber nicht vornehmen wird, sondern ein neue Projekt beginnt ...). Und wie ich schon schrieb: Seine Vorkenntnisse sind wahrscheinlich nur UML mit C++. Da schreit förmlich nach einem Betriebssystem. Dass das ein µC ganz anders kann - das lernt er noch wenn er erst mal das Projekt beginnt. Blackbird PS: @Student (Gast) Als RTOS würde ich immer ein pSOS/pSOS+ -Derivat nehmen. Diese Topologie hat sich schon auf den verschiedensten Plattformen bewährt und läuft sogar heute noch - das sind meine Berufserfahrungen. Verlange jetzt aber nicht die wasserdichte Begründung, das wäre eine längere Abhandlung mit viel Recherche. Fange einfach mal mit einer zeitgesteuerten Sensorabfrage an. Ohne RTOS, nur mit µC-Bordmitteln.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.