© 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. QNX implementeert ook de real-time faciliteiten uit deze 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 de lokalen D2.003 en 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 via scp (secure copy) opslaan op je H:\ drive. Dit wordt verderop uitgelegd. Maar het is waarschijnlijk eenvoudiger om gebruik te maken van een USB memory stick.
Doordat QNX POSIX compatible is kun alle commando's die je bij het Linux practicum hebt geleerd toepassen. Een goede inleiding in het gebruik van UNIX (= Linux = QNX) kun je vinden op: http://8help.osu.edu/wks/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
).
Opdracht 1a.Start de VMware player in lokaal D2.003 of D1.049 en start de QNX 6.3.2 image. In deze image is QNX al gestart (je bent ingelogd als root) en is alle benodigde software al geïnstalleerd.
Open een virtual terminal en probeer een paar van de bekende Linux commando's.
Maak indien nodig gebruik van de helpfiles. Maak een directory
mkdir eswe1
Je kunt nu in een keer dit directory naar je scp -r eswe1 EDU-jouwnaam@ssh-gw.hhs.nl:
Voor The authenticity of host 'ssh-gw.hhs.nl (145.52.89.10)' can't be established. Dit is een onderdeel van het SSH protocol en bedoeld om te controlleren of je echt met de juiste server praat. Meer info vind je hier: http://winscp.net/eng/docs/ssh#verifying_the_host_key. Beantwoord deze vraag met yes. Vervolgens wordt om je paswoord gevraagd.
Ook vanaf thuis kun je jouw
Zoek je nog een VCP (Vrij Credit Point) opdracht? Ik zoek nog iemand die wil uitzoeken of er een grafische sftp client voor QNX beschikbaar is. Of die anders een eenvoudige grafische applicatie kan schrijven om, met 1 druk op de knop, je files van een QNX machine op te slaan op je H:\ drive (en weer te terug te zetten).
Verwijder nu het rm -r eswe1 Aan het eind van elk practicum moet je dus zelf je files opslaan en aan het begin van het volgende practicum kun je die files dan weer terugzetten. Tip: QNX kent net zoals Windows en Linux "command completion" (commado's en filenames worden automatisch afgemaakt) alleen gebruikt QNX hiervoor niet de TAB toets maar de ESC toets. Je kunt bestanden die je wilt bewaren ook op je eigen USB memory stick opslaan. De image is al zo ingesteld dat USB apparaten, inclusief memory sticks, automatisch worden herkend door QNX. Het is echter wel soms nodig het USB apparaat eerst af te melden in je eigen OS (in ieder geval onder windows) aangezien de VMWare player en je eigen OS niet gelijktijdig gebruik kunnen maken van hetzelfde USB apparaat. Voorbeeld van het gebruik van een memory stick:
|
De ontwikkeltools van QNX (Momentics) zijn gebaseerd op de bekende GNU tools http://www.gnu.org. Bijna alles wat je leert over QNX kun je dus ook toepassen op Linux of elk ander UNIX systeem.
QNX heeft ook veel grafische programma's. Deze programma's kun je via de Launch button (waarschijnlijk heeft Microsoft de Start geregistreerd ;-) of via de rechter knoppenbalk opstarten. Enkele handige sneltoetsen:
QNX heeft ook een grafische File Manager:
De webbrowser van QNX heet Voyager. In plaats van Voyager kun je ook (beter) gebruik maken van de Mozilla browser.
Voor het ontwikkelen van software kun je gebruik maken van de op Eclipse gebaseerde IDE genaamd Momentics. Een korte handleiding kun je hier vinden.
Voor het ontwikkelen van software kun je eventueel ook gebruik maken van het programma Workspace. Dit 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).
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 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. |