© Harry Broeders.
In dit practicum maken we gebruik van het real-time OS QNX Neutrino. Dit real-time OS is speciaal ontworpen om gebruikt te worden voor embedded systemen. Wij draaien QNX op het practicum op een virtuele machine van VMware, de VMware Player, gewoon op PC's (lekker goedkoop) maar je moet je voorstellen dat de ontwikkelde software uiteindelijk als een embedded applicatie moet draaien. QNX Neutrino en de bijbehorende ontwikkelomgeving QNX Momentics zijn gratis te downloaden en ook thuis prima te gebruiken. Ik raad je sterk aan om zelf ook thuis met QNX aan de slag te gaan!
Let op: QNX is niet meer echt real-time als we QNX op een virtuele machine draaien. De volgorde waarin de QNX processen worden uitgevoerd is echter nog wel deterministich (voorspelbaar).
QNX is IEEE POSIX 1003.1 compatible. IEEE POSIX 1003.1 is een standaard voor UNIX systemen. Bijna alles wat je leert over QNX kun je dus ook toepassen op Linux of elk ander UNIX systeem. QNX implementeert ook de real-time faciliteiten uit de IEEE POSIX 1003.1 standaard, de meeste andere UNIX systemen (inclusief Linux) implementeren deze real-time faciliteiten niet. Er zijn wel enkele real-time versies van Linux beschikbaar maar ook deze zijn (tenminste degene die bij mij bekend zijn) niet POSIX compatible. Een ander bekend POSIX compatible RTOS is VxWorks.
In lokaal D1.049 is op elke PC de VMware player met een QNX Neutrino image beschikbaar. Alle files die je daar opslaat blijven echter niet bewaard! Je kunt je files opslaan op een USB memory stick of op je mail.
Doordat QNX POSIX compatible is kun je alle gebruikelijke Linux commando's gebruiken. Een goede inleiding in het gebruik van UNIX (= Linux = QNX) kun je vinden op: http://www.cs.duke.edu/csl/docs/unix_course/intro-1.html. Je kunt onder QNX meerdere virtuele terminals openen. In een terminal window:
man
(manual) commando echter niet (wel
een vergelijkbaar commando use
). QNX heeft ook veel grafische programma's waaronder een File Manager. Deze programma's kun je via de Launch button (waarschijnlijk heeft Microsoft de Start geregistreerd ;-) of via de rechter knoppenbalk opstarten. Enkele handige sneltoetsen:
Je kunt in QNX software ontwikkelen in C/C++ op verschillende manieren:
vi
en gcc
/g++
.Als je ervaring hebt met vi
en het prettig vindt om command
line tools te gebruiken dan raad ik je aan om vi te gebruiken. Als je ervaring
hebt met Eclipse dan raad ik je aan om Momentics te gebruiken. Een korte
handleiding voor het gebruik van Momentics kun je hier vinden. Als je geen ervaring
hebt met vi of Eclipse dan raad ik je aan om Workspace te gesbruiken.
Het Workspace programma bestaat uit een code editor, html browser en een koppeling met sh, make, gdb en ctags. De kleuren moet je even aan wennen (of aanpassen via Edit, Preferences menu). Tips bij het gebruik van Workspace:
/root/rtsyst/opdracht1/test.c
werkt prima maar
/root/rtsyst/opdracht 1/test.c
niet. Opdracht 1b.Download het in de theorie behandelde programma voor het aanmaken van threads in POSIX met parameteroverdracht: pthread.c met de bijbehorende makefile. Laad dit programma in Momentics of Workspace en test het programma. Voeg nu nog een thread toe aan dit programma. Deze thread moet 40x telkens na 5 ms de boodschap "Hallo\n" op het scherm zetten. Pas het programma zodanig aan dat alle 3 de threads dezelfde code (functie) gebruiken. |
Het is belangrijk om QNX na afloop netjes af te sluiten. Kies in QNX voor Lauch -> Log Out -> Shut Down. In VMWare Player (na Ctrl+Alt) kan je nu de virtuele machine uitzetten d.m.v. VM -> power -> Power Off. Wanneer je de volgende keer de image opent zal QNX booten. Bij Login vul je "root" in. Een paswoord is niet nodig. Toets daarna "ph" in voor de grafische user interface (photon).