ChibiOS/RT für Raspberry Pi
Hallo.
ChibiOS/RT [1] ist ein sehr kleines Realtime-Operating System. Es unterstützt Plattformen, die Linux bspw. nicht mehr abdeckt und kann für allerlei Spielerei benutzt werden. ChibiOS/RT kann keine Prozesse zur Laufzeit erstellen oder nachladen, Programme für das System müssen in den Betriebssystemkern eingebaut werden. Ich habe versucht die Anleitung unter [2] nachzuvollziehen, um ChibiOS/RT für den Raspberry Pi zu bauen. Meine Plattform: Linux Mint 17.1 Rebecca. Weil ich damit hinreichend große Probleme hatte, erläutere ich hier, was aktuell ein valides Vorgehen ist um den Betriebssystemkern zu bauen.
Was wird benötigt?
Ihr benötigt folgende Software:
- arm-none-eabi-gcc Cross-Compiler, am Besten aus [3]
- git
- screen
Folgende Hardware wird benötigt:
- Raspberry Pi
- Adafruit TTL-USB-Kabel [4]
Vorgehen
Zunächst wird ein passender Compiler gebraucht. Es ist offenbar möglich das Betriebssystem auf dem Pi selbst zu bauen, ich habe das Betriebssystem auf einem x86-Rechner gebaut. Dazu wird ein Cross Compiler benötigt. Ein Cross Compiler ist ein Compiler, der auf einer Plattform läuft (hier x86), aber Programme für eine andere Plattform erzeugt (hier ARMv6). Den arm-none-eabi aus den Paketquellen hatte ich verwendet (das war eine 4.8.1), das hat aber nicht funktioniert. Das reparieren von internen Headerfiles hatte ich mich nicht lange angetan.
Daher lieber den Compiler von [3] nehmen, der wird offenbar von ARM-Mitarbeitern gepflegt, und funktioniert. Außerdem ist das eine 5.2.1. Probiert nun aus, ob der Compiler gefunden wird, bspw. so: arm-none-eabi-gcc --version .
Als nächstes braucht ihr den ChibiOS/RT Quellcode. Ich habe den recht veralteten Code aus dem Artikel genommen, der ein vorbereitetes Makefile für den Pi zu bieten hat. Im offiziellen Code habe ich das nicht gefunden. Zum Laden des Quellcodes wird git benötigt. git clone https://github.com/steve-bate/ChibiOS-RPi
Nun navigiert ihr in das Verzeichnis demos/ARM11-BCM2835-GCC/ und ruft make. Wenn alles gut geht, solltet ihr jetzt im build-Ordner eine Datei namens ch.bin haben. Kopiert diese Datei auf eine SD-Karte mit dem Namen kernel.img, wo bereits ein Raspbian installiert ist. Die alte kernel.img solltet ihr sicherheitshalber kopieren, wenn ihr das Linux wieder benutzen wollt.
Für die Kommunikation mit ChibiOS/RT wird eine serielle Verbindung benötigt, bspw. mit dem Adafruit TTL-Kabel [4]. Verbindet das Kabel wie unter [5] dargestellt. Startet in einem Terminal die serielle Konsole: sudo screen /dev/ttyUSB0 115200
Schaltet den Pi an, indem ihr entweder das rote Kabel an den GPIO-Pin anschließt, oder das Stromkabel des Pi an den Micro-USB-Anschluss. Ihr solltet im Terminalfenster die Kommandozeile von ChibiOS/RT vorfinden. Mit dem Befehl help listet euch das Betriebssystem die (wenigen) Befehle auf.
ChibiOS/RT Shell
ch> help
Commands: help exit info systime reboot
ch> info
Kernel: 2.5.1unstable
Compiler: GCC 5.2.1 20151202 (release) [ARM/embedded-5-branch revision 231848]
Architecture: ARM11
Core Variant: ARM1176JZF-S
Port Info: Pure ARM mode
Platform: BCM2835
Build time: Mar 17 2016 - 13:11:12
ch> systime
8434
ch>
Nun könnt ihr anfangen für das Echtzeitbetriebssystem Programme zu entwickeln. Dafür müsst ihr das Betriebssystem immer wieder neu bauen, aber das ist nicht sonderlich langwierig.
[1] http://www.chibios.org
[2] http://www.stevebate.net/chibios-rpi/GettingStarted.html
[3] https://launchpad.net/gcc-arm-embedded
[4] https://www.adafruit.com/products/954
[5] https://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/connect-the-lead