Monatsarchiv für September 2011

MicroC/OS-II: The Real-Time Kernel

4. September 2011

Hierbei handelt es sich um das Buch zum Betriebssystem welches ich für meinen SportTracker einsetzen möchte. D.h. ursprünglich wollte ich allgemein etwas über embedded Echtzeitbetriebssysteme lernen. Ich wollte also herausfinden wie so ein System „tickt“. Bei meiner Suche bin ich damals auf dieses Buch und damit auch auf uC/OS-II gestoßen.

Aus meiner Sicht ist dieses Buch ein sehr guter Einstieg in die Welt der Echtzeitbetriebssysteme. Das Buch behandelt zwar an sich nur das kommerzielle Betriebssystem uC/OS-II welches von der Firma Micrium (dessen Chef der Autor des Buches ist) vertrieben wird, aber aus meiner Sicht werden die grundlegenden Zusammenhänge die bei vielen Betriebssystemen vergleichbar sind sehr gut und anschaulich erklärt. Es ist also mehr als nur ein teures Produkt Manual das sich die Firma Micrium vergolden lässt. Weiterhin liegt der komplette Source Code des Betriebssystems in Form einer CD bei. Man kann also direkt alles im Code nachvollziehen und mit einem der vielen frei verfügbaren Portierungen von der Micrium Website alles am leben Objekt, d.h. z.B. auf einem Starterkit, ausprobieren.

Zum Aufbau:

Das Buch beginnt mir ein paar einfachen Beispielen die in die Thematik einführen. Danach werden grundsätzliche Echtzeitkonzepte wie Multitasking (preemtiv und nicht preemptiv), Events, Scheduling und so weiter erklärt.  In den folgenden Kapiteln werden dann die einzelnen Funktionen im Detail erläutert. Dabei handelt es sich nicht nur um eine Beschreibung der Anwendung der OS Service Funktionen, sondern vielmehr um das wie und warum eine Service Funktion in einer bestimmten Art und Weise implementiert wurde. Es geht also wirklich um die internen Abläufe. Nachdem alle Services erklärt wurden wird weiterhin beschrieben wie sich das Betriebssystem auf einen neue Plattform portieren lässt. Die Portierung beschränkt sich hierbei auf nur vier hardwarenahe Dateien. Meist lässt sich eine Portierung auch auf einer schon verfügbaren aufsetzen. Abgerundet wird das Buch durch das Reference Manual des OS und einer Beschreibung der Konfiguration, d.h. der Anpassung an die jeweilige Applikation.

Pro:

  • Guter Einstieg in das Thema Echtzeitbetriebssysteme
  • Sehr gute Beschreibung der Betriebssystemfunktionen
  • Graphische Darstellung der Abläufe helfen beim Verständnis
  • Quellcode liegt bei und kann von der Micrium Website heruntergeladen werden

Kontra:

  • uC/OS-II ist nur für nicht kommerzielle Zwecke frei verfügbar
  • Inzwischen wurde eine neue Version uC/OS-III herausgebracht, d.h. die Informationen sind nicht mehr 100% aktuell. Die Grundlagen stimmen aber noch
  • Zum Download des Quellcodes ist eine Registrierung notwendig

Tipp:

Das Buch zur aktuellen Version lässt sich im Moment frei von der Micrium Website herunterladen. D.h. man kann sich eine Menge Geld sparen. Auch der Quellcode des neuen Systems ist im Moment verfügbar.

µC/OS-II Port für den Cortex-M3

4. September 2011

Wie ich in meinem letzten Artikel schon geschrieben habe möchte ich mit meinem SportTracker Projekt einige für mich neue Dinge ausprobieren. Unter anderem möchte ich auch mal ein wenig mit Echtzeitbetriebssystemen experimentieren. Das Betriebssystem meiner Wahl ist hierbei das uC/OS-II von Micrium. Jetzt höhre ich natürlich schon die ersten Stimmen: „Warum gerade das?“, „Wieso so ein kommerzieller Mist? FreeRTOS ist doch frei und kostenlos“, usw., usw.. Die Argumente sind wahrscheinlich auch zum großen Teil richtig, aber…

Ich habe mich für uC/OS-II entschieden, weil ich die Dokumentation des Betriebssystems und auch den Code des Systems sehr gut finde. D.h. ich habe mir schon vor einiger Zeit das Buch von Herrn Labrosse gekauft und ich finde, dass er die Grundfunktionen von Embedded Betriebssystemen wirklich gut erklärt. Ähnliches gilt natürlich auch für FreeRTOS, aber aus meiner Sicht ist uC/OS-II verständlicher und übersichtlicher geschrieben.

Nachdem ich mich also für uC/OS-II entschieden hatte war es nun in einem nächsten Schritt natürlich wichtig, dass es auch eine Portierung für den von mir geplanten Controller, den STM32, sowie meine Entwicklungsumgebung, Crossworks for ARM, gibt. Und da waren sie auch schon wieder, meine Probleme. Auf der Micrium Seite gab es natürlich nur Ports für die kommerziellen Toolchains von Keil und IAR und nicht für den GCC. Es blieb mir also nichts anderes übrig, als eine Anpassung für den GCC zu schreiben. Diese Anpassung gibts jetzt hier zum herunterladen. Basis meines Ports für den GCC Compiler war ein Port für die Toolchain von Keil. Im Prinzip habe ich auch nur die Asssembler Datei „os_cpu_a.asm“ entsprechend anpassen müssen. Wobei sich die Anpassungen nicht auf den Code an sich bezogen, sondern vielmehr auf die Anpassung der generellen Struktur der Datei. D.h. die Schlüsselwörter zur Definition von Sections, externen Variablen und Funktionen unterscheiden sich z.B. geringfügig zwischen den beiden Toolchains. Ein wichtiger Punkt bei der Portierung war dann noch, dass der GCC zu Beginn einige ASM-Befehle des Ports nicht kannte obwohl diese eindeutig im STM32 Programming Manual definiert waren. Dieses Problem konnte ich dann aber nach ein wenig googlen lösen. Beim GCC ist es nämlich erforderlich die Schlüsselworte „.syntax unified“ voranzustellen damit der Assembler sich nicht verrennt. Ein Glück das die meisten Probleme schonmal ein anderer hatte :-).

Also dann, zu guter letzt fehlt nur noch mein Port für den GCC:

uCOS_Port_GCC_STM32

Viel Spass damit…

PS: Bevor ich’s noch vergesse. Der GCC ist auch für mich noch eine neue Toolchain. Es ist also möglich, dass noch Fehler im Code enthalten sind. Die Grundfunktionen habe ich zwar getestet aber die Probleme stecke ja bekanntlich im Detail. Wer also einen Fehler findet, kann ihn mir gerne melden :-). Einen Finderlohn kann ich leider nicht zahlen ….

Elektronik + Laufen = Spaß^2

1. September 2011

Häh? Was meint er denn damit schon wieder? Ganz einfach:

Wenn man zwei Hobbies miteinander kombinieren kann ist das auf jeden Fall eine gute Sache, sprich „Spaß hoch zwei“.

Genau das habe ich mit meinem kommenden Bastelprojekt vor. Und zwar möchte ich einen Sport Tracker bauen. Was genau meine ich damit? Im Prinzip möchte ich einen normalen GPS Tracker bauen, der natürlich wie jeder andere Tracker auch in bestimmten Zeitabständen seine aktuelle Position speichert. Ergänzen möchte ich das Ganze jedoch um verschiedene Funktionen die mich bei meinem Lauftraining unterstützen. Das sind zum Beispiel Funktionen wie:

  • Pulsmesser
  • Angabe von Pulsbereichen
  • Sonderfunktionen für Intervalltrainings, Tempoläufe und lange Läufe
  • Verbindung zum PC
  • gpx Unterstützung
  • GPS Mausfunktion
  • usw.

Jetzt kann man natürlich sagen das man das alles schon fix und fertig kaufen kann. Stimmt! Mein Garmin Forerunner 305 leistet mir jetzt auch schon über zwei Jahre gute Dienste. Aber die Sinnfrage macht besonders bei Hobbyprojekten nur selten Sinn ;-). Insgesamt geht es mir viel mehr darum bestimmte Dinge einfach mal auszuprobieren. Besonders mit einem Tracker gibt es hierzu besonders vielfältige Möglichkeiten. Also dann, auf los gehts…