Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
UNIVERZA V LJUBLJANI
FAKULTETA ZA ELEKTROTEHNIKO
MATEJ RAKOVEC
UNIVERZALNI PRESKUŠEVALNIK
VGRADNIH SISTEMOV
UNIVERZITETNO DIPLOMSKO DELO
Mentor: doc. dr. Boštjan Murovec
Ljubljana, september 2007
Zahvala
Najprej se želim zahvaliti mentorju doc. dr. Boštjanu Murovcu, ki je strokovno vodil potek
diplomskega dela in je s svojimi nasveti prispeval k dokončanemu oblikovanju diplomskega
dela.
Zahvaljujem se tudi zaposlenim v podjetju Hermes Softlab d.d., še posebej
Mladenu Barjaktareviču in Petru Marinšku za pomoč pri programiranju.
Zahvaljujem se tudi staršem in sestri Mojci za vso podporo pri študiju.
i
Kazalo
1 Uvod .............................................................................................................................. 1
2 Tema diplomskega dela ................................................................................................. 2
2.1 Opis univerzalnega preskuševalnika vgradnih sistemov............................................ 2
3 Splošno o testiranju....................................................................................................... 4
3.1 Namen testiranja ....................................................................................................... 4
3.2 Vrste testov ................................................................................................................ 5
3.2.1 Test enote (ang. Unit Testing)................................................................................ 6
3.2.2 Test integracije (ang. Integration Testing) ............................................................ 6
3.2.3 Test sistema (ang. System Testing) ........................................................................ 6
3.2.4 Test sprejemljivosti (ang. Acceptance Testing) ...................................................... 6
3.2.5 Test bele škatle (ang. White Box Testing).............................................................. 7
3.2.6 Test črne škatle (ang. Black Box Testing) ............................................................. 7
3.2.7 Test sive škatle (ang. Gray box testing).................................................................. 8
4 Strojna oprema.............................................................................................................. 9
5 I2C vodilo..................................................................................................................... 11
5.1 Pisanje v podrejeno napravo.................................................................................... 12
5.2 Branje iz podrejene naprave .................................................................................... 13
6 Splošno o računalniških omrežjih ............................................................................... 15
6.1 Fizični sloj (ang. Physical Layer) ............................................................................ 16
6.2 Podatkovni sloj ali linijski sloj (ang. Data Link Layer) ........................................... 16
6.3 Mrežni sloj (ang. Network Layer)............................................................................ 17
6.4 Prenosni sloj (ang. Transport Layer) ...................................................................... 17
6.5 Pogovorni sloj (ang. Session Layer) ........................................................................ 18
6.6 Predstavitveni sloj (ang. Presentation Layer) .......................................................... 18
6.7 Sloj uporabe (ang. Application Layer)..................................................................... 18
7 Arhitektura omrežja internet ....................................................................................... 19
8 Model in arhitektura uporabljenega omrežja .............................................................. 20
8.1 Arhitektura odjemalske aplikacije ........................................................................... 21
8.2 Arhitektura strežniške aplikacije ............................................................................. 22
9 Splošno o vgradnih sistemih........................................................................................ 23
9.1 Definicije vgradnih sistemov ................................................................................... 23
10 Koncepti operacijskega sistema vgradnih sistemov ................................................. 25
10.1 Opravila (ang: Tasks).............................................................................................. 25
ii
10.2 Semaforji ................................................................................................................. 25
10.3 Sporočilna vrsta (ang. Message Queue) .................................................................. 26
11 Uporabljeni koncepti v jeziku C#............................................................................. 28
11.1 Podatkovni razred ArrayList.................................................................................... 28
11.2 Razpršena tabela (ang. Hashtable) .......................................................................... 29
11.3 Sklad (ang. Stack).................................................................................................... 29
11.4 Delegati (ang. Delegates)......................................................................................... 29
11.5 Nit (ang. Thread) ..................................................................................................... 29
12 Skriptni programski jezik ETSL .............................................................................. 31
12.1 Velike in male črke ter presledki in prazne vrstice................................................... 31
12.2 Številke in spremenljivke ......................................................................................... 31
12.3 Komentar ................................................................................................................. 31
12.4 Logični operatorji .................................................................................................... 32
12.5 Ukazi skriptnega programskega jezika ETSL.......................................................... 32
12.5.1 Dekleracija spremenljivk ..................................................................................... 32
12.5.2 Beleženje (ang. Log) ............................................................................................ 33
12.5.3 Zakasnitev............................................................................................................ 34
12.5.4 Shranjevanje vrednosti v spremenljivko .............................................................. 34
12.5.5 Seštevanje ............................................................................................................ 35
12.5.6 Odštevanje ........................................................................................................... 35
12.5.7 Premik bitov v levo............................................................................................... 36
12.5.8 Premik bitov v desno ............................................................................................ 36
12.5.9 Množenje ............................................................................................................. 37
12.5.10 Deljenje............................................................................................................ 38
12.5.11 Pogojni (IF) stavek .......................................................................................... 38
12.5.12 Oznaka (ang. Label)......................................................................................... 41
12.5.13 GOTO stavek.................................................................................................... 42
12.5.14 GPIO ukazi (ang. General Purpose Input Output, GPIO)............................... 42
12.5.14.1 Branje GPIO sponk.......................................................................................... 42
12.5.14.2 Postavitev GPIO sponk na logični nivo 1......................................................... 44
12.5.14.3 Postavitev GPIO sponk na logični nivo 0......................................................... 45
12.5.15 I2C ukazi .......................................................................................................... 46
12.5.15.1 I2C WRITE...................................................................................................... 46
12.5.15.2 I2C READ........................................................................................................ 47
iii
13 Grafični uporabniški vmesnik ................................................................................. 48
13.1 Inicializacijski zavihek ............................................................................................ 48
13.2 GPIO zavihek .......................................................................................................... 49
13.3 I2C zavihek.............................................................................................................. 50
13.4 Zagon ETSL programa............................................................................................ 51
14 Sestavljanje in razčlenjevanje sporočil odjemalca in strežnika ............................... 52
14.1 Sestavljanje sporočila prehoda na strani odjemalca................................................ 53
14.2 Razčlenjevanje sporočila prehoda na strani strežnika............................................. 54
14.3 Sestavljanje sporočila prehoda na strani strežnika.................................................. 56
14.4 Razčlenjevanje sporočila prehoda na strani odjemalca........................................... 57
15 Realizacija univerzalnega preskuševalnika ............................................................. 58
15.1 Program na strani odjemalca .................................................................................. 58
15.1.1 Funkcija prvo predprocesiranje........................................................................... 60
15.1.2 Funkcija drugo predprocesiranje ........................................................................ 62
15.1.2.1 Funkcija pregled kode (prvi del) ...................................................................... 64
15.1.2.2 Funkcija pregled kode (drugi del).................................................................... 66
15.1.2.3 Funkcija pregled kode (tretji del)..................................................................... 68
15.1.2.4 Funkcija pregled kode (četrti del) .................................................................... 70
15.1.3 Funkcija izvajanje ETSL programa (prvi del) ..................................................... 72
15.1.4 Funkcija izvajanje ETSL programa (drugi del)................................................... 73
15.2 Program na strani strežnika .................................................................................... 74
15.2.1 Glavno opravilo ................................................................................................... 74
15.2.2 GPIO opravilo ..................................................................................................... 76
16 Preskus sistema ....................................................................................................... 77
16.1 ETSL program......................................................................................................... 77
16.1.1 Razlaga ETSL programa ..................................................................................... 78
16.1.2 Vrstice v beležki ................................................................................................... 78
17 Zaključek................................................................................................................. 79
18 Literatura ................................................................................................................ 80
iv
Kazalo tabel Tabela 1: logični operatorji .................................................................................................. 32 Tabela 2: tabela napak.......................................................................................................... 78
v
Kazalo slik
Slika 1: sistem zaporedno vezanih naprav, preslikano iz [3: str. 14]........................................ 1 Slika 2: konceptualna shema univerzalnega preskuševalnika vgradnih sistemov..................... 3 Slika 3: primerjava cene testiranja od vhodne kontrole do kupca, preslikano iz [6]................. 4 Slika 4: delitev stroškov testiranja za sedemletno obdobje, preslikano iz [6]........................... 5 Slika 5: časovni potek različnih vrst testiranja ........................................................................ 5 Slika 6: poti pri testu bele škatle, preslikano iz [4: str. 141] .................................................... 7 Slika 7: možnost uporabe testa črne škatle pri različnih testih, preslikano iz [4: str. 20].......... 7 Slika 8: razvojna plošča M52233DEMO ................................................................................ 9 Slika 9: konceptualna shema I2C vodila, preslikano iz [10: str. 8]......................................... 11 Slika 10: pisanje v podrejeno I2C napravo ............................................................................ 13 Slika 11: branje iz podrejene I2C naprave............................................................................. 14 Slika 12: referenčni model ISO/OSI, preslikano iz [12: str. 17] ............................................ 15 Slika 13: model in arhitektura omrežja internet, preslikano iz [12: str. 25]............................ 19 Slika 14: arhitektura omrežja univerzalnega preskuševalca vgradnih sistemov ..................... 21 Slika 15: arhitektura odjemalske aplikacije .......................................................................... 22 Slika 16: arhitektura strežniške aplikacije............................................................................. 22 Slika 17: vgradni sistemi v domačem okolju, preslikano iz [2] ............................................. 23 Slika 18: vgradni sistemi delovnih okolij, preslikano iz [2] .................................................. 23 Slika 19: kopiranje podatkov v vrsto in iz nje, preslikano iz [2]............................................ 26 Slika 20: inicializacijski zavihek .......................................................................................... 48 Slika 21: GPIO zavihek........................................................................................................ 49 Slika 22: I2C zavihek ........................................................................................................... 50 Slika 23: odpiranje in zagon ETSL programa ....................................................................... 51 Slika 24: del arhitekture odjemalske in strežniške aplikacije ................................................ 52 Slika 25: sestavljanje sporočila na strani odjemalca.............................................................. 53 Slika 26: razčlenjevanje sporočila na strani strežnika ........................................................... 55 Slika 27: sestavljanje sporočila na strani strežnika................................................................ 56 Slika 28: razčlenjevanje sporočila na strani odjemalca ......................................................... 57 Slika 29: program na strani odjemalca.................................................................................. 59 Slika 30: funkcija prvo predprocesiranje ............................................................................. 61 Slika 31: funkcija drugo predprocesiranje ........................................................................... 63 Slika 32: funkcija pregled kode (prvi del)............................................................................. 65 Slika 33: funkcija pregled kode (drugi del)........................................................................... 67 Slika 34: funkcija pregled kode (tretji del)............................................................................ 69 Slika 35: funkcija pregled kode (četrti del)........................................................................... 71 Slika 36: funkcija izvajanje ETSL programa (prvi del)......................................................... 72 Slika 37: funkcija izvajanje ETSL programa (drugi del) ....................................................... 73 Slika 38: program na strani strežnika.................................................................................... 75 Slika 39: GPIO opravilo....................................................................................................... 76 Slika 40: testiranje z univerzalnim preskuševalnikom vgradnih sistemov ............................. 77
vi
Seznam akronimov in izrazov
ETSL – ime skriptnega programskega jezika, ki smo ga razvili v okviru diplomskega
dela (ang. Embedded Testing Script Language).
ISO – mednarodna organizacija za standarde (ang. International Standards
Organization).
OSI – skupina za povezovanje odprtih sistemov (ang. Open Systems Interconnection),
uveljavlja standarde za odprto zgradbo komunikacije (model ISO/OSI).
ISO/OSI – model povezljivosti odprtih sistemov po ISO.
IC – integrirano vezje (ang. Integrated Circuit).
I2C – standard prenosa podatkov med integriranimi vezji znotraj naprave (ang.
Inter - IC - Control).
GPIO – splošnonamenski vhodi in izhodi (ang. General Purpose Input Output).
FLASH pomnilnik – električno izbrisljiv programirljiv pomnilnik, pri katerem je
mogoče zapisati ves pomnilniški blok naenkrat in se navadno uporablja v prenosnih
napravah, npr. USB-ključ, mobilni telefon. Po prekinitvi napajalne napetosti se
podatki ohranijo.
RAM pomnilnik – (ang. Random Access Memory) pomnilnik za branje in pisanje. Po
prekinitvi napajalne napetosti se podatki izbrišejo.
Zlog – skupek 8 bitov (ang. byte).
PHY – vezje ali del integriranega vezja, ki skrbi za fizični pretok podatkov po mediju.
Half Duplex – prenos podatkov v obe smeri, vendar ne istočasno.
vii
Povzetek
Življenja si ne moremo predstavljati brez vgradnih sistemov, ki so sestavni del našega
domačega in delovnega okolja. Najbolj poznani so mobilni telefoni, tiskalniki, MP3
predvajalniki itd. Vsakdo si želi njihovo brezhibno delovanje. Pomembno vlogo pri manjšanju
verjetnosti nepravilnega delovanja teh izdelkov ima njihovo testiranje, saj na ta način
pridobivamo informacije o kakovosti izdelka. Dobro testirani in s tem zanesljivi izdelki
vplivajo na ugled proizvajalca in zadovoljstvo kupca. Poleg tega zgodnje odkrivanje napak,
vpliva na zmanjševanje stroškov odpravljanja le-teh.
Velikokrat se pripeti, da se napaka vgradnega sistema zgodi šele, ko sistem obratuje daljše
časovno obdobje. Takšne napake so običajno težko ponovljive, ker ne poznamo njihovega
vzroka. Če bi želeli, da delavec testira takšno napravo, bi jo moral opazovati noč in dan ter
beležiti vsako najmanjšo spremembo, kar je z ročnim testiranjem nemogoče. Zato se pojavi
želja po avtomatiziranem preskuševalniku omenjenih sistemov, ki bi poleg testiranja beležil
spremembe, določene s strani operaterja. Avtomatiziran preskuševalnik bi omogočil teste pod
različnimi pogoji, kot so visoka ali nizka temperatura, vlaga itd. Želja je tudi, da bi operater
porabil čim manj časa za programiranje in konfiguracijo testa. Ročno izvajanje testov in
beleženje sprememb je odvisno od subjektivnih faktorjev preskuševalca. Uvedba
avtomatiziranega izvajanja testov in beleženja sprememb se izvaja brez preskuševalca s čimer
se manjša možnost človeških napak. Zaradi omenjenih razlogov se je pokazala težnja za
razvoj avtomatiziranega preskuševalnika vgradnih sistemov s skriptnim programskim
jezikom, kar zajema diplomsko delo.
Ključne besede: univerzalni preskuševalnik, avtomatiziran preskuševalnik, vgradni sistemi,
skriptni jezik, ETSL
viii
Abstract
Every day, people throughout the world use embedded systems without even knowing it.
Embedded systems are presented in our home and work environment. Embedded systems in
the home environment assume many forms, including security systems, cable and satellite
boxes for televisions, home theater systems, and telephone answering machines. Embedded
systems have also changed the way people conduct business. Perhaps the most significant
example is the Internet, which is really just a very large collection of embedded systems that
are interconnected using various networking technologies. We want, that embedded systems
work perfectly, because it is difficult to find a segment of daily life that does not involve
embedded systems in some way.
Therefore, testing embedded systems has a significant influence on devices' quality. Devices
of a sufficient level of quality have increase reputation of manufacturer and satisfaction of
customers. Moreover, early detection of defects decrease repairation costs.
Sometimes, defects appear when device works for a long period of time possibly under
different circumstances such as low or high temperature, moisture,... These types of defects
are very difficult to predict, which is the reason for automation of tests, where many
environmental conditions can be automatically simulated. Automated logging of defects
together with the description of faulty circumstances is a necessary ingredient of such system.
Manual testing and logging depends on subjective factors of the tester. With device test
automation, the testing procedure becomes independent of tester's subjectives factors.
The purpose of the thesis is to develop automative Embedded Testing System with scripting
programming language for easy developing of the test procedures.
Key words: universal testing, automative testing, embedded systems testing, scripting
language, ETSL
1
1 Uvod
V poznih 70. letih prejšnjega stoletja je bila obdelava podatkov možna le s tako imenovanimi
'super računalniki'. Nato so se v 80. letih pojavili osebni računalniki. Trend zmanjševanja se je
nadaljeval. Ko so bile naprave za obdelavo podatkov dovolj majhne, se je pričelo graditi
sisteme modularno, z vgrajevanjem manjših naprav [1: str. 1]. Napravo, vgrajeno v večji
sistem, ki opravlja točno določeno funkcijo, imenujemo vgradni sistem (ang.
Embedded System) [2].
Za brezhibno delovanje sistema, je potrebno tudi brezhibno delovanje vgradnih sistemov, ki
ga sestavljajo. Sistem, sestavljen iz vgradnih sistemov, lahko modeliramo kot sistem
zaporedno vezanih naprav kar prikazuje slika 1. Pri obratovanju več zaporedno vezanih
naprav [3: str. 14], povzroči izpad katerekoli naprave izpad celotnega sistema. Na sliki 1 je
iPNν verjetnost preživetja pripadajoče naprave skozi neko časovno obdobje T.
Slika 1: sistem zaporedno vezanih naprav, preslikano iz [3: str. 14]
Naj bo PSν verjetnost preživetja sistema skozi neko časovno obdobje T. Sedaj lahko zapišemo
enačbo za izračun PSν .
∏=
=n
ii
1PNPS νν (1)
Kot je razvidno iz enačbe 1, je verjetnost preživetja celotnega sistema enaka produktu
verjetnosti preživetja posameznih naprav [3: str. 15]. To pomeni, da se verjetnost preživetja
celotnega sistema z večanjem števila naprav zmanjšuje. Zato je potrebno vgradne sisteme
testirati. Z odpravljanjem tako ugotovljenih napak se poveča verjetnost preživetja posameznih
naprav in sistema.
Obstaja več vrst testov, ki se uporabljajo pri testiranju kot so npr. test bele škatle [4], test črne
škatle [4] in test sive škatle [4], o katerih govorimo v sekciji 3.
2
2 Tema diplomskega dela
Tema diplomskega dela izhaja iz potrebe po avtomatiziranem testiranju vgradnih sistemov [2]
v podjetju HERMES SoftLab d.d. Pri testiranju, je težko ugotoviti napake, ki se pojavljajo
zaradi nepredvidljivih dejavnikov, kot so temperatura, vlaga itd. (npr. napaka se lahko pojavi
samo pri temperaturi 40 °C in 66 % vlagi). Z izdelavo avtomatiziranega preskuševalnika
vgradnih sistemov bi omogočili avtomatizirano spreminjanje dejavnikov npr. temperature,
vlage itd. ter beleženje, pri katerih vrednostih le-teh prihaja do napak. Da bi bilo
programiranje testnih postopkov hitro in enostavno, se je pokazala težnja po razvoju
skriptnega programskega jezika, kar je osrednji del diplomskega dela.
2.1 Opis univerzalnega preskuševalnika vgradnih sistemov
Slika 2 prikazuje osebni računalnik in razvojno ploščo M52233DEMO, ki sta povezana preko
Etherneta in predstavljata strojno opremo univerzalnega preskuševalnika vgradnih sistemov.
Povezava osebnega računalnika s ploščo M52233DEMO deluje po principu odjemalec -
strežnik [5: str. 646, 648], pri čemer je osebni računalnik odjemalec, razvojna plošča pa
strežnik. Vgradni sistemi, ki se testirajo, so povezani preko I2C modula ali preko
splošnonamenskih vhodov in izhodov (ang. General Purpose Input Output, v nadaljevanju
GPIO modul).
Za preskuševalnik smo razvili skriptni jezik z imenom ETSL (ang. Embedded Testing Script
Language), v katerem tester piše procedure testiranja. Osebni računalnik izvaja ETSL
program. Vrstice programa se prevedejo v ukaze, ki jih razume strežnik na razvojni plošči; ti
ukazi se pošiljajo preko Ethernet protokola. Na podlagi sprejetega ukaza strežnik izvede
želeno akcijo in pošlje odgovor osebnemu računalniku, če to zahteva ukaz.
3
Slika 2: konceptualna shema univerzalnega preskuševalnika vgradnih sistemov
Prikazovalne obrazce in skriptni jezik ETSL smo realizirali v programskem jeziku C# [5, 14,
15, 16, 17, 18, 19, 20, 21, 22] na osebnem računalniku. Razvojno ploščo M52233DEMO smo
programirali v programskem jeziku C [13, 23].
4
3 Splošno o testiranju
Testiranje je proces ocenjevanja kakovosti, uporabnosti, storilnosti in robustnosti aplikacije,
strojne opreme ali celotnega sistema. Testiranje je postopek tehničnega raziskovanja,
izvršenega v korist proizvajalca, z namenom pridobivanja informacij o kakovosti izdelka, ki
se proizvaja. Dobro testirani izdelki vplivajo na ugled proizvajalca. Test vsebuje oceno
primerjave stanja izdelka s specifikacijo. Testiranje se lahko izvaja v preventivne namene ali
v namene odkrivanja in popravljanja napak [4].
Formalna definicija testiranja je podana s standardom IEEE 610.12-1990
(ang. IEEE Standard Glossary of Software Engineering Terminology), ki pravi naslednje.
Testiranje je proces obratovanja sistema ali komponent pod specifičnimi
pogoji s spremljanjem ali beleženjem rezultatov in ocenjevanjem
pojavov sistema ali komponent [4: str. 2].
3.1 Namen testiranja
Slika 3 prikazuje eksponencialno rast stroškov odpravljanja okvare, v odvisnosti od mesta
oziroma časa njenega odkritja. Če je napaka najdena pri vhodni kontroli, ima popravilo take
napake minimalne stroške, medtem ko ugotavljanje in odpravljanje napake pri končnem
uporabniku ceno popravila močno poveča [6].
Slika 3: primerjava cene testiranja od vhodne kontrole do kupca, preslikano iz [6]
5
Slika 4 podaja tipično delitev stroškov podjetja za testiranje in opremo za testiranje, za
sedemletno obdobje [6], z linearno časovno porazdelitvijo stroškov prek sedmih let. Pri
iskanju napak med servisom, stroški bliskovito naraščajo, zato je smiselno razmišljati o
avtomatiziranem testiranju, da bi našli napako že v vhodni kontroli.
Slika 4: delitev stroškov testiranja za sedemletno obdobje, preslikano iz [6]
3.2 Vrste testov
Poznamo naslednje vrste testov [4: str. 9]:
1. test enote,
2. test integracije,
3. test sistema,
4. test sprejema.
Slika 5 prikazuje tipično časovno zaporedje izvajanja teh testov.
Slika 5: časovni potek različnih vrst testiranja
6
3.2.1 Test enote (ang. Unit Testing)
Test enote [4: str. 9] je proces vrednotenja posamezne enote. Enota je najmanjši del aplikacije,
ki ga lahko testiramo. Pri programiranju je enota lahko individualni program, funkcija,
podprogram... Pri objektno usmerjenemu programiranju, je najmanjša enota navadno metoda
(ang. Method). Test enote običajno opravljajo strokovnjaki, ki razvijajo enoto in ne ljudje, ki
se ukvarjajo zgolj s testiranjem. Testiranje enote namreč zahteva specifična znanja. V primeru
programske opreme je cilj testiranja enote razdeliti program na enote in dokazati pravilno
delovanje posameznih enot. Test enote mora ustrezati specifikacijam, kar omogoča lažjo
izvedbo testa integracije.
3.2.2 Test integracije (ang. Integration Testing)
Pri testu integracije [4: str 9] je potrebno združiti posamezne enote v podsistem in preveriti
delovanje takega podsistema kot zaključene celote. Možno je, da posamezne enote delujejo
pravilno in da se napake pojavijo šele, ko enote združimo v podsistem. Test integracije
izvajamo po opravljenem testu enot, kar je razvidno s slike 5.
3.2.3 Test sistema (ang. System Testing)
Testiranje sistema [4: str. 10] pomeni spremljanje sistema kot celote in vrednotenje kakovosti,
uporabnosti in storilnosti v skladu z zahtevami. Osredotočiti se je potrebno na napake, ki se
pojavijo na višjem nivoju integracije. Testirajo se vse inegrirane komponente, ki so uspešno
opravile test integracije. Namen testiranja sistema je iskanje napak v sistemu kot celoti in
testiranje delovanja sistema kot celote.
3.2.4 Test sprejemljivosti (ang. Acceptance Testing)
Test sprejemljivosti [4: str. 10] je končni test, pri katerem se preveri, ali so zahteve končnega
uporabnika izpolnjene. Želja kupca je, da bi bil test sprejemljivosti čimbolj obsežen.
7
3.2.5 Test bele škatle (ang. White Box Testing)
Test bele škatle [4: str. 8, 140, 141, 142] je lahko test enote, test integracije ali sistemski test.
Pri testu bele škatle gre za testiranje programskih, električnih itd. poti, za kar so potrebna
specifična znanja npr. programiranja, elektrotehnike itd., saj je potrebno poznavanje vseh
delov programa, vezja itd., ki ga testiramo.
Slabosti
• Število poti je lahko tako veliko, da je nemogoče testirati vse, kar prikazuje slika 6.
Testiranje vseh poti pri testu bele škatle predstavlja podobno problematiko kot
testiranje vseh vhodnih kombinacij pri testu črne škatle (sekcija 3.2.6)..
Slika 6: poti pri testu bele škatle, preslikano iz [4: str. 141]
Test enote je ponavadi najprimernejši za izvajanje po sistemu testa bele škatle.
3.2.6 Test črne škatle (ang. Black Box Testing)
Test črne škatle [4: str. 8, 32: str. 20] se izvaja z vzbujanjem sistema z vhodom, določenim s
strani operaterja. Pri tem se opazuje odziv sistema in če je le-ta v skladu s specifikacijami, je
test črne škatle uspešno izveden.
Test črne škatle lahko izvajajo ljudje, ki se ukvarjajo zgolj s testiranjem. Kot prikazuje slika 7,
je lahko test črne škatle uporabljen pri testu enote, testu integracije, testu sistema in testu
sprejemljivosti.
Slika 7: možnost uporabe testa črne škatle pri različnih testih, preslikano iz [4: str. 20]
8
Večja kot je kompleksnost sistema, programa, vezja, itd., bolj smo prisiljeni testirati po
sistemu črne škatle, ker bi bilo preprosto preveliko poti, da bi jih analizirali po sistemu
testa bele škatle.
Slabosti:
• pri testu črne škatle ne vemo, kolikšen del sistema, programa, vezja, itd. je bilo
stestiranega,
• če bi želela oseba, ki testira, najti vse napake, bi mogla sistem na vhodu vzbujati z
vsemi možnimi kombinacijami vhoda, kar je v večini primerov nemogoče.
Prednosti:
• čeprav je testiranje vseh vhodnih kombinacij v večini primerov nemogoče, lahko
izberemo kombinacije, ki učinkovito odkrivajo napake. Na ta način je možno najti več
napak, kot če bi naključno generirali nabor vhodov.
3.2.7 Test sive škatle (ang. Gray box testing)
Test sive škatle [4: str. 8] se v začetni fazi izvaja kot test bele škatle. V nadaljnji fazi se
test sive škatle izvaja po sistemu testa črne škatle, pri čemer se uporabi v prvi fazi pridobljeno
znanje o sistemu za učinkovitejšo izbiro vzbujanja in posledično testiranja.
9
4 Strojna oprema
Slika 8 prikazuje razvojno ploščo M52233DEMO [7, 24] proizvajalca Freescale
Semiconductor, na kateri je 32 bitni ColdFire mikrokrnilnik. Omenjena razvojno plošča
predstavlja le del univerzalnega preskuševalnika vgradnih sistemov, kar je nazorno prikazano
v sekciji 2.1 (slika 2). Na sliki 8 smo označili priključke, ki smo jih uporabili pri
preskuševalniku. Vključili smo 12 GPIO sponk. Na GPIO sponke od 9 do 12 so že
priključene svetleče diode, zato je smiselno da te sponke opravljajo le funkcijo digitalnega
izhoda. GPIO sponke od 1 do 8 lahko opravljajo funkcijo digitalnega vhoda in izhoda. USB
priključek smo uporabljali za razhroščevanje programov v ozadju
(ang. Background Debug Mode, BDM).
Slika 8: razvojna plošča M52233DEMO
Razvojna plošča ima poleg I2C modula, GPIO modula, Ethernet priključka itd. podprt tudi
posebnonamenski operacijski sistem [8], ki omogoča večopravilno obratovanje v realnem
času in TCP/IP protokolovni sklad [9]. Program, ki se izvaja v mikrokrmilniku, smo napisali
v programskem jeziku C v razvojnem okolju FreeScale CodeWarrior IDE.
10
Glavne značilnosti razvojne plošče M52233DEMO:
• 60 MHz interno vodilo (ang. 60 Mhz Internal Bus),
• zunanji 25 Mhz oscilator,
• 40 GPIO sponk,
• 256 kbyte Flash pomnilnika. To je pomnilnik, v katerega shranjujemo programsko
kodo in konstante, ki se ohranijo tudi po izklopu napajalne napetosti,
• 32 kbyte delovnega pomnilnika. To je pomnilnik, v katerega shranjujemo vrednosti, ki
se spreminjajo med izvajanjem programa. Vrednosti se po izklopu napajalne napetosti
izgubijo,
• RS232 priključek z DB9-S konektorjem,
• programibilni prekinitveni časovnik (ang. Programmable Interrupt Timer),
• 12 bitni analogno digitalni pretvornik z osmimi časovno prepletenimi vhodi in dvema
ločenima analogno digitalnima pretvornikoma z možnostjo vzorči in zadrži (ang.
Sample and Hold),
• I2C modul,
• hitri Ethernetni krmilnik (ang. Fast Ethernet Controller, FEC) in Fizični Ethernet (ang.
Ethernet Phy, ePHY),
• serijski port (ang. UART Serial Port with DMA Capability),
• 4 splošnonamenski časovniki (ang. General Purpose Timers, GPT ),
• razhroščevanje v ozadju (ang. Background Debug Modem, BDM),
• napajanje 3,3V,
• 5 kΩ potenciometer,
• merilnik pospeška v X, Y in Z smeri,
• 4 svetilne diode,
• dve tipki za splošnonamensko uporabo in ena reset tipka,
• TCP/IP protokolovni sklad od firme InterNiche (ang. InterNiche TCP/IP Stack).
11
5 I2C vodilo
I2C vodilo [10: str. 4] je razvilo podjetje Philips za namen komuniciranja večih integriranih
vezij znotraj naprave (slika 9). To je vodilo, ki za svoje delovanje potrebuje le dva vodnika.
Po vodniku serijska ura (ang. Serial Clock, SCL) v nadaljevanju SU, potekajo urini pulzi. Po
vodniku serijski podatki (ang. Serial Data, SDA), v nadaljevanju SP, potujejo podatki. Po SP
lahko podatki potujejo v obe smeri, vendar ne istočasno, kar imenujemo Half Duplex prenos.
Ko je linija prosta, imata SU in SP logični nivo 1. Naprave, ki so priključene na I2C vodilo in
niso aktivne imajo veliko impedanco. Obstajajo trije načini obratovanja:
1. standardni način (ang. Standard Mode) – hitrost prenašanja podatkov je do 100 kbit/s,
2. hitri način (ang. Fast Mode) – hitrost prenašanja podatkov je do 400 kbit/s,
3. zelo hitri način (ang. High Speed Mode) – hitrost prenašanja podatkov je do
3,4 Mbit/s.
Število priključenih naprav na I2C vodilo je odvisno od skupne parazitne kapacitivnosti obeh
linij in priključenih naprav, ki ne sme presegati 400 pF [10: str. 4].
Slika 9: konceptualna shema I2C vodila, preslikano iz [10: str. 8]
I2C standard dopušča, da napetostni nivoji za logični nivo 0 in logično nivo 1 niso fiksni –
odvisni so od napajanja.
Na podatkovnem vodniku se lahko nivoji spreminjajo iz logičnega nivoja 1 v logični nivo 0 in
obratno le, ko je ura v logičnem nivoju 0. Izjemi sta stanji start in stop [10: str. 8].
12
Pri I2C komunikaciji gre za sistem z nadrejenimi in podrejenimi napravami
(ang. master - slave) [10: str. 4]. Slika 9 prikazuje, da sta vodnika serijska ura in
serijski podatki vezana na ponor tranzistorjev. Upori RP vsiljujejo logični nivo 1. Naprave
lahko vsiljujejo le logični nivo 0 z vklopom tranzistorja. To je vzrok, da ne more priti do
kratkega stika, če dve napravi oddata različen bit sočasno. Naprave med prenašanjem
podatkov berejo vodilo serijski podatki in če vidijo, da vodilo serijski podatki nima istega
nivoja, kot ga vsiljujejo, potem to pomeni, da druga naprava oddaja istočasno. Naprava ki
prva zazna neskladje, preneha oddajati. Druga naprava lahko zato nemoteno nadaljuje s
pošiljanjem.
5.1 Pisanje v podrejeno napravo
Slika 10 prikazuje potek podatkovnega signala, označenega z modro barvo, in signala serijska
ura, označenega z zeleno barvo. Ko nobena naprava ne prenaša podatkov, sta oba signala na
logičnem nivoju 1. Nato nadrejena naprava želi komunicirati, zato postavi podatkovni signal
na logični nivo 0, pri čemer je signal serijska ura še vedno na logičnem nivoju 1, kar se
imenuje stanje START.
Nato nadrejena naprava pošlje prvi podatatek po podatkovnem vodniku. To je 7 bitni naslov
podrejene naprave, ki je v prikazanem primeru na sliki 10 enak 73 desetiško. Naprava z
naslovom 73 je v našem primeru temperaturni senzor.
Naslovu podrejene naprave sledi bit, s katerim nadrejena naprava pove podrejeni, ali želi v
nadaljevanju brati ali pisati. Če ima omenjeni bit logični nivo 1, želi nadrejena naprava brati v
nasprotnem primeru pisati. V našem primeru ima ta bit logični nivo 0.
Sledi bit, ki pomeni pozitivno potrditev (ang. ACK). Če ima slednji bit logični nivo 1, je to
sporočilo nadrejeni napravi, da podrejena naprava ni sprejela podatka. V primeru, da ima
pozitivno potrdilo logični nivo 0, je to sporočilo nadrejeni napravi, da je podrejena naprava
podatek sprejela. V našem primeru je podrejena naprava postavila omenjeni bit na logični
nivo 0.
Nato nadrejena naprava po podatkovnem vodniku pošlje podatek podrejeni napravi. V našem
primeru je nadrejena naprava poslala podatek 0, s čimer je izbrala register, ki bi ga rada v
nadaljevanju brala. Zopet sledi bit pozitivna potrditev (ang. ACK), s katerim je podrejena
13
naprava potrdila, da je sprejela podatek. Sledi stanje STOP, ki se zgodi tako, da nadrejena
naprava postavi podatkovni vodnik na logični nivo 1, ko je signal serijska ura že na logičnem
nivoju 1.
Slika 10: pisanje v podrejeno I2C napravo
5.2 Branje iz podrejene naprave
Slika 11 prikazuje potek podatkovnega signala, označenega z modro barvo, in signala serijska
ura, označenega z zeleno barvo. Prenašanje podatkov se začne s stanjem START, ki se zgodi
na enak način kot je bilo opisano v sekciji 5.1. Nato nadrejena naprava pošlje prvi podatatek
po podatkovnem vodniku. To je 7 bitni naslov podrejene naprave, ki je v prikazanem primeru
na sliki 11 enak 73 desetišlo. Naslovu podrejene naprave sledi bit, s katerim nadrejena
naprava pove podrejeni, ali želi v nadaljevanju brati ali pisati. Če ima omenjeni bit logični
nivo 1, želi nadrejena naprava brati v nasprotnem primeru pisati. V našem primeru ima ta bit
logični nivo 1.
Podrejena naprava nato postavi podatkovni vodnik na logični nivo 0, s čimer potrdi zahtevo
nadrejene naprave. V nadaljevanju podrejena naprava vrne podatek nadrejeni napravi. Ta
podatek je v našem primeru temperatura, ki znaša 28 °C. Zadnji bit ima logični novo 1, kar
pomeni, da ni pozitivnega potrdila. To pomeni, da nadrejena naprava ni potrdila sprejema
podatka, s čimer je sporočila, da želi končati komunikacijo. Stanje STOP se zgodi na enak
način, kot je opisano v sekciji 5.1.
14
Slika 11: branje iz podrejene I2C naprave
15
6 Splošno o računalniških omrežjih
Po letu 1970 so začeli razvijati računalniška omrežja, ki omogočajo medsebojno povezovanje
različnih naprav. Prvotna hitrost komunikacijskega sistema je znašala 1Mbit/s, medtem ko
komunicirajo današnja omrežja s tisočkrat večjimi hitrostmi. Arhitekture komunikacijskih
sistemov so osnovane na hierarhičnih slojevitih modelih. Leta 1977 je mednarodna
organizacija za izdelavo standardov ISO (ang. ISO, International Standards Organization)
formirala podkomite, ki je pripravil komunikacijski referenčni model (ang. Open
System Interconnection Reference Model, OSI), ki opisuje komunikacijski proces kot
hierarhično, slojevito strukturo, sestavljeno iz sedmih slojev, kot prikazuje slika 12. Vsak sloj
ima prilagodljivo povezavo z višjim in nižjim slojem. Prilagodljivost se odraža s tem, da
lahko uporabimo različne protokole oziroma standarde. ISO/OSI je podlaga za izdelavo
komunikacijskih standardov [11: str. 228].
Slika 12: referenčni model ISO/OSI, preslikano iz [12: str. 17]
Oglejmo si glavne naloge posameznih slojev, zaporedoma od najnižjega do najvišjega.
16
6.1 Fizični sloj (ang. Physical Layer)
Fizični sloj [12: str. 18] skrbi za prenos podatkov po komunikacijskem kanalu. Osnovna
podatkovna enota tega sloja je bit. Sloj določa mehanske, električne in postopkovne lastnosti
naprav in tokokrogov. Tipična vprašanja v zvezi s tem slojem so: napetostni nivoji signalov,
hitrost prenosa, oblike signalov, vrste modulacij, konektorji in število priključkov na
konektorjih, uporabljeni prenosni medij. Primera standardov in priporočil tega sloja sta
RS232 in RS485.
6.2 Podatkovni sloj ali linijski sloj (ang. Data Link Layer)
Podatkovni sloj [12: str. 18] uporablja storitve fizičnega sloja (prenos podatkov) in zagotavlja
naslednjemu višjemu sloju (mrežnemu sloju) visoko zanesljivost prenosa podatkov v obe
smeri med sosednjimi vozlišči. V ta namen deli daljša zaporedja bitov na okvirje
(ang. Frames) ter skrbi za pravilen prenos posameznih okvirjev od vozlišča do vozlišča s
preverjanjem pravilnosti prenesenega okvirja in s potrjevanjem pravilnosti sprejema. Tipična
vprašanja v zvezi s temi sloji so: kako označiti začetek in konec okvirja, kako ugotavljati
prisotnost napak na okvirjih, kako zahtevati ponoven prenos pokvarjenega okvirja in kako
rešiti problem podvojenih okvirjev (dveh enakih okvirjev) v primeru, da se izgubi potrdilo že
pravilno sprejetega okvirja. Tipični primeri protokolov (standardov), ki opravljajo funkcije
tega sloja so: IBM – ova protokola BSC ali z drugim imenom BISYNC (Binary Synchronous
Communication) in SDLC (Synchronous Data Link Control), ISO HDLC (High-Level Data
Link Control), ki je povzet po SDLC. Tudi podatkovni protokol LAPB (Link Access
Procedure - Balanced) v javnih podatkovnih omrežjih po priporočilu X.25 izhaja iz protokola
HDLC. Za prenos podatkov med manjšimi računalniki sta zelo priljubljena Kemit in
XMODEM ter njegove izpeljanke (YMODEM, ZMODEM, itd.). Naslednja važna naloga tega
sloja v lokalnih omrežjih je nadzor nad dostopom do skupnega kanala (ang. Media Access
Sublayer - MAC). Morda najbolj poznani standardi s tem v zvezi so Ethernet II, IEEE 802.3,
IEEE 802.4, IEEE 802.5 ter podatkovni protokol LLC (Logical Link Control) po standardu
IEEE 802.2.
17
6.3 Mrežni sloj (ang. Network Layer)
Mrežni sloj [12: str. 18] skrbi za delovanje komunikacijskega podsistema. Na sliki 12 vidimo,
da vmesna vozlišča, ki tvorijo komunikacijski podsistem, opravljajo naloge samo prvih treh
(spodnjih) slojev, do vključno mrežnega sloja. Osnovna podatkovna enota tega sloja je paket
(ang. Packet). Ključna naloga tega sloja je zagotavljanje poti prenosa od oddajnega do
sprejemnega vozlišča. Pot od oddajnika do sprejemnika je lahko določena čisto statično
(vnaprej z izvedbo omrežja in se nikoli ne spremeni), lahko je drugačna za vsako novo zvezo,
za vsako novo sporočilo ali celo za vsak posamezen paket (dinamično). Mrežni sloj torej skrbi
za usmerjanje paketov od vozlišča do vozlišča (ang. Routing), naslavljanje vozlišč. Skrbi tudi,
da ne pride do preobremenjenosti dela omrežja (ang. Congestion Control), opravlja razne
(statistične) izračune, ki omogočajo optimizacijo omrežja in/ali obračunavanje storitev. Med
najbolj znanimi protokoli mrežnega sloja sta IP (Internet Protocol) v omrežju omrežij Internet
in PLP (Packet Layer Protocol) po priporočilu X.25 organizacije CCITT. V lokalnih omrežjih
tega sloja ni oziroma je zelo 'tanek'. V omrežjih z Novellovim mrežnim operacijskim
sistemom NetWare opravlja (približno) funkcije mrežnega sloja protokol IPX (Internetwork
Packet Exchange), ki se zgleduje po Xerox XDN ISD protokolu.
6.4 Prenosni sloj (ang. Transport Layer)
Prenosni sloj [12: str. 19] streže sosednjemu višjemu sloju (sloju pogovora). Od njega
prevzame podatke, jih po potrebi deli na manjše enote – podatkovne enote prenosnega sloja
(ang. Transport Protokol Data Unit T-PDU). Podatkovne enote nato predaja naslednjemu
nižjemu (mrežnemu) sloju ter skrbi, da podatki pogovornega nivoja pridejo pravilno na drugo
stran. Torej skrbi za prenos informacije na drugo stran, kot pove tudi njegovo ime.
Prenosni sloj je prvi 'pravi' sloj 'od-konca-do-konca' (ang. End-to-End). Z drugimi besedami,
proces na eni končni postaji komunicira neposredno s sorodnim procesom na drugi končni
postaji, brez posrednikov. Za primer protokola tega sloja navedimo protokol v omrežjih TCP
(Transmission Control Protocol), ki se pojavlja skupaj s protokolom IP in ISO 8073, ki se
uporablja v omrežjih MAP (Manufacturing Automation Protocol) ter TOP (Technical and
Office Protocol).
18
6.5 Pogovorni sloj (ang. Session Layer)
Pogovorni sloj [12: str. 19] omogoča 'pogovor' med uporabniškimi procesi na različnih
postajah in s tem skrbi za organizacijo in strukturiranje dialoga. Podobno kot prenosni sloj
omogoča prenos podatkov, poleg tega nudi tudi nekatere kakovostnejše storitve, specifične za
določene aplikacije. Če bi za prenosni sloj rekli, da skrbi za prenos informacije med enim in
drugim končnim vozlišćem, skrbi pogovorni sloj za pogovor med istorodnima procesoma
enega in drugega vozlišča. Večina omrežij tega sloja sploh nima. Na tem sloju je običajno (ni
nujno) realiziran sistem daljinskih klicev (ang. Remote Procedure Call), kot eden izmed
možnih načinov komunikacije med krajevno porazdeljenimi procesi.
6.6 Predstavitveni sloj (ang. Presentation Layer)
Predstavitveni sloj [12: str. 19] opravlja pogoste storitve, ki zahtevajo splošno rešitev za
večino uporabnikov teh storitev. Tipične storitve tega sloja so: kodiranje in prekodiranje
(npr. ASCII v EBCDIC), šifriranje, zgoščevanje podatkov in podobno. Večina omrežij tega
sloja nima.
6.7 Sloj uporabe (ang. Application Layer)
Sloj uporabe [12: str. 19] predstavlja vmesnik med končnim uporabnikom in
komunikacijskim sistemom. Vsebuje morda največ storitev in protokolov. Najbolj znane med
njimi so: prenos datotek (ang, File Transfer), navidezni terminal (ang. Virtual Terminal),
elektronska pošta (ang. E - mail) X.400, mrežne direktorijske storitve X.500, svetovni splet,
itd.
Čeprav je arhitektura modela ISO/OSI sedem slojna. to ne pomeni, da arhitekture z drugačnim
številom slojev niso možne ali nebi smele obstajati. Drugačne mrežne arhitekture [12: str. 24]
so obstajale dosti prej, predno je nastal model ISO/OSI, naprimer IBM-ova mrežna
arhitektura DNA in druge. Najbolj prepričliv dokaz za arhitekturo, ki ni ISO/OSI, je omrežje
Internet, ki se dnevno potrjuje z vse večjim številom vozlišč. Ne glede na to je model
ISO/OSI gotovo prispeval k bolj sistematičnemu in bolj enotnemu obravnavanju zgradbe in
delovanja omrežij. Marsikatero omrežje, ki je nastalo pred samim ISO/OSI modelom in se
obravnava kot ''omrežje v enem kosu'', se danes obravnava razslojeno z vidika modela
ISO/OSI.
19
7 Arhitektura omrežja internet
Z imenom Internet [12: str. 24] označujemo globalno svetovno omrežje, ki povezuje omrežja
tipa TCP/IP. Ko govorimo o omrežjih tipa TCP/IP, mislimo na omrežja, ki uporabljajo
protokolovni sklad TCP/IP (ang. Transmission Control Protocol/Internet Protocol) ter druge
protokole, ki so bistveni za delnovanje teh omrežij (npr. SNMP, UDP, itd.). Omrežje Internet
temelji na širokoslojnem arhitekturnem modelu, ki ima svoje korenine v omrežju ARPANET
iz konca šestdesetih let. Internet ni grajen po modelu ISO/OSI. To ne pomeni, da bi Internet
ne bilo ''odprto'' omrežje ali da nebi imelo možnosti realizacije vseh potrebnih omrežnih
funkcij. Internet je omrežje, ki ''deluje''. To potrjuje dejstvo, da je TCP/IP omrežij danes daleč
več kot vseh drugih omrežij skupaj. Slika 13 prikazuje primerjavo arhitekture omrežja
Internet z ISO/OSI modelom. Spodnji trije sloji so mrežnega značaja, zgornji sloj je
uporabniško usmerjen. V arhitekturi na levi strani slike 13 so zajeti le nekateri najbolj tipični
protokoli izmed sicer možnih protokolov. V lokalnih omrežjih se v podomrežnem sloju (ang.
Network Interface Layer) največ uporablja Ethernet protokol. Za povezovanje oddaljenih
vozlišč točka-točka po modemskih linijah se uporabljata protokola SLIP (ang. Sereial Link
IP) in PPP (ang. Poin-to-Point-Protocol). Ker podomrežni sloj realizira funkcije spodnjih
dveh slojev modela ISO/OSI, pravimo, da je arhitektura petslojna. Če primerjamo Internet
model z modelom ISO/OSI, bi medomrežni sloj (ang. Internet Layer) najbolj ustrezal
mrežnemu sloju, prenosni sloj prenosnemu, aplikacijski sloj zgornjim trem slojem modela
ISO/OSI.
Slika 13: model in arhitektura omrežja internet, preslikano iz [12: str. 25]
Pri razvoju univerzalnega preskuševalnika vgradnih sistemov smo uporabili TCP/IP protokol,
zaradi možnosti komuniciranja s preskuševalnikom tudi na daljavo.
20
8 Model in arhitektura uporabljenega omrežja
Slika 14 prikazuje primerjavo modela, uporabljenega v diplomskem delu (desni del slike 14),
z referenčnim ISO/OSI modelom (levi del slike 14). Na odjemalski strani sloju uporabe
ustreza odjemalska aplikacija, sloj predstavitve in sloj pogovora nista uporabljena, sloju
prenosa ustreza TCP sloj, sloju mreže ustreza IP sloj, podatkovnemu sloju in fizičnemu sloju
ustreza Ethernet sloj.
Sledi stran strežnika, kjer fizičnemu sloju in podatkovnemu sloju ustreza Ethernet sloj, sloju
mreže ustreza IP sloj, sloju prenosa ustreza TCP sloj, sloj pogovora in sloj predtavitve nista
uporabljena, sloju uporabe ustreza strežniška aplikacija. V diplomskem delu je bilo potrebno
realizirati sloj odjemalske aplikacije in sloj strežniške aplikacije.
21
Slika 14: arhitektura omrežja univerzalnega preskuševalca vgradnih sistemov
8.1 Arhitektura odjemalske aplikacije
Slika 15 prikazuje arhitekturo odjemalske aplikacije. Desni del slike 15 prikazuje štiri sloje
arhitekture odjemalske aplikacije. Sloj grafični uporabniški vmesnik je prikazan v sekciji 13,
sloj izvajanje ETSL programa je opisan v sekciji 15.1. Najnižja sloja sta opisana v sekcijah
14.1 in 14.4.
22
Slika 15: arhitektura odjemalske aplikacije
8.2 Arhitektura strežniške aplikacije
Slika 16 prikazuje arhitekturo strežniške aplikacije. Desni del slike 16 prikazuje tri sloje
arhitekture strežniške aplikacije. Vsi trije sloji so podrobno opisani v sekcijah 14.2 in 14.3.
Slika 16: arhitektura strežniške aplikacije
23
9 Splošno o vgradnih sistemih
Slika 17 prikazuje vgradne sisteme, ki se pojavljajo v domačem okolju [2]. Ti vgradni sistemi
so mobilni telefoni, tiskalniki, zvočniki, televizorji, itd.
Slika 17: vgradni sistemi v domačem okolju, preslikano iz [2]
Slika 18 prikazuje vgradne sisteme, ki se pojavljajo v delovnem okolju [2]. Ti vgradni sistemi
so strežniki, odjemalci, usmerjevalniki, tiskalniki, itd.
Slika 18: vgradni sistemi delovnih okolij, preslikano iz [2]
9.1 Definicije vgradnih sistemov
Obstaja veliko definicij [2] vgradnih sistemov. Splošna definicija vgradnih sistemov je:
Vgradni sistemi so računalniški sistemi, ki imajo tesno povezan hardver in softver, in
so načrtovani tako, da izvršujejo neko določeno funkcijo. Že beseda vgradni odraža
dejstvo, da so to sistemi, ki so ponavadi vgrajeni v nek večji sistem [2].
24
V večini primerov so vgradni sistemi res majhni sistemi znotraj večjega sistema in ne morejo
delovati sami zase. Za primer lahko vzamemo video rekorder, ki je brez televizije praktično
neuporaben. Vendar obstajajo tudi vgradni sistemi, ki delujejo kot samostojni sistemi. Primer
takega samostojnega vgradnega sistema je usmerjevalnik (ang. Router). Usmerjevalnik je
sestavljen iz posebnega komunikacijskega procesorja, pomnilnika, in posebnega softverja, ki
skrbi za usmerjanje paketov, ki prehajajo iz vhoda proti izhodu [2].
Vse zgornje definicije ne odgovorijo vedno na neslednje vprašanje.
• Ali lahko osebni računalnik klasificiramo kot vgradni sistem?
Iz povedanega sledi, da ne obstaja tako obsežna definicija, ki bi odgovorila na podobna
vprašanja. Zato se je potrebno osredotočiti na karakteristike vgradnih sistemov in nanje
pogledati iz različnih zornih kotov, kajti šele na ta način si lahko ustvarimo jasno sliko, kaj so
vgradni sistemi in zakaj so vgradni sistemi nekaj posebnega [2].
Poglejmo na osebni računalnik iz dveh zornih kotov:
• če pogledamo na osebni računalnik tako, da lahko z njim opravljamo različna
opravila, potem to ni vgradni sistem,
• če uporabimo osebni računalnik v proizvodnji in ga sprogramiramo, da opravlja
točno določeno funkcijo, lahko rečemo po splošni definiciji zgoraj, da je osebni
računalnik vgradni sistem.
Zaključimo, da je klasifikacija vgradnih sistemov odvisna od namena uporabe.
25
10 Koncepti operacijskega sistema vgradnih sistemov
V tej sekciji so razloženi osnovni koncepti, ki smo jih uporabili pri razvoju univerzalnega preskuševalnika vgradnih sistemov.
10.1 Opravila (ang: Tasks)
Enostavne aplikacije so tipično narejene tako, da se izvajajo sekvenčno ukaz za ukazom. To je
neprimerno za vgradne sisteme, ki obratujejo v realnem času. Vgradni sistemi, ki obratujejo v
realnem času [2], morajo v omejenem času obdelati več vhodov in izhodov. To je vzrok, da
morajo biti ti sistemi načrtovani za "sočasnost ".
Sočasno načrtovanje zahteva, da načrtovalec takih sistemov razdeli aplikacijo v majhne,
razvščene programske enote. Te programske enote naj se izvajajo sekvenčno. Ko je
razvrščanje na programske enote pravilno narejeno, sočasno načrtovanje dopušča več
oparavilna dela (ang. Multitasking). Na opisani način lahko zadostimo časovnim zahtevam,
ki jih zahtevajo sistemi, ki delujejo v realnem času.
10.2 Semaforji
Več 'vzporednih' opravil mora imeti sinhronizirano izvajanje. Dostop do skupnih virov mora
biti izključujoč, kar pomeni, da lahko samo eno opravilo naenkrat dostopa do skupnega vira.
Ta sinhronizacija se doseže s semaforji [2]. Obstaja več vrst semaforjev [2].
V diplomskem delu smo pri sinhronizaciji opravil uporabili binarni semafor. Binarni semafor
je običajno globalna spremenljivka, do katere imajo dostop vsa opravila. Ko opravilo želi
dostopati do npr. skupnega pomnilnika, najprej preveri vrednost semaforja (torej vrednost
globalne spremenljivke). Če je vrednost semaforja 0, potem opravilo lahko dostopa do
pomnilnika. Vendar preden začne dostopati, postavi semafor na 1, kar pomeni rdeča luč za
ostala opravila, ki želijo dostopati do pomnilnika. Ko opravilo neha dostopati do skupnega
pomnilnika, postavi semafor na 0 in ostala opravila imajo prost dostop do pomnilnika.
26
10.3 Sporočilna vrsta (ang. Message Queue)
Sporočilna vrsta [2] je vmesni pomnilnik (ang. Buffer), uporabljen za komuniciranje in
sinhronizacijo med opravili. Opravila lahko pošiljajo sporočila v sporočilno vrsto ali jemljejo
sporočila iz sporočilne vrste na dva načina. Prvi način je blokirajoči (ang. Blocking) [2].
Deluje tako, da opravila čakajo, v primeru polne (pri pošiljanju v vrsto) oziroma prazne (pri
jemanju sporočila iz vrste) sporočilne vrste. Drugi način je ne-blokirajoči (ang. Non
Blocking) [2]. Deluje tako, da opravila ne čakajo v primeru polne (pri pošiljanju v vrsto)
oziroma prazne (pri jemanju sporočila iz vrste) sporočilne vrste.
Pošiljanje podatkov v sporočilno vrsto je mogoče na dva načina. Prvi način je, da se v
sporočilno vrsto pošlje sporočilo s kopiranjem. Slika 19 prikazuje slabosti omenjenega
načina, ki so dvojno kopiranje podatkov, kar je časovno potratno in neracionalno s stališča
izrabe pomnilnika. V vgradnih sistemih namreč pomnilnika ni na pretek.
Drugi način je, da se v sporočilno vrsto pošlje kazalec [13] na sporočilo. To prinese v
primerjavi s prvim načinom prihranek časa in racionalnejšo izrabo pomnilnika. Omenjene
prednosti izhajajo iz dejstva, da se z uvedbo kazalca izognemo dvojnemu kopiranju sporočila.
V diplomskem delu smo se zaradi zgoraj navedenih razlogov odločili za drugi način. V vrsto
smo poslali kazalec na sporočilo.
Slika 19: kopiranje podatkov v vrsto in iz nje, preslikano iz [2]
Včasih se pojavi potreba po obveščenosti pošiljatelja o sprejemu sporočila sprejemnika, kar
imenujemo sinhronizacija (ang. Intelocked Communication) [2]. Pošiljatelj ne da novega
sporočila v sporočilno vrsto, dokler sprejemnik ne dvigne staro sporočilo iz sporočilne vrste.
Omenjena sinhronizacija se realizira z binarnim semaforjem (glej sekcijo 10.2). Začetna
vrednost binarnega semaforja je 0. Pošiljatelj postavi semafor na 1 in pošlje sporočilo v
27
sporočilno vrsto. Sprejemnik vzame sporočilo iz sporočilne vrste in postavi semafor na
vrednost 0. Dokler ima semafor vrednost 1, pošiljatelj ne more poslati novega sporočila v
sporočilno vrsto. Na podoben način smo naredili sinhronizacijo na razvojni plošči
M52233DEMO. Kot je bilo omenjeno, smo poslavli v sporočilno vrsto kazalec na sporočilo.
Dokler sprejemnik ne sprejme sporočila, na katerega kaže kazalec, ne sme nihče pisati v
pomnilnik, na katerega kaže kazalec, kar smo preprečili z binearnim semaforjem, ki je
pošiljatelju sporočil, kdaj je sprejemnik sporočilo prebral.
28
11 Uporabljeni koncepti v jeziku C#
Razložimo koncepte, ki smo jih uporabili pri programiranju odjemalca (ang. Client) v
programskem jeziku C#.
11.1 Podatkovni razred ArrayList
Podatkovni razred z imenom ArrayList [14: str. 176] se uporablja, ko potrebujemo vstavljanje
elementov v podatkovno polje oziroma jemanje elementov iz podatkovnega polja ter
dinamične razširitve oziramo zmanjšanje podatkovnega polja. ArrayList se uporablja nemesto
navadnega podatkovnega polja, ko je navadno podatkovno polje (ang. Array) preveč omejeno.
Pomankljivosti navadnega polja (ang. Array):
• razširitev polja poteka s kopiranjem vseh elementov starega polja v novo razširjeno
polje,
• zmanjšanje polja poteka s kopiranjem elementov starega polja v novo manjše polje.
Nato je potrebno vse reference na elemente polja posodobiti,
• jemanje elementa iz polja poteka s pomnenjem elementa. Sledi premik vseh elementov
ki mu sledijo, za eno mesto navzgor. Na zadnjem in predzadnjem mestu se pojavita
enaki vrednosti,
• vstavitev elementa v polje poteka s premikom vseh elementov za eno mesto navzdol
od mesta vstavitve. Zadnji element izpade iz polja.
Omenjenih pomankljivosti podatkovni razred ArrayList nima:
• odstranitev elementa poteka s klicem funkcije z imenom Remove. Premik elementov
za eno mesto navzgor je samodejna. Zmanjšanje ArrayListe je samodejna, zato se na
zadnjem in predzadnjem mestu ne pojavita enaki vrednosti,
• dodajanje elementa na koncu ArrayListe poteka z uporabo funkcije z imenom Add.
Razširitev ArrayListe je samodejna,
• vstavitev elementa v sredino ArrayListe poteka s klicem funkcije z imenom Insert.
Premik elementov za eno mesto navzdol je samodejna. Razširitev ArrayListe je
samodejna, zato ne pride do izpada zadnjega elementa.
29
11.2 Razpršena tabela (ang. Hashtable)
Polje (ang. Array) in ArrayList omogočata dostop do elementov le preko celoštevlčnega
podatkovnega tipa (ang. Integer), medtem ko se včasih pojavi potreba po dostopanju do
elementov preko drugih podatkovnih tipov npr. znakovni podatkovni tip (ang. Char),
podatkovni tip niz (ang. String) itd. V nekaterih drugih programskih jezikih to imenujejo
povezovalno polje (ang. Associative Array). V programskem jeziku C# se tabela, ki omogoča
dostopanje do elementov polja preko različnih podatkovnih tipov imenuje razpršena tabela
(ang. Hashtable) [14: str. 180]. Razpršena tabela doseže omenjeno funkcionalnost z dvemi
polji. V enem polju je ključ (ang. Key), s katerim se dostopa do elementov drugega polja.
Razpršena tabela samodejno sledi, katera vrednost spada h kateremu ključu.
Omejitev razpršene tabele:
• razpršena tabela ne more imeti dveh ključev z istim imenom. Preverjanje obstoja
ključa se izvaja s klicem funkcije z imenom ContainsKey.
11.3 Sklad (ang. Stack)
Sklad [14: str. 179] shranjuje vrednosti po mehanizmu prvi noter, zadnji ven (ang.
Last In First Out, LIFO). Zadnje vpisani element gre iz sklada prvi. V diplomskem delu smo
to lastnost izkoristili za realizacijo vgnezdenih if stavkov.
11.4 Delegati (ang. Delegates)
Delegat [14: str. 273] je kazalec [13] na funkcijo. Ob klicu delegata se izvrši funkcija, na
katero kaže delegat. Delegati omogočajo dinamično spreminjanje kazalcev na funkcije.
Glavna prednost delegatov je, da lahko kaže na več kot eno funkcijo. V diplomskem delu smo
uporabili delegate zato, da smo predali informacije strežnika prikazovalnemu obrazcu.
11.5 Nit (ang. Thread)
Opravilo (ang. Task) združuje več niti (ang. Threads) [5]. Niti si delijo isti pomnilniški
prostor in ločen sklad. Ločen sklad omogoča neodvisno klicanje podprogramov. Več
opravilno (ang. Multi Tasking) delovanje nastopi, ko npr. zaženemo Word, Excel, aplikacijo
30
našega preskuševalnika itd. Znotraj opravila teče več niti (ang. Multi Threading). Primeri niti
so tipkanje besedila, tiskanje v ozadju, shranjevanje datotek, prikaz slik itd.
31
12 Skriptni programski jezik ETSL
V okviru diplomskega dela smo razvili skriptni programski jezik za potrebe testiranja
vgradnih sistemov. Poimenovali smo ga Embedded Testing Script Language
(v nadaljevanju ETSL).
Prednosti jezika ETSL so:
• ne potrebujemo programskega okolja za pisanje ETSL programov. Programe lahko
pišemo v poljubnem ASCII urejevalniku besedil,
• jezik ETSL smo razvili tako, da lahko realiziramo testne postopke hitreje kot s
splošnonamenskimi programskimi jeziki (C, C++).
Za razvoj novega programskega jezika smo se odločili zaradi zgoraj navedenih prednosti in
zaradi možnosti nadgradnje in prilagajanja v bodoče.
12.1 Velike in male črke ter presledki in prazne vrstice
V programski jezik ETSL lahko pišemo kodo z velikimi ali malimi črkami. Pri programiranju
lahko uporabljamo poljubno število presledkov in praznih vrstic s čimer se da doseči
preglednejše programe.
12.2 Številke in spremenljivke
Številke in vrednosti spremenlivk so 32 bitna prednznačena cela števila. Številke je potrebno
zapisovati v desetiškem številskem sistemu.
12.3 Komentar
Komentar je označen s podpičjem. Besedilo, desno od podpičja, se obravnava kot komentar.
32
12.4 Logični operatorji
Tabela 1 prikazuje logične operatorje, ki se lahko uporabijo pri pogojnih stavkih.
> večje
< manjše
>= večje ali enako
33
12.5.2 Beleženje (ang. Log)
Ukaz LOG označuje beleženje v datoteko. Zaradi lažje razlage imenujmo datoteko, v kateri se
nahaja program, programska_datoteka in datoteko, namenjeno beleženju, log_datoteka.
Log_datoteka se semodejno ustvari v direktoriju, kjer se nahaja programska_datoteka. Če je
ime programske_datoteke test.txt, potem bo ime log_datoteke npr.
test.txt_2007_8_19__16_20_15.log (imenu test.txt se doda leto, mesec, dan in ura).
Ukazu LOG sledi besedilo, ki se zapiše v log_datoteko. Besedilo mora biti zapisano v dvojnih
narekovajih. Med besedilom lahko pišemo tudi znak %, ki pomeni zamenjavo z vrednostjo
spremenljivke. Besedilu sledijo spremenljivke, ki jih mora biti toliko, kot znakov %. Prvi
znak %, gledano iz leve strani besedila, se zamenja z vrednostjo prve spremenljivke, drugi
znak % z vrednostjo druge spremenljivke itd. LOG, besedilo in spremenljivke morajo biti
ločeni s presledkom.
LOG [ … ]
Primer
VAR T1 10; Deklaracija spremenljivke T1.
VAR T2 20; Deklaracija spremenljivke T2.
LOG "Temperatura prvega senzorja je %, temperatura drugega senzorja je %."
T1 T2
Ukaz zgoraj bi moral biti zapisan v eni vrstici. Zapis v dveh vrsticah nebi deloval. Prvi
znak % se zamenja s spremenljivko T1, drugi znak % s spremenljivko T2. V beležki bi bilo
zapisano:
31.8.2007 17:39:12 Temperatura prvega senzorja je 10, temperatura drugega
senzorja je 20.
Datum in ura 31.8.2007 17:39:12 se samodejno dodata pred besedilo.
34
12.5.3 Zakasnitev
Ukaz WAIT označuje zakasnitev. Sledi številka ali spremenljivka, katere vrednost določa
zakasnitev programa v tisočinkah sekunde.
WAIT
Primer 1
WAIT 1000 ; Zakasnitev programa za eno sekundo.
Primer 2
VAR ZAKASNITEV 1000
WAIT ZAKASNITEV; Zakasnitev programa za eno sekundo.
12.5.4 Shranjevanje vrednosti v spremenljivko
Ukaz STORE označuje zakasnitev. Sledi spremenljivka, kateri priredimo novo vrednost.
Spremenljivki sledi številka ali spremenljivka.
STORE
Primer 1
VAR TEMPERATURA 0 ; Deklaracija spremenljivke TEMPERATURA
STORE TEMPERATURA 10 ; Spremenljivki TEMPERATURA
; priredimo vrednost 10.
Primer 2
VAR TEMPERATURA 0 ; Deklaracija spremenljivke TEMPERATURA
VAR T 10 ; Deklaracija spremenljivke T
STORE TEMPERATURA T ; Spremenljivki TEMPERATURA
; priredimo vrednost 10.
35
12.5.5 Seštevanje
Ukaz ADD označuje seštevanje. Sledi prvi in drugi operand. Vsak operand je lahko številka
ali spremenljivka. Operandoma sledi spremenljivka, v katero se shrani rezultat seštevanja.
ADD
Primer 1
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
ADD 10 5 REZULTAT; Rezultat operacije 10 + 5 se shrani v
; spremenljivko REZULTAT.
Primer 2
VAR a 10 ; Deklaracija spremenljivke a.
VAR b 5 ; Deklaracija spremenljivke b.
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
ADD a b REZULTAT ; Spremenljivka REZULTAT vsebuje
; vrednost 10 po seštevanju.
12.5.6 Odštevanje
Ukaz SUB označuje odštevanje. Sledi prvi in drugi operand. Vsak operand je lahko številka
ali spremenljivka. Operandoma sledi spremenljivka, v katero se shrani rezultat seštevanja.
SUB
Primer 1
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
SUB 10 5 REZULTAT ; 10 - 5 se shrani v spremenljivko REZULTAT.
Primer 2
VAR a 10 ; Deklaracija spremenljivke a.
VAR b 5 ; Deklaracija spremenljivke b.
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
SUB a b REZULTAT ; Spremenljivka REZULTAT vsebuje vrednost 5
; po odštevanju.
V obeh zgornjih primerih spremenljivka REZULTAT vsebuje isto vrednost.
36
12.5.7 Premik bitov v levo
Ukaz SHIFTL označuje premik bitov v levo. Sledi operand, ki je lahko spremenljivka ali
številka. Operandu sledi spremenljivka ali številka, ki določa število premikov v levo. Na
zadnjem mestu je spremenljivka, v katero se shrani rezultat premika.
SHIFTL
Primer 1
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
SHIFTL 10 2 REZULTAT ; Premik vrednosti 10 za dva bita v levo.
;Spremenljivka REZULTAT vsebuje vrednost 40
Primer 2
VAR a 10 ; Deklaracija spremenljivke a.
VAR b 2; Deklaracija spremenljivke b.
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
SHIFTL a b REZULTAT ; Premik vrednosti a za b bitov v levo.
;Spremenljivka REZULTAT vsebuje vrednost 40.
V obeh zgornjih primerih spremenljivka REZULTAT vsebuje isto vrednost.
12.5.8 Premik bitov v desno
Ukaz SHIFTR označuje premik bitov v desno. Sledi operand, ki je lahko spremenljivka ali
številka. Operandu sledi spremenljivka ali številka, ki določa število premikov v desno. Na
zadnjem mestu je spremenljivka, v katero se shrani rezultat premika.
SHIFTR
37
Primer 1
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
SHIFTR 8 2 REZULTAT ; Premik vrednosti 8 za dva bita v desno.
;Spremenljivka REZULTAT vsebuje vrednost 2.
Primer 2
VAR a 10; Deklaracija spremenljivke a.
VAR b 2; Deklaracija spremenljivke b.
VAR REZULTAT 0; Deklaracija spremenljivke REZULTAT.
SHIFTR a b REZULTAT ; Premik vrednosti a za b bitov v desno.
;Spremenljivka REZULTAT vsebuje vrednost 2.
V obeh primerih spremenljivka REZULTAT vsebuje isto vrednost.
12.5.9 Množenje
Ukaz MULT označuje množenje. Sledi prvi in drugi operand. Vsak operand je lahko številka
ali spremenljivka.. Operandoma sledi spremenljivka, v katero se shrani rezultat množenja.
MULT
Primer 1
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
MULT 10 5 REZULTAT; Množenje vrednosti 10 in 5. Spremenljivka
; REZULTAT po množenju vsebuje vrednost 50.
Primer 2
VAR a 10 ; Deklaracija spremenljivke a.
VAR b 5 ; Deklaracija spremenljivke b.
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
MULT a b REZULTAT; Množenje vrednosti a in b. Spremenljivka
; REZULTAT po množenju vsebuje vrednost 50.
V obeh primerih spremenljivka REZULTAT vsebuje enako vrednost.
38
12.5.10 Deljenje
Ukaz DIV označuje množenje. Sledi prvi in drugi operand. Vsak operand je lahko številka ali
spremenljivka. Operandoma sledi spremenljivka, v katero se shrani rezultat deljenja.
DIV
Primer 1
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
DIV 10 5 REZULTAT ; Deljenje vrednosti 10 in 5. Spremenljivka
; REZULTAT po deljenju vsebuje vrednost 2.
Primer 2
VAR a 10 ; Deklaracija spremenljivke a.
VAR b 5 ; Deklaracija spremenljivke b.
VAR REZULTAT 0 ; Deklaracija spremenljivke REZULTAT.
DIV a b REZULTAT ; Deljenje vrednosti a in b. Spremenljivka
; REZULTAT po deljenju vsebuje vrednost 2.
V obeh primerih spremenljivka REZULTAT vsebuje isto vrednost.
12.5.11 Pogojni (IF) stavek
Obstaja več načinov uporabe pogojnega if stavka.
Prvi način
IF
…
ELSE
…
ENDIF
39
Primer 1
VAR a 20
VAR b 10
VAR REZULTAT 0
IF 0
STORE REZULTAT a
ELSE
STORE REZULTAT b
ENDIF
Ker pogoj ni izpolnjen, se izvede koda, ki se nahaje med ukazoma else in endif.
Primer 2
VAR a 20
VAR b 10
VAR REZULTAT 0
IF a
STORE REZULTAT a
ELSE
STORE REZULTAT b
ENDIF
Ker je pogoj izpolnjen (spremenljivka a je različna od nič), se izvede koda, ki se nahaje med
ukazoma if in else.
Drugi način
IF
…
ENDIF
40
Primer 1
VAR a 20
VAR b 10
VAR REZULTAT 0
IF 0
STORE REZULTAT a
ENDIF
Ker pogoj ni izpolnjen, se koda, ki se nahaje med ukazoma if in endif ne izvede.
Tretji način
IF
…
ELSE
…
ENDIF
Primer 1
VAR a 20
VAR b 10
VAR REZULTAT 0
IF a > b
STORE REZULTAT a
ELSE
STORE REZULTAT b
ENDIF
Ker je pogoj izpolnjen, se izvede koda, ki se nahaje med ukazoma if in else. V spremenljivko
REZULTAT se shrani večja vrednost, kar je v našem primeru 20.
41
Četrti način
IF
...
ENDIF
Primer 1
VAR a 20
VAR b 10
VAR REZULTAT 0
IF a > b
STORE REZULTAT a
ENDIF
Ker je pogoj izpolnjen, se izvede koda, ki se nahaje med ukazoma if in else. V spremenljivko
REZULTAT se shrani vrednost 20.
Omeniti je potrebno, da programski jezik ETSL omogoča tudi vgnezdene if stavke, kar
pomeni, da omogoča pisanje if stavka znotraj if stavka.
12.5.12 Oznaka (ang. Label)
Ukaz # označuje deklaracijo oznake. Znaku # sledi ime oznake. Med znakom # in imenom
oznake ne sme biti presledka!
Deklaracija oznake je potrebna za izvajanje skokov z ukazom GOTO.
#OZNAKA
Primer uporabe oznake bo podan v nadaljevanju.
42
12.5.13 GOTO stavek
Ukaz GOTO označuje skok na oznako. Ukazu GOTO sledi ime oznake, na katero želimo
skočiti.
GOTO
Primer
Program, ki izvaja zanko desetkrat in nato skoči iz zanke.
VAR STEVEC 0
#ZACETEK
IF STEVEC = 10
GOTO KONEC
ENDIF
ADD STEVEC 1 STEVEC ; Povečanje števca za ena
GOTO ZACETEK
#KONEC
12.5.14 GPIO ukazi (ang. General Purpose Input Output, GPIO)
Ukaz GPIO označuje upravljanje s splošnonamenskimi vhodi in izhodi (ang.
General Purpose Input Output, v nadaljevanju GPIO sponke). Ukazu GPIO lahko sledi eden
od ukazov READ, SET ali RESET. Uporaba vseh naštetih ukazov je razložena v nadaljevanju.
Pri nadaljni razlagi ukazov je potrebno vedeti, da lahko postavimo 12 GPIO sponk na logični
nivo 1 ali logični nivo 0. Na sponke od 1 do 8 lahko priklopimo karkoli, kar za sponke od 9
do 12 ne velja. Na slednje so že priklopljene svetilne diode, kar prikazuje slika 8 v sekciji 4.
12.5.14.1 Branje GPIO sponk
Ukaza GPIO READ označujeta branje GPIO sponk. Sledi številka sponke, katere logični nivo
želimo brati. Številko sponke lahko podamo kot številko ali kot spremenljivko. Nato sledi
spremenljivka, v katero se shrani logični nivo izbrane sponke. Tako lahko nadaljujemo za
sponke od 1 do 8, ker zaenkrat le-te sponke lahko opravljajo funkcijo digitalnih vhodov.
GPIO READ
[ …
< sponka8, sprem. ali številka> ]
43
Z ukazom GPIO READ ,
sponka1 začne opravljati funkcijo digitalnega vhoda. Nato se prebere vrednost na njej.
Primer 1
Napišimo program, pri katerem bodo sponke 2, 4 in 8 imele vlogo digitalnih vhodov, in
preberimo vrednost na omenjenih sponkah.
VAR a 0
VAR b 0
VAR c 0
GPIO READ 2 a 4 b 8 c ; Digitalna vrednost sponke2 se
; prebere v spremenljivko a.
; Digitalna vrednost sponke4 se prebere v
; spremenljivko b.
; Digitalna vrednost sponke8 se prebere v
; spremenljivko c.
Primer 2
Napišimo program, ki bo delal enako kot zgornji program, le da bomo sponkam dali imena.
Zamislimo si, da imamo na sponkah 2, 4 in 8 vezane tipke. Odčitali bomo vrednosti tipk.
VAR a 0
VAR b 0
VAR c 0
VAR TIPKA2 2
VAR TIPKA4 4
VAR TIPKA8 8
GPIO READ TIPKA2 a TIPKA4 b TIPKA8 c
; V spremenljivko a se shrani stanje tipke2.
; V spremenljivko b se shrani stanje tipke4.
; V spremenljivko c se shrani stanje tipke8.
Program je sedaj nazornejši.
44
12.5.14.2 Postavitev GPIO sponk na logični nivo 1
Ukaza GPIO SET označujeta nastavitev ustreznih GPIO sponk na logični nivo 1.
Ukazu SET sledi številka sponke, ki jo želimo postaviti na logični nivo 1. Številko sponke
lahko podamo kot številko ali spremenljivko.
GPIO SET < sponka1, spremenljivka ali številka> [ …
< sponka12, spremenljivka ali številka>]
Z zgornjim ukazom ustrezna GPIO sponka dobi funkcijo digitalnega izhoda in šele nato se
postavi njena vrednost na logični nivo 1.
Primer 1
Napišimo program, pri katerem bodo sponke 2, 4 in 9 opravljale funkcijo digitalnega izhoda.
Omenjene sponke tudi postavi na logični nivo 1.
GPIO SET 2 4 9
Primer 2
Napišimo program, ki bo delal enako kot zgornji program, le da bomo GPIO sponkam dali
imena. Zamislimo si, da imamo na GPIO sponkah 2 in 4 priklopljene releje, medtem ko je na
sponko 9 vezana svetilna dioda.
VAR RELE2 2
VAR RELE4 4
VAR DIODA1 9
GPIO SET RELE2 RELE4 DIODA1
Program je sedaj dojemljivejši. Vklopimo drugi in četrti rele ter prižgemo prvo svetilno
diodo.
45
12.5.14.3 Postavitev GPIO sponk na logični nivo 0
Ukaza GPIO RESET označujeta nastavitev ustreznih GPIO sponk na logični nivo 0.
Ukazu RESET sledi številka sponke, ki jo želimo postaviti na logični nivo 0. Številko sponke
lahko podamo kot številko ali spremenljivko.
GPIO RESET < sponka1, spremenljivka ali številka> [
… < sponka12, spremenljivka ali številka>]
Z zgornjim ukazom, ustrezna GPIO sponka dobi funkcijo digitalnega izhoda in šele nato se
postavi njena vrednost na logični nivo 0.
Primer 1
Napišimo program tako, da bodo sponke 2, 4 in 9 opravljale funkcijo digitalnega izhoda.
Omenjene sponke tudi postavi na logični nivo 0.
GPIO RESET 2 4 9
Primer 2
Napišimo program, ki bo delal enako kot zgornji program, le da bomo GPIO sponkam dali
imena. Zamislimo si, da imamo na GPIO sponkah 2 in 4 priklopljena releja. Na sponko 9 je
kot vemo že priklopljena svetilna dioda.
VAR RELE2 2
VAR RELE4 4
VAR DIODA1 9
GPIO RESET RELE2 RELE4 DIODA1
Program je sedaj dojemljivejši. Razklenemo drugi in četrti rele ter ugasnemo prvo svetilno
diodo.
46
12.5.15 I2C ukazi
Ukaz I2C označuje upravljanje z I2C vodilom. Ukazu I2C lahko sledi eden od ukazov READ
ali WRITE. Uporaba obeh ukazov je razložena v nadaljevanju.
12.5.15.1 I2C WRITE
Ukaza I2C WRITE označujeta pisanje podrejeni napravi. Ukazu WRITE sledi 7 bitni naslov
podrejene naprave. Naslovu sledi prvi 8 bitni podatek. Prvemu podatku sledi drugi 8 bitni
podatek. Na opisani način lahko pošljemo 4 zloge podatkov (štiri 8 bitne podatke).
I2C WRITE
[ … < četrti podatek (1 zlog), sprem. ali številka>]
Naslov podrejene naprave mora biti 7 bitni. To pomeni, da ima največji naslov vrednost 127.
Pri vpisu večje vrednosti naslova pride do preliva.
Podatki morajo biti 8 bitni. To pomeni, da ima največji podatek vrednost 255. Poslati je
mogoče štiri 8 bitne podatke (4 zloge).
Primer 1
Napišimo program, ki bo podrejeni napravi z naslovom 73 poslal dva zloga podatkov. Prvi
zlog ima vrednost 5. Drugi zlog ima vrednost 10.
I2C WRITE 73 5 10
Primer 2
Naredimo isti program z uvedbo spremenljivk.
VAR NASLOV_NAPRAVE 73
VAR ZLOG1 5
VAR ZLOG2 10
I2C WRITE NASLOV_NAPRAVE ZLOG1 ZLOG2
47
12.5.15.2 I2C READ
Ukaza I2C READ označujeta branje iz podrejene naprave. Ukazu READ sledi 7 bitni naslov
podrejene naprave. Naslovu sledi 8 bitni naslov registra podrejene naprave. Vrednost
naslovljenega registra želimo brati. Naslovu registra sledi spremenljivka ali številka, ki pove
koliko zlogov želimo prebrati. Največ 4 zloge lahko preberemo. Sledi spremenljivka, v katero
se prebere vrednost registra.
I2C READ
Primer 1
Napišimo program, ki bo prebral dva zloga iz registra podrejene naprave. Naslov podrejene
naprave je 73, naslov registra podrejene naprave je 0.
VAR REZULTAT 0
I2C READ 73 0 2 REZULTAT
Primer 2
Naredimo isti program kot je zgoraj, le da uvedimo spremenljivke, da bo bolj berljiv.
VAR NASLOV_NAPRAVE 73
VAR NASLOV_REGISTRA 0
VAR ST_ZLOGOV 2
VAR REZULTAT 0
I2C READ NASLOV_NAPRAVE NASLOV_REGISTRA ST_ZLOGOV REZULTAT
48
13 Grafični uporabniški vmesnik
Grafični uporabniški vmesnik univerzalnega preskuševalnika vgradnih sistemov je namenjen
komunikaciji uporabnika z univerzalnim testerjem vgradnih sistemov. Uporabniški vmesnik
je sestavljen iz treh zavihkov in sicer:
• inicializacijski zavihek,
• GPIO zavihek,
• I2C zavihek.
13.1 Inicializacijski zavihek
Inicializacijski zavihek je namenjen nastavitvi komunikacije odjemalec – strežnik, kar
prikazuje slika 20.
• V okenček Address vpišemo IP naslov strežnika. V našem primeru je strežnik
razvojna plošča M52233DEMO in ima IP naslov 192.168.1.99.
• V okenček Port vpišemo številko vrat strežnika.
• Vrstica Status nam prikazuje stanje povezave odjemalec – strežnik
(ang. Client - Server).
• Gumb Connect poveže odjemalca s strežnikom.
• Gumb Disconnect prekine povezavo odjemalca s strežnikom.
Slika 20: inicializacijski zavihek
49
13.2 GPIO zavihek
GPIO zavihek omogoča:
• branje logičnih stanj GPIO sponk,
• nastavitev GPIO sponk, da opravljajo funkcijo digitalnih vhodov ali izhodov,
• nastavitev GPIO sponk na logični nivo 0 ali logični nivo 1,
• prikaz stanja logičnih nivojev GPIO sponk.
Slika 21 prikazuje zgradbo GPIO zavihka.
• Gumb READ GPIO osveži logično stanje GPIO sponk.
• Prvi stolpec omogoča nastavitev GPIO sponk na logični nivo 1 ali na logični nivo 0.
Obkljukan okenček pomeni logični nivo 1, neobkljukan okenček pomeni
logični nivo 0.
• Drugi stolpec omogoča nastavitev GPIO sponk, da opravljajo funkcijo digitalnih
vhodov ali izhodov. Obkljukan okenček pomeni, funkcijo digitalnega izhoda,
neobkljukan okenček pomeni funkcijo digitalnega vhoda.
• Tretji stolpec omogoča prikaz stanja logičnih nivojev GPIO sponk.
Slika 21: GPIO zavihek
50
13.3 I2C zavihek
I2C zavihek je namenjen komunikaciji preko I2C protokola s podrejeno napravo, kar prikazuje
slika 22.
• V okenček SLAVE ADDRESS vpišemo naslov podrejene naprave. Naslov mora biti
napisan v šestnajstiškem sistemu.
• V okenček DATA vpišemo 8 bitne podatke v šestnajstiškem sistemu. Podatki morajo
biti ločeni z vejico.
• Gumb WRITE zapiše podatke v podrejeno napravo.
• V okenček NUMBER BYTES vpišemo število zlogov, ki jih želimo prebrati iz
podrejene naprave.
• Gumb READ prebere podatke iz podrejene napra