94
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

MATEJ RAKOVEC UNIVERZALNI PRESKUŠEVALNIK VGRADNIH …lie.fe.uni-lj.si/diplome/PDF/2007/Diploma_MatejRakovec.pdf · 2007. 9. 20. · UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO

  • 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