RTSOF Opdracht 1: Inleiding QNX.

© Harry Broeders.

Inleiding QNX.

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:

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 eswe1 met daarin een file hallo.txt met de tekst Hallo:

mkdir eswe1
cd eswe1
echo "Hallo" >hallo.txt
ls
cat hallo.txt
cd ..
ls

Je kunt nu in een keer dit directory naar je H:\ drive kopiëren met het scp commando:

scp -r eswe1 EDU-jouwnaam@ssh-gw.hhs.nl:

Voor jouwnaam moet je uiteraard je eigen inlognaam invullen. De eerste keer dat je verbinding maakt wordt gevraagd:

The authenticity of host 'ssh-gw.hhs.nl (145.52.89.10)' can't be established.
RSA key fingerprint is 49:de:1a:c4:c0:42:d3:7e:6f:7b:85:1e:74:94:4f:87.
Are you sure you want to continue connecting (yes/no)?

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 H:\ drive benaderen!

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 eswe1 directory en zet daarna de files die je op je H:\ drive hebt opgeslagen weer terug:

rm -r eswe1
ls
scp -r EDU-jouwnaam@ssh-gw.hhs.nl:eswe1 .
ls
cat eswe1/hallo.txt

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:

  • Zorg dat je in QNX bent (Ctrl+G, of klik op het scherm van QNX, of klik op de fullscreen knop van VMware).
  • Stop het USB apparaat in de USB poort. Als er melding wordt gemaakt van een nieuw USB device, klik op OK. (Het is niet erg als het niet zo is)
  • Ga naar Zijbalk -> + Utilities -> Filemanager.
  • Ga vanuit de root een map omhoog en kies daarna FS. De USB stick moet er nu tussen staan.
  • Als dit niet zo is probeer dan het volgende:
    • Kijk in je eigen OS (bijvoorbeeld windows) of de memory stick daar wel zichtbaar is.
    • Klik weer op de VMware Player en ga naar VM -> Removable Devices zoek de stick en klik op Connect (disconnect from host)


      -
    • In windows verschijnt er een melding dat de hardware veilig verwijderd kan worden. (uiteraard moet je de stick niet verwijderen).
    • In VMware Player moet de memory stick nu wel zichtbaar zijn.

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.

Opdracht 1a (vervolg).

Schrijf een klein C of C++ programma met behulp van ped (de standaard QNX editor) of met vi. Een ANSI C programma moet de extensie ".c" krijgen en een ANSI C++ programma de extensie ".cpp". Compileer het programma met gcc (voor C programma's) of g++ (voor C++ programma's) en run het gecompileerde programma a.out.

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.

Verder met opdracht 2...