Cw3 8 id 123291 Nieznany

background image

Ć

wiczenie 3

Pakiet QNX Momentics IDE 4.7

Instalacja i funkcjonowanie systemu

Instalujemy środowisko tworzenia aplikacji dla systemów czasu rzeczywistego Momentics

IDE. Pakiet będzie pracował w systemie Windows – system QNX realizujący nasze zadania dzia-
łający na maszynie wirtualnej stanowi target – cel i tam będziemy uruchamiali nasze aplikacje.

Czynności po instalacji:

1.

Startujemy QNX w maszynie wirtualnej.

2.

Badamy w Photonie stan konfiguracji sieci: ConfigureNetwork

zakładka Device:

DHCP , pole "enable device" zaznaczone

zakładka Network:

Host: localhost
Domain: localdomain
Gateway (brama): jaki

ś

IP

Name Server: ten sam IP

3.

W terminalu badamy IP:

#ifconfig

powinniśmy otrzymać odpowiedź:

status: active

inet

IP2

4.

W terminalu badamy ping do bramy :

#ping IP
#ping IP2

po uwa

ż

nym wpisaniu obu IP konfiguracyjnych obserwujemy poł

ą

czenie – zwracane pakiety

kontrolne w krótkich czasach

5.

W terminalu QNX uruchamiamy proces połączenia:

#qconn

6.

W Windows z wiersza poleceń cmd dowiadujemy się jaki jest adres IP dla WMWare8 i
sprawdzamy do tego adresu ping w terminalu (można również sprawdzić ping z wiersza
cmd do IP2).

7.

Uruchamiamy pakiet Momentics, zwracając uwagę na lokalizację Workbench.

8.

Po zamknięciu ekranu powitalnego poznajemy środowisko programistyczne.

Pakiet Momentics

1.

Perspektywa C/C++ (ikony w prawym górnym rogu).

2.

Tworzymy nowy projekt QNX C korzystając z menu File.

background image

3.

W pierwszym kroku nadajemy nazwę projektowi.

4.

W drugim kroku zaznaczamy x86 (Little Endian) w zakładce Built variants

5.

Wykonujemy Built projektu w Project Explorer z menu kontekstowego projektu lub z
menu głównego.

6.

W menu Run - Run configuration… ustawiamy:

a.

tworzymy nową konfigurację w kontekście C/C++ QNX (ikonka ),

b.

wybieramy nasz projekt i aplikację,

c.

dodajemy nowy target i wpisujemy adres

IP2

– karty wirtualnej systemu QNX.

Można również tworzyć target z zakładki Target Nawigator na dole ekranu.

7.

Jeśli mamy w edytorze przykładowy kod źródłowy:

#include

<stdlib.h>

#include

<stdio.h>

int

main(

int

argc,

char

*argv[]) {

printf

(

"

Welcome to the QNX Momentics IDE\n

"

);

return

EXIT_SUCCESS;

}

możemy uruchomić projekt – z menu Run. Po prawidłowym ustaleniu wszystkich
parametrów w konsoli otrzymamy komunikat powitalny Welcome

8.

Po każdej zmianie w kodzie wykonywać kompilację programu (Built). Błędy obserwu-
jemy w konsoli lub w zakładce Problems.

background image

9.

Zmieniamy perspektywę na QNX system information – możemy tu:

a.

obejrzeć procesy w systemie QNX na Target Nawigatorze i w zakładce System
Sumary,

b.

wybrany proces - Process Information (i jego ewentualne wątki),

c.

obejrzeć informacje o pamięci systemu,

d.

wydruki na konsoli,

e.

przejrzeć system plików w menu Window – Show view – Target file system.

PID

Każdy proces ma swój PID – identyfikator. Możemy go wyświetlić korzystając z funkcji:

int getpid()

Procesy tworzą hierarchię zależności, każdy proces ma swojego rodzica (za wyjątkiem procesu

systemowego procnto o identyfikatorze 1). Identyfikator rodzica można uzyskać za pomocą funkcji:

int getppid()

Tworzenie nowego procesu będącego kopią procesu macierzystego

Proces potomny tworzy funkcja:

int fork()

Proces potomny w momencie utworzenia posiada własny segment kodu, danych i stosu - tworzo-

na jest kopia z procesu macierzystego. Wartości zmiennych w procesie potomnym są takie same jak
w procesie macierzystym przed wykonaniem funkcji fork, lecz potem oba procesy "nie widzą" zmian
dokonywanych przez ich kod.

Funkcja zwraca 0 w kodzie procesu potomnego a PID nowego procesu w procesie macierzystym

(lub -1 gdy nowy proces nie może być utworzony).

Zadania

1.

Zapoznać się ze środowiskiem Momentics. Wykonać proces przykładowy.

2.

Napisać proces, który w pętli wyświetli liczby od 1 do 10. Aby sterować tempem, zastosować w ciele
pętli funkcję:

unsigned int sleep( unsigned int sekundy );

Dłużej trwający proces obserwować w perspektywie QNX System Information. Można zatrzymać pro-
ces przyciskiem w konsoli lub zabić poleceniem kill
w terminalu QNX:

# ps

# kill id_procesu

3.

Wyprowadzić w konsoli PID procesu i PID jego "rodzica".

4.

Napisać program, w którym tworzony jest proces potomny. W kodzie można rozróżniać operacje
procesu macierzystego i potomnego stosując instrukcję if badającą wartość zwróconą przez funkcję
fork
. Wyświetlać PID procesu i PID jego przodka dla obu procesów – macierzystego i potomnego.

5.

Sprawdzić zachowanie wartości zmiennej x w procesie potomnym, zainicjowanej np. z wartością
równą 10 w procesie macierzystym przed utworzeniem procesu potomnego. Zróżnicować zmianę
wartości zmiennej w obu procesach (np. w procesie macierzystym inkrementować, a w potomnym
dekrementować) i sprawdzić niezależność operacji na zmiennej w obu procesach.

6.

Napisać program, w którym w pętli o trzech powtórzeniach tworzony jest proces potomny. Skontro-
lować wyświetlając odpowiednie informacje, ile naprawdę zostanie utworzonych procesów potom-
nych (wyprowadzać w pętli dane procesów).


Wyszukiwarka

Podobne podstrony:
Program cw3 id 395618 Nieznany
prezentacja cw3 id 390345 Nieznany
cw3 id 121260 Nieznany
GRI cw3 id 195767 Nieznany
cw3 3 id 121759 Nieznany
obrobka skrawaniem cw3 id 32808 Nieznany
protokol cw3 id 402726 Nieznany
MelfaMatlab cw3 id 292988 Nieznany
Laboratorium TSS cw3 id 261862 Nieznany
LM cw3 id 271595 Nieznany
MPK cw3 2 id 309149 Nieznany
Elektronika cw3 id 158843 Nieznany
mata zadania cw3 id 765850 Nieznany
cw3 rezystancja id 123348 Nieznany
cw3 i 4 instrukcja id 123316 Nieznany
cw3 ogniwo clarka id 123321 Nieznany
cw3 11 id 123275 Nieznany
Cw3 formularz id 123314 Nieznany
cw3 MiASC AiR id 123320 Nieznany

więcej podobnych podstron