DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva...

119
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Goran Jurković DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE UGRAĐENIH SUSTAVA MAGISTARSKI RAD Zagreb, 2011.

Transcript of DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva...

Page 1: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Goran Jurković

DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE UGRAĐENIH SUSTAVA

MAGISTARSKI RAD

Zagreb, 2011.

Page 2: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

UNIVERSITY OF ZAGREB

FACULTY OF ELECTRICAL ENGINEERING AND COMPUTING SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Goran Jurković

DYNAMIC SOFTWARE UPDATE IN EMBEDDED SYSTEMS

MASTER THESIS

MAGISTARSKI RAD

Zagreb, 2011.

Page 3: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad izrađen je na Zavodu za elektroniku, mikroelektroniku, računalne i inteligentne sustave Fakulteta elektrotehnike i računarstva Sveučilišta u Zagrebu.

Mentor: prof. dr. sc. Vlado Sruk

Magistarski rad ima: 118 stranica, 29 slika i 2 tablice.

Rad br.:

Page 4: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad ocijenilo je povjerenstvo u sastavu:

1. Prof. dr. sc. Siniša Srbljić

2. Prof. dr. sc. Vlado Sruk

3. Prof. dr. sc. Goran Martinović – Sveučilište Josipa Juraja Strossmayera u

Osijeku, Elektrotehnički fakultet

Magistarski rad obranjen je pred povjerenstvom u sastavu:

1. Prof. dr. sc. Siniša Srbljić

2. Prof. dr. sc. Vlado Sruk

3. Prof. dr. sc. Goran Martinović – Sveučilište Josipa Juraja Strossmayera u

Osijeku, Elektrotehnički fakultet

Magistarski rad obranjen je: 2. prosinca 2011.

Page 5: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Zahvaljujem mentoru, prof. dr. sc. Vladi Sruku na strpljenju, stručnim savjetima, korisnim raspravama i velikoj potpori tijekom izrade ovoga rada.

Page 6: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Dinamička nadogradnja programske podrške ugrađenih sustava

5

Sadržaj

1. UVOD ................................................................................................................................ 8

2. Ugrađeni računalni sustavi ............................................................................................... 10

2.1. Povijesni razvoj ugrađenih računala.......................................................................... 12 2.2. Razlozi korištenja ugrađenih računala....................................................................... 13

2.2.1. Prilagodljivost ugrađenih računala..................................................................... 14

2.2.2. Niža cijena upravljačkog sklopa ........................................................................ 14

2.2.3. Razvoj ugrađenih računala ................................................................................. 15

2.2.4. Uloga uređaja s ugrađenim računalom............................................................... 16

2.2.5. Nedostatci primjene ugrađenih računala ............................................................ 19

2.2.6. Uporaba ugrađenih računala............................................................................... 20

2.3. Programiranje ugrađenih računala............................................................................. 21 2.3.1. Ugrađeno računalo s diskretnom programskom memorijom............................. 22

2.3.2. Ugrađeno računalo s integriranom memorijom ................................................. 23

2.3.3. Ugrađeno računalo unutar jednog čipa s izmjenom programske memorije unutar

sustava ................................................................................................................ 23

2.3.4. Ugrađeno računalo unutar čipa s programski implementiranim programatorom

integrirane FLASH memorije............................................................................. 25

2.3.5. Mikrokontroler temeljen na Von Neumann arhitekturi s programski

implementiranim programatorom ...................................................................... 28

2.4. Razvoj sveobuhvatnog računarstva ........................................................................... 28 2.4.1. Problemi prenatrpanosti sveobuhvatnog računarstva......................................... 29

2.4.2. Tablica politike i uloga u ponašanju sveobuhvatnog računarstva...................... 30

2.4.3. Sigurnost rasprostranjenog i sveobuhvatnog računarstva .................................. 30

2.4.4. Uređivanje sveobuhvatnog računarstva ............................................................. 31

3. Nadogradnja programske podrške sveprožimajućih ugrađenih sustava .......................... 33

3.1. Samostalna izmjena izvršnog programa .................................................................... 34 3.1.1. Agentski pristup rješenju samostalne nadogradnje ............................................ 35

3.2. Agent na poslužiteljskoj strani komunikacije............................................................ 36 3.2.1. Zadatci programskog agenta poslužitelja ........................................................... 37

3.2.2. Osvrt na potrošačku elektroniku ........................................................................ 38

3.3. Programski agent ugrađenog računala....................................................................... 39 3.3.1. Zadatci programskog agenta ugrađenog računala .............................................. 39

Page 7: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Dinamička nadogradnja programske podrške ugrađenih sustava

6

3.3.2. Netransparentnost zamjene programske podrške............................................... 40

3.3.3. Osvrt na potrošačku elektroniku ........................................................................ 41

3.4. Vrste programskih agenata unutar ugrađenog računala ............................................ 42 3.5. Agenti s izravnim zapisom u programsku memoriju................................................. 43

3.5.1. Zadatci dijela agenta unutar glavnog programa ................................................. 43

3.5.2. Zadatci samostalnog dijela agenta...................................................................... 44

3.5.3. Prednosti agenta s izravnim upisom u programsku memoriju .......................... 45

3.5.4. Nedostatci agenta s izravnim upisom u programsku memoriju ......................... 45

3.5.5. Transparentnost u radu i prekid rada ugrađenog računala ................................. 45

3.5.6. Osvrt na potrošačku elektroniku ........................................................................ 46

3.6. Agent s dodatnom memorijom većom od programske.............................................. 47 3.6.1. Zadatci dijela agenta unutar glavnog programa ................................................. 48

3.6.2. Zadatci samostalnog dijela agenta...................................................................... 48

3.6.3. Prednosti agenta s dodatnim memorijskim prostorom....................................... 49

3.6.4. Nedostatci agenta s dodatnim memorijskim prostorom..................................... 50

3.6.5. Transparentnost u radu i prekid rada ugrađenog računala ................................. 50

3.6.6. Osvrt na potrošačku elektroniku ........................................................................ 50

3.7. Komunikacija među agentima na ugrađenom računalu ............................................ 51 3.8. Izvedenice agenta s dodatnim memorijskim prostorom ............................................ 52 3.9. Agent kao zasebna aplikacija u višeprocesnome operacijskom sustavu ................... 52

3.9.1. Princip rada agenta kao zasebne aplikacije unutar operativnog sustava ............ 53

3.9.2. Zastoj rada aplikacije prilikom izmjene novom................................................. 53

4. Dinamička nadogradnja programske podrške .................................................................. 54

4.1. Mikrokontroler za ugrađeno računalo s funkcionalnošću samostalne izmjene programske memorije ................................................................................................ 55

4.1.1. Atmel AVR obitelj i samostalna izmjena programske memorije ...................... 58

4.1.2. Proširenje ugrađenog računala temeljenog na AVR obitelji dodatnom

memorijskom karticom ...................................................................................... 59

4.2. Testno ugrađeno računalo.......................................................................................... 60 4.3. Realizacija agenta s izravnom izmjenom programske memorije .............................. 65

4.3.1. Zadatci prvog dijela programskog algoritma agenta.......................................... 65

4.3.2. Zadatci drugog dijela programskog algoritma agenta........................................ 65

4.3.3. Analiza programskog algoritma agenta.............................................................. 66

4.3.4. Dijagram tijeka samostalnog algoritma agenta .................................................. 67

4.3.5. Tijek glavne funkcije.......................................................................................... 69

4.3.6. XML parser ........................................................................................................ 72

4.3.7. Tijek funkcije XML parsera............................................................................... 73

Page 8: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Dinamička nadogradnja programske podrške ugrađenih sustava

7

4.3.8. Intel HEX format parser ..................................................................................... 76

4.3.9. Tijek funkcije IHEX parsera .............................................................................. 78

4.3.10. Usporedba funkcije IHEX parsera u prekidnom obliku sa slijednim................. 81

4.3.11. Funkcija za zapis segmenta u programsku memoriju ........................................ 83

4.3.12. Funkcija za signalizaciju kraja zapisa ................................................................ 85

4.3.13. Prekidna rutina GPRS modula............................................................................ 86

4.3.14. Prekidna rutina sučelja prema osobnom računalu.............................................. 89

4.3.15. Funkcija za zapis okteta u prijemni međuspremnik ........................................... 90

4.3.16. Funkcija za provjeru i pokretanje glavnog programa......................................... 91

4.3.17. Prekidna rutina za sat ......................................................................................... 91

4.3.18. Rutine i funkcije za slanje podataka na osobno računalo................................... 92

4.3.19. Funkcija za kontrolu rada GPRS modula........................................................... 93

4.3.20. Grupa funkcija naredbi prema GPRS modulu.................................................... 94

4.4. Implementacija realiziranoga samostalnog dijela programskog agenta na klijentskoj strani komunikacije.................................................................................................... 96

4.5. Ispitivanje rada implementacije programskog agenta ............................................... 98 4.5.1. Način mjerenja i spremanja podataka .............................................................. 100

4.5.2. Rezultati mjerenja ............................................................................................ 102

4.5.3. Analiza mjerenja preuzimanja programa veličine 110KB ............................... 104

4.5.4. Analiza mjerenja preuzimanja programa veličine 8KB ................................... 106

5. Zaključak........................................................................................................................ 108

6. Literatura ........................................................................................................................ 110

7. Sažetak ........................................................................................................................... 115

8. Summary ........................................................................................................................ 116

9. Životopis......................................................................................................................... 117

10. Biography ....................................................................................................................... 118

Page 9: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

8

1. UVOD

Tehnološki razvoj ugrađenih računala definira nove pojmove poput sveoprisutnog,

sveprožimajućeg računarstva. Zbog smanjivanja dimenzija, povećanja stupnja

integracije i funkcija te povećane proizvodnje ugrađenih računala dolazi do velikog

pada njihove cijene. Na taj način ugrađena računala preuzimaju primat u industriji i

mijenjaju tehnološki starije i mogućnostima slabije kontrolere izvedene u diskretnoj

tehnici, mehaničko-električna rješenja ili potpuno mehanička rješenja.

Ugrađena računala kao računalni sustavi projektirani namjenski za upravljanje većim

sustavima obično su zasnovana na mikrokontrolerima. Današnji brzi razvoj, povećan

stupanj integracije i minijaturizacije omogućuje sveprisutnost uporabe ugrađenih

računala u raznim industrijskim proizvodima i svakodnevnom životu. Prednost je

uporabe ugrađenih računala u povećanju brzine razvoja proizvoda od idejnog

početka do realizacije. Na taj se način omogućuje značajno skraćenje vremena od

začetka ideje proizvoda do finalizacije njegove proizvodnje (engl. time to market).

Tako se industrija brzo prilagođava zahtjevima tržišta te omogućuje proizvodnju više

različitih vrsta proizvoda i njihovu bržu evoluciju kroz primjenu. Popratni efekti

povećavaju tržišnu utakmicu te se nadalje radi dodatan prtisak na skraćivanje ciklusa

razvoja proizvoda kako bi se preduhitrilo konkurenciju i pokušalo uzeti primat u

određenom segmentu proizvodnje. Vrlo se često zbog nedostatka vremena skraćuje

vrijeme ispitivanja proizvoda prije puštanja na tržište, što dovodi do potrebe za

skupim zamjenama ili njihovom nadogradnjom. S obzirom na intenzivnu uporabu

ugrađenih računala, uočeni su povećani problemi u radu nekog proizvoda koji se

izravno povezuju s pogreškama programske podrške (izvorno engl. bug). Takve vrste

pogrešaka u proizvodima mogu se u većini slučajeva razriješiti novim inačicama

programske podrške.

Sveprisutnost ugrađenih računala uz inherentno postojanje programskih pogrešaka

predstavlja novi izazov održavanju njihove programske podrške. Pritom ručno

održavanje velikog broja ugrađenih računala predstavlja veliki trošak proizvođačima

kad se uoče problemi u radu u jamstvenom roku uređaja, jer moraju plaćati servisere

ili imati zastupnike koji će te uređaje održavati. Nešto je povoljniji način održavanja

prepustiti ručno održavanje samim korisnicima, čime se na neki način narušava ugled

Page 10: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

9

proizvođača jer će korisnik biti primoran sam potražiti programsku nadogradnju na

internetskim stranicama proizvođača, nakon problema u radu uređaja.

Idejna je pretpostavka omogućiti korištenje komunikacijskih kanala ugrađenih u

ugrađeno računalo te napraviti samostalnu izmjenu izvršnog programa, putem

samostalnoga programskog agenta, transparetno za korisnika koji koristi to ugrađeno

računalo odnosno proizvod.

U radu se kao rješenje problema ručnog održavanja velikog broja ugrađenih računala

razmatra uporaba programskih agenata s ciljem ostvarenja dinamičke nadogradnje

programske podrške sveobuhvatnoga ugrađenog računarstva..

U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj

u smjeru niže cijene proizvodnje, kompaktnosti, njihova uloga, prednosti i nedostatci

korištenja u odnosu na upravljačke sklopove bez ugrađenog računala te svojstva

jednostavnijeg načina programiranja. Jednostavno programiranje omogućuje razvoj

samostalne izmjene programske podrške neophodan za što veću fleksibilnost

ugrađenih računala. Treće poglavlje opisuje način izmjene uloge ugrađenog

računala, odnosno nadogradnju programske podrške kroz agentski pristup, vrste

programskih agenata kroz tipove računala, njihove zadatke te prednosti i nedostatke.

Ujedno su prikazani uobičajeni načini nadogradnje programske podrške.

U četvrtom poglavlju razmatra se problem ostvarenja dinamičke nadogradnje

programske podrške na konkretnom primjeru ugrađenog računala, odnosno

industrijskog uređaja koji obavlja određenu zadaću. Predstavljen je realizirani

programski agent za samostalnu nadogradnju programske podrške putem GPRS

sučelja prema poslužitelju, uz minimalne zahtjeve nad sklopovljem ugrađenog

računala. Realizirani programski agent detaljno je ispitan u različitim uvjetima rada, s

detaljno analiziranim prikupljenim podatcima.

Na kraju je dan zaključak i sažetak te su ramotrene smjernice budućeg rada.

Page 11: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

10

2. UGRAĐENI RAČUNALNI SUSTAVI

Nagli tehnološki razvoj mikrokontrolera doveo je do masovne primjene ugrađenih

računala (engl. embedded computing) [1][2][3] u svim dijelovima industrije,

industrijske proizvodnje i potrošačke tehnike. Današnji elektronički uređaji, neovisno

o svojoj veličini, posjeduju ugrađene procesore koji obavljaju i kontroliraju sve njihove

funkcije.

Mali uređaji, poput miša ili tipkovnice za osobno računalo, imaju ugrađen

mikrokontroler, odnosno malo ugrađeno računalo. Također ga posjeduju telefoni

(mobilni ili fiksni), perilice za pranje rublja ili posuđa, hladnjaci, televizori, automobili,

vlakovi, dizala, itd. Svaki proizvod, neovisno o njegovoj veličini, posjeduje veće ili

manje ugrađeno računalo, iako se zapravo svaki taj uređaj može izvesti i dizajnirati

sa diskretnim elementima bez ugrađenog računala, mehaničko-elektronički ili

potpuno mehanički.

Prije početka primjene ugrađenih računala isti ti proizvodi izrađivali su se s diskretnim

elektroničkim ili mehaničkim elementima (operacijskim pojačalima, tranzistorima,

integriranim sklopovima, mehaničkim elementima), dok danas prevladava ugrađnja

malih računala u svaki od tih uređaja.

Vrlo jednostavan i znanstveno lako objašnjiv razlog tehnološkog napretka u smjeru

ugrađenih računala leži u fleksibilnosti kao i brzom razvoju proizvoda temeljenog na

ugrađenom računalu. Proizvod kojim upravlja ugrađeno računalo pruža veliku

fleksibilnost u radu, jednostavno izvedene dodatne mogućnosti te samostalno

testiranje ispravnosti uređaja, lakše rukovanje, itd. Shodno tomu, mobilni telefon uz

svoju primarne funkciju mobilnog telefoniranja nudi pregršt drugih funkcija, poput

usluge kratkih poruka (izvorno engl. Short Message Service, SMS) [4], fotografiranja,

videozapisa, prijenosa slike, glazbenog uređaja za reprodukciju glazbe, podsjetnika,

osobnog pomoćnika, kalkulatora, pristupa internetskim stranicama, i mnoge druge

funkcije [5].

U svakom je slučaju tehnološki napredak u smjeru sveprisutnih ugrađenih

računala[6][9] poželjan i olakšava čovječanstvu život u današnjem svijetu koji se

prebrzo odvija. Primjeri raznolikosti uporabe ugrađenih sustava prikazani su na slici

2.1.

Page 12: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

11

a)

b)

c)

d)

Slika 2.1. Primjeri uporabe ugrađenih računala: a) Igračka Najbolji prijatelj (izvorno engl. Best Friend),

b) Bežična videokamera u obliku kapsule (izvorno engl. Wireless video Camera Pill), c) Internetski

poslužitelj (izvorno engl. Web Server) pored vrha šibice, d) Pametni telefon procesorske snage

ekvivalentne osobnom računalu.

Ugrađena računala razvijaju se u dva osnovna smjera: prema povećanju performansi

i energetskoj učinkovitosti (engl. power efficency) [7].

Prvi smjer bavi se isključivo povećavanjem njihovih mogućnosti, računalne odnosno

procesorske snage, raspoložive memorije, zadržavajući ili smanjujući iste prvotne

dimenzije jer se ta računala ugrađuju uglavnom u proizvode većih dimenzija tako da

prostorna veličina nije pretjerano važna. Ipak, računala se iz generacije u generaciju

smanjuju pa se teži idealnom spoju jakih ugrađenih računala u što manjem volumenu

sa što manjom potrošnjom.

Drugi smjer teži zadržavanju istih ili nešto većih performansi, ali uz veliko

smanjivanje potrošnje električne energije te smanjivanje njihovih dimenzija. Naravno,

radi se o ekstremnom smanjivanju, što dovodi do pojave nanoračunala i

pikoračunala, koja troše mikroampere, a veličine su jednoga milimetra kubnog ili

manje.

Page 13: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

12

Nanoračunala poput projekta „Pametna prašina“ (izvorno engl. „Smart Dust“) [8]:

Autonomni senzor s komunikacijom unutar kubnog milimetra koja bi uskoro mogla

postati ugrađena i u nas same, dio naše kože, krvotoka ili organa [9].

Pametni mobilni telefoni (engl. smartphone) [17] iznimno su malih dimenzija, a

posjeduju procesorsku snagu osobnih stolnih računala od prije nekoliko godina.

2.1. Povijesni razvoj ugrađenih računala

Prva ugrađena računala bila su izgrađena od više integriranih sklopova [14][15],

slika 2.2. Centralni je dio procesor koji izvršava program unutar trajne programske

memorije (izvorno engl. Read Only Memory, ROM) [16] spojene na procesor preko

paralelne sabirnice. Zatim postoje radna memorija (izvorno engl. Random Access

Memory, RAM), kontrolni sklopovi poput davača takta (izvorno engl. clock circuit) [3],

nadzorni sklop za kontrolu rada procesora (izvorno engl. watch dog timer) [3], ulazno

izlazni sklop koji omogućuje spajanje na sustav u koji je ugrađen (izvorno engl. input-

output interface), i ostalo spojno sklopovlje (engl. glue logic). Kompletno ugrađeno

računalo nalazi se na tiskanoj matičnoj ploči s tiskanim vodovima koja ima određenu

veličinu [17][20].

Slika 2.2. Blok-shema ugrađenog računala s diskretnim elementima

Procesor Programska memorija

Radna memorija

Ulazno- izlazno sučelje

Dodatno kontrolno sklopovlje

sabirnica

Uređaj

Page 14: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

13

Trajna programska memorija koja je činila osnovu prvotnog dizajna ugrađenog

računala većinom je bila samo jednom programabilna (izvorno engl. Programabile

Read Only Memory, PROM) u samoj tvornici. Ovakav je proces spor i nefleksibilan

jer se programska memorija prije ugradnje u ugrađeno računalo mora programirati

stavljanjem u poseban programator te se PROM memorija nije mogla brisati u slučaju

pogreške u programu. Značajno ograničenje takvih računala predstavljaju i značajne

dimenzije koje onemogućuju primjenu za uređaje manjih dimenzija.

Veliki tehnološki napredak donosi pojava mikrokontrolera (engl. micro-controller) [3].

To su integrirani sklopovi koji u sebi objedinjuju procesor, trajnu i radnu memoriju,

sklop za davanje takta, nadzorni sklop za kontrolu rada procesora, ulazno-izlazne

linije pogodne za veće naponske razine ili struje, te ostale specifične periferne

uređaje. Danas isti nude i složenije sklopove unutar jednoga integriranog sklopa,

poput analogno-digitalnih pretvarača (izvorno engl. A/D converter), brojača impulsa

(izvorno engl: counters, timers), sklopova za pulsno-širinsku modulaciju (izvonrno

engl: Pulse Width Modulation, PWM), sklopovlja za raznu komunikaciju i slično.

Takvim tehnološkim napretkom oni postaju samodostatni te se može smatrati da se

proizvode kompletna ugrađena računala u jednom integriranom sklopu malih

dimenzija, a vrlo snažne procesorske snage s integriranom električki programibilnom

ugrađenom trajnom memorijom i radnom memorijom. S obzirom na zahtjeve

primjene ugrađenih računala, postoji širok raspon podržanih performansi

mikrokontrolera, koje obuhvaćaju zahtjevne ugrađene sustave s operacijskim

sustavima i radom u stvarnom vremenu pa do sustava s minimalnim zahtjevima.

2.2. Razlozi korištenja ugrađenih računala

Primarni razlog korištenja ugrađenih računala kao upravljačkih sklopova leži u

njihovoj fleksibilnosti, nižoj proizvodnoj cijeni i bržem vremenu razvoja uređaja kao

potrošačkog proizvoda od ideje do realizacije [19][20].

Page 15: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

14

2.2.1. Prilagodljivost ugrađenih računala

Funkcionalnost nekog uređaja gotovo u potpunosti definira program unutar

ugrađenog računala ograničenjima koje postavlja sklopovlje unutar uređaja odnosno

sučelje prema ugrađenom računalu.

Prednost ugrađenih računala leži upravo u rješavaju nedostatka korištenja

upravljačkih sklopova izvedenih sa diskretnim elementima koji su:

• ograničenost mogućnostima,

• nepostojanje zaštitnih algoritama u slučaju kvara nekoga ugrađenog aktuatora

ili senzora unutar uređaja,

• nemogućnost jednostavnog dodavanja opcija ili mogućnosti uređaja bez

kompletnog redizajna upravljačkoga sklopa,

• nemogućnost iskorištenja istoga upravljačkog sklopa na budućim

nadopunjenim modelima istog proizvoda, što je ekološki neprihvatljivo,

• nemogućnost ikakve fleksibilnosti upravljačkog sklopa, samostalne

dijagnostike kvara nekog senzora ili aktuatora.

2.2.2. Niža cijena upravljačkog sklopa

Dizajniranje neke matematičke ili logički složenije operacije kako bi se dobila

funkcionalnost nekog proizvoda redovito će biti kompliciranije i skuplje realizirati s

diskretnim elementima, bilo mehaničko-elektroničkim ili integriranim sklopovima.

Cijele složene sklopove mijenja jedan integrirani mikrokontroler.

Naravno, u ekonomsku računicu ulazi i ekonomičnost izrade uređaja, te što je

funkcija uređaja složenija, to je diskretni upravljački sklop skuplji i složeniji, a njega

jednostavno može zamijeniti jedan mali mikrokontroler, nekoliko puta ili nekoliko

desetaka puta jeftiniji, i uz malu doradu upravljačkog programa mogu se dodati nove

popratne funkcionalnosti proizvodu.

Primjer su perilice rublja s mehaničkim upravljačkim sustavom koje se i danas mogu

naći u kućanstvima, a koje savršeno obavljaju svoju funkciju, slika 2.3. No „mehanički

Page 16: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

15

programator“ u tim perilicamadanas stoji nekoliko puta više u proizvodnji od jednog

ugrađenog računala koje može omogućiti i cijeli niz dodatnih funkcija poput

„pametnog“ odnosno ekonomičnog pranja, javiti vrijeme završetka pranja i sadrži

slične napredne funkcije.

Slika 2.3. Mehanički programator za upravljanje perilicom rublja.

Osim za poboljšavanje osnovnih funkcionalnosti, napredni upravljački sklopovi sve se

češće uporabljuju za dodavanje mnogih nefunkcionlnih svojstava s ciljem boljega

privlačenja kupaca i poboljšanja prodaje. Tehnološki napredniji uređaj lakše će naći

svoga potrošača od tehnološki zastarjelog uređaja, tako da tržišna utakmica uzrokuje

masovnu primjenu, a što daljje utječe na smanjenje cijena.

2.2.3. Razvoj ugrađenih računala

Zbog fleksibilnosti uređaja, njegov je razvoj od ideje do proizvoda (engl. Time To

Market) mnogo kraći, a samim time i jeftiniji. Uređaj se prilikom dizajna sklopovlja

mora manje testirati, moguće je napraviti dizajn unaprijed po iskustvu za slične

proizvode, i samim programom koje će ugrađeno računalo izvršavati definirati finalnu

funkcionalnost uređaja. Zbog toga su manje vjerojatne pogreške u dizajnu sklopovlja,

a male dopune ili izmjene funkcionalnosti neće zahtijevati redizajn sklopovlja od

početka kao kod diskretnih elemenata.

Page 17: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

16

U procesu dizajna određenog proizvoda temeljenoga na ugrađenom računala postoji

nekoliko karakterističnih koraka [21][22]:

• definiranje proizvodnih zahtjeva,

• definiranje funkcijskih zahtjeva,

• odabir procesora,

• sklopovsko-programska specifikacija

• sustavno vrednovanje,

• sklopovski dizajn,

• dizajn ugrađenog programa,

• integracija i

• verifikacija.

Pritom se koraci mogu ponavljati u slučaju da dizajn prethodnoga koraka nije

odgovarajući. Rijetko će se dizajn i odabir samog procesora mijenjati u kasnijim

fazama razvoja proizvoda iako ni to nije isključeno.

2.2.4. Uloga uređaja s ugrađenim računalom

Namjena nekog uređaja zasnovanog na ugrađenom računalu velikim dijelom ovisi o

programskoj podršci samoga ugrađenog računala [25][26] unutar određenih

ograničenja. Predstavljena ograničenja funkcionalnosti definirana su u samom

dizajnu sklopovlja uređaja. Istina, ugrađeno računalo neće dati nove uloge ili

funkcionalnosti nekom uređaju ako te funkcionalni nisu moguće, no u slučaju više

namjenskih uređaja poput mobilnog telefona, njegovu ulogu doslovce definira sam

izvršni program. Mobilni telefon ima sve potrebno: zvučnik, mikrofon, zaslon,

tipkovnicu, dodatne memorijske kartice, GSM i GPRS podršku, procesor za

multimedijalnu podršku, razne vrste komunikacije poput bluetootha, itd. [27]-[33]

U jednom takvom okruženju njegova uloga počiva strogo na programskoj podršci

unutar tih zadanih ograničenja. Hoće li mobilni telefon postati i videoplayer, diktafon,

ili nešto treće, definirat će tim programera koji radi programsku podršku. Ovdje se

Page 18: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

17

pojavljuje pojam već viđenoga. Jedan model mobilnog uređaja može biti prepakiran u

noviji model samo s izmijenjenim kućištem, odnosno vanjskim izgledom, a u biti se

radi o istom modelu s novijim programom i dodanim funkcionalnostima.

Kad govorimo o ugrađenim računalima, asocira nas to na ugrađene mikrokontrolere.

Određeni mikrokontroler ima jako širok spektar primjene. Sučelje prema uređaju, ako

je dobro definirano u samom startu, kasnije će omogućiti nove funkcionalnosti kako

se programska podrška razvija.

Primjer takvoga multimedijalnog uređaja proizvod je marketinški nazvan MP4. Iako

izvorno dolazi od naziva audiokompresorskog algoritma, odnosno standardiziranog

formata pod nazivom MPEG Layer 3, zapravo se radi o multimedijalnom uređaju s

funkcionalnošću reprodukcije glazbe u istom formatu. Sadrži pregršt novih funkcija

koje su omogućile izmjene u dizajnu poput malog zaslona u boji visoke rezolucije, i

tako dalje. Nove su funkcionalnosti izvođenje videoigrica, prikazivanje videozapisa,

digitalnih fotografija, FM radioprijamnika, diktafona, i tako dalje.

Uređaj jako podsjeća na mobilne telefone bez tipkovnice i bez dijela za bežičnu

komunikaciju. Gotovo je sigurno da su tvrtke proizvođači mobilnih telefona istu

tehnologiju, uz manje izmjene, iskoristili za proizvodnju potpuno novog uređaja.

Ovo je samo još jedan pokazatelj fleksibilnosti uređaja s ugrađenim računalom, te

definicija funkcionalnosti izvršnim programom unutar zadanih ograničenja definiranih

čvrstim dijelom uređaja u koje je računalo ugrađeno.

No sve veća prisutnost ugrađenih računala unutar uređaja koji nas okružuju dovodi

do izraza „već viđeno“, slika 2.4. pa recikliranje postojećih proizvoda uz malu izmjenu

dizajna, izmjenom programske podrške, dodaje nove funkcionalnosti.

Page 19: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

18

a) b)

Slika 2.4. Primjer fleksibilnosti ugrađenog računala koja omogućuje da se u potpunosti izmijeni uloga

finalnog proizvoda: a) MP4 digitalni multimedijalni uređaj, b) Mobilni telefon.

Page 20: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

19

2.2.5. Nedostatci primjene ugrađenih računala

Zbog tehnološkog razvoja mikrokontroleri postaju sve manji, troše manje energije, a

sve su brži. Ta se tehnologija temelji na povećanju gustoće pakiranja čipova te

smanjenju radnog napona i potrošnje.

Negativna strana povećanja gustoće pakiranja poluvodiča jest njegova veća

osjetljivost na vanjske utjecaje poput statičkog pražnjenja, elektromagnetskog

impulsa i slično. Iako su sami čipovi zaštićeni od tih utjecaja prilikom projektiranja,

dodatna zaštita provodi se i vanjskim sklopovima pri projektiranju ugrađenog

računala s raznim metodama zaštite od prenapona i vanjskih utjecaja do određene

mjere.

U slučaju sigurnosno osjetljivih sustava ponekad se uporabljuju starije

elektromehaničke tehnologije No jača će elektromagnetska pražnjenja ili impulsi

djelomično ili potpuno uništiti ugrađeno računalo. Zbog tih nedostataka ponekad

treba zadržati staru tehnologiju; tako se i danas čuvaju vojni mlazni zrakoplovi koji su

potpuno pogonjeni elektronskim cijevima, umjesto poluvodičkih ugrađenih računala

jer elektronske cijevi nisu poput poluvodiča osjetljive na snažne elektromagnetske

impulse koji nastaju uslijed nuklearnih eksplozija. No to je samo poseban izuzetak.

Pri primjeni ugrađenih računala potrebno je osim rješavanja sklopovskih problema

posebnu pozornost posvetiti razvojnom procesu programske podrške, što zahtijeva

posebna znanja programskog inženjerstva.

Page 21: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

20

2.2.6. Uporaba ugrađenih računala

Tehnološki napredak u smjeru masovne pojave ugrađenih računala poželjan je i

olakšava svakodnevni život, no takav napredak ima svoje negativne strane.

Svakako, pozitivna strana ugrađenog računala kao upravljačkog sklopa unutar nekog

uređaja daje istomu veliku fleksibilnost, nove funkcije i jednostavna unapređenja

funkcija u budućnosti, jer funkcije koje neki uređaj ima sada leže gotovo isključivo na

ugrađenom računalu. Ograničenje funkcionalnosti ugrađenog računala definirano je

ostalim uređajima i sklopovima unutar nekog proizvoda, no unutar tih granica

ograničenja, definicija proizvoda izravna je posljedica izvršnog programa koji

ugrađeno računalo izvršava. Sad se jednostavnom zamjenom izvršnog programa

rješavaju mogući problemi u radu ugrađenog računala te dodaju nove funkcionalnosti

u hodu, odnosno kako se za njima pokaže potreba bez velikih ili ikakvih izmjena u

samom dizajnu cjelokupnog sklopovlja uređaja.

Negativna strana brzoga tehnološkog napretka jest ta da se čovječanstvo pretvara u

potrošačko društvo koje svakih nekoliko godina nanovo kupuje isti proizvod jer je

stari tehnološki zastarjeo, iako potpuno funkcionalan.

Drugi je veliki problem održavanje toga velikog broja ugrađenih računala koja se

nalaze svuda oko nas, u svakoj pori ljudskog postojanja, jer utrka za tržištem i

ugrađena računala omogućuju jako brz razvoj nekog uređaja od same ideje do

konačnog proizvoda. No ne i detaljno testiranog jer je upravo fleksibilnost

upravljačkog uređaja omogućila da se sami uređaj dizajnira dosta grubo i za vrlo

kratko vrijeme, jer i tako će samu funkcionalnost dati izvršni program. Ovime su

dizajneri-programeri pod sve većim pritiskom od uprava tvrtki, u što bržoj proizvodnji

izvršnih programa bez sveobuhvatnih testiranja proizvoda kao nekad u vrijeme

diskretnih elemenata unutar upravljačkih jedinica. Samim time dolazimo do pojave

pogrešaka unutar izvršnoga koda (izvorno engl. bug).

Page 22: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

21

2.3. Programiranje ugrađenih računala

Specifičnost ugrađenih računala predstavlja ovisnost o programskoj podršci koju ta

računala izvršavaju. Tako je fleksibilnost samih ugrađenih sustava uvelike ovisna o

brzom i jednostavnom programiranju programske memorije ugrađenog računala.

Tijekom povjesnog razvoja ugrađenih računala možemo razlikovati nekoliko različitih

faza po načinu programiranja programske memorije, koje su dovela do suvremenog

načina programiranja od ugrađenih računala sastavljenih od nekoliko diskretnih

elemenata (procesor, programska memorija, radna memorija) do ugrađenog računala

unutar jednog čipa, takozvanih mikrokontrolera.

U tablici 2.1. prikazana su svojstva uporabe pojedinih tipova programskih memorija

uobičajeno uporabljivanih u ugrađenim sustavima, njihov način programiranja,

mogućnost brisanja odnosno ponovnog pisanja sadržaja, te načini izmjene sadržaja

unutar samoga ugrađenog računala.

Page 23: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

22

Svojstva memorija Vrsta

VIP PUUG SPBP

Način izmjene sadržaja

PROM

Programiranje memorije stavljanjem u poseban

programator.

EPROM

Programiranje stavljanjem u poseban programator.

Brisanje traje nekoliko desetaka minuta

osvjetljavanjem čipa ultraljubičastim svjetlom.

EEPROM

Programiranje stavljanjem u poseban programator

koji omogućuje i brisanje svakog okteta posebno.

FLASH

Programiranje stavljanjem u poseban programator,

brisanje cijele memorije jednim korakom

programatorom.

MCU ISP

Programiranje u sustavu spajanjem posebnog

programatora na ugrađeno računalo putem

posebne serijske sabirnice.

MCU BL

Programiranje u sustavu u kojem je sam

programator implementiran u program.

Tablica 2.1. Svojstva programskih memorija (VIP: Višestruka izmjena programa, PUUG:

Programiranje unutar ugrađenog računala, SPBP: Samostalno programiranje bez programatora, MCU

ISP: Mikrokontroler programiran u sustavu, MCU BL: Mikrokontroler s programatorom

implementiranim u program).

2.3.1. Ugrađeno računalo s diskretnom programskom memorijom

Prva je faza zamjene programske podrške ugrađenog računala bila fizičko stavljanje

programske memorije PROM ili EPROM u specijalni programator putem paralelne

sabirnice. Pritom je brisanje PROM memorije bilo nemoguće, dok se EPROM mogao

i više puta korisititi posebnim postupkom brisanja s ultraljubičastim svjetlom, slika

2.5., gdje bi to brisanje potrajalo nekoliko desetaka minuta. Razvojem memorijskih

tehnologija EEPROM i FLASH memorija omogućuje se jednostavnije brisanije i

pisanje u diskretne memorijske sklopove. Kod EEPROM memorija programator bi

Page 24: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

23

električno izbrisao (obično većim naponom od radnog napona) svaki oktet posebno

prije upisa u isti. Time je povećano vrijeme samoga pisanja jer brisanje uzima dosta

vremena. Radi toga je ravijena podgrupa FLASH memorija koje brišu cijele segmente

ili cijelu memoriju jednim korakom, električno.

Slika 2.5. Prva faza razvoja programiranja, EPROM i programer a) EPROM memorija b)

uvećanje prozorčića EPROM memorije c) EPROM programator.

2.3.2. Ugrađeno računalo s integriranom memorijom

U drugoj fazi, razvojem EEPROM i FLASH programskih memorija, njihovom većom

gustoćom pakiranja na jednom čipu, te nižom proizvodnom cijenom, proizvođači

integriraju programsku memoriju u sam procesor, takozvani mikrokontroler s

mogućnošću teoretski neograničenog brisanja i ponovnog pisanja programske

memorije (broj se kreće između 10.000 i 100.000 pisanja brisanja). Na ovaj se način

smanjuje broj komponenata, a promjena sadržaja programske memorije zahtijeva

vađenje mikrokontroler iz ugrađenog računala, stavljanje u programator (putem

paralelnog sučelja, slično kao i kod diskretne FLASH memorije) i promijenu zapisa u

programskoj memoriji.

2.3.3. Ugrađeno računalo unutar jednog čipa s izmjenom programske memorije unutar sustava

Sljedeća faza ravoja usmjerena je prema jednostavnom programiranju trajne

memorije unutar mikrokontrolera putem serijske sabirnice, spajanjem na poseban

programator, slika 2.6. Ovakav način programiranja omogućuje izmjenu izvršnoga

programa spajanjem ugrađenoga računala na programator bez vađenja ugrađenoga

Page 25: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

24

računala iz uređaja (izvorno engl: In circuit Serial Programing, ISP) [34], čime se

omogućuje programiranje ugrađenoga računala u posljednjoj fazi proizvodnje,

neposredno prije pakiranja proizvoda, te ponovno reprogramiranje u slučaju razvoja

ili pogrešaka u radu.

OSC

USB

SPI

USB Adapter

PC terminal

MCU

Kontrolni signali

RS232

OSC

MCU

Sučelje prema uređaju

Programator Ugrađeno računalo

Slika 2.6. Blok shema programatora i ugrađenog računala.

Ovakav način programiranja ugrađenog računala ima svoje nedostatke, iako

predstavlja veliki tehnološki skok. U slučaju neispravnog rada proizvoda, ili prilikom

potrebe dodavanja novih funkcionalnosti proizvodu, što u biti predstavlja izmjenu

izvršnoga programa, potrebno je dostaviti uređaj ovlaštenom servisu koji će izvršiti

spajanje specijalnim programatorom putem serijskog sučelja na ugrađeno računalo i

obaviti izmjenu programa. Primjer su ovakve uporabe mobilni telefoni starijih

generacija koji su postali toliko komplicirani s mnogo funkcija, izvršni program

postajao je sve kompliciraniji tako da se jednostavno pojavljuju greške u samome

izvršnom programu. Iako je zamjena programa bila relativno jednostavna za izvesti,

ograničavajući faktor predstavlja upravo poseban programator kao sučelje između

ugrađenoga računala i osobnog računala, tako da je ovaj način bio nedovoljno

fleksibilan.

Vrlo često rješenje proizvođača predstavlja integracija programatora unutar uređaja,

a sam posao nadogradnje programske podrške prepušta se korisniku koji sam

odlučuje o potrebi nadgradnje programske podrške koju preuzima od proizvođača.

Preduvjet ovakvo korisnički distriburane nadogradnje jest povezivanje mobilnog

telefona na osobno računalo univerzalnim kabelom (poput USB sučelja), te

Page 26: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

25

učitavanjem s Interneta, stranice proizvođača, novoga izvršnoga koda, kada korisnik

sam zamjenjuje izvršni kod u mobilnom telefonu.

2.3.4. Ugrađeno računalo unutar čipa s programski implementiranim programatorom integrirane FLASH memorije

Predposljednja faza razvoja izmjene izvršnoga programa, odnosno trajne memorije

unutar novih mikrokontrolera dobiva novu dimenziju. Proizvođači procesora ugrađuju

procesoru napredne funkcije u kojima sam izvršni program, koji se izvršava unutar

procesora u posebnom segmentu programske memorije, ima mogućnost samostalne

izmjene cijele programske memorije [35], slika 2.7.

Slika 2.7. Programski prostor rezerviran za startni program odnosno rutine za izmjenu

programske memorije.

Sklopovlje samoga mikrokontrolera prošireno je funkcionalnošću zapisa u FLASH

programsku memoriju. Do sklopovlja se pristupa preko memorijskih registara putem

kojih se napuni međuspremnik novim oktetima koji će biti zapisani u trajnu

programsku memoriju, isto tako pozivom funkcije putem registra u koji se upiše

lokacija odnosno segment memorije u koju će međuspremnik biti spremljen. Na slici

0KB

120KB Rutine za izmjenu programske mem.

Prog

ram

ska

mem

orija

Izvršni program

128KB

Page 27: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

26

2.8. prikazana je podjela memorijskog prostora s lokacijama rezerviranima za

korisnički program u prvih 120KB programske FLASH memorije te izvršni program

samog programatora, odnosno startnog programa (engl. bootloader), koje su

smještene na gornjim adresama u zadnjih 8KB programske memorije.

Programska memorija

8KB Memorijske lokacije koje su čitljive čak i prilikom

zapisa u programsku FLASH memoriju

Memorijske lokacije koje nisu čitljive prilikom zapisa u

programsku FLASH memoriju

120KB

0000

1E000

1FFFF

Slika 2.8. Organizacija programske memorije kod mikrokontrolera s mogučnošću samostalne

izmjene programske memorije samo iz posebnog dijela programske memorije.

FLASH memorija ima ograničenje u radu, a to je nemogućnost pristupa odnosno

čitanja memorije dok je u tijeku pisanje u nju. Dakle, kako se radi o programskoj

FLASH memoriji iz koje se izravno izvršava program, prilikom pisanja u memoriju

procesor nije u mogućnosti čitati dalje program koji izvršava. U tom bi slučaju bilo

neophodno uporabiti dodatni mikropocesor za ostvarene funkcije preprogramiranja.

Naprednija rješenja problem riješavaju na tako da fizički postoje dvije sekcije FLASH

memorije unutar mikrokontrolera koje su raspodjeljene u memorijskom adresnom

prostoru prema slici 2.8. Zadnjih 8kb u adresnom prostoru predstavlja dio FLASH

memorije koju procesor može čitati i na taj način izvršavati program dok istodobno

piše po ostatku programske memorije.

Iako rutine i registri dopuštaju programu zapis u bilo kojem dijelu memorije, bit će vrlo

teško izvesti zamjenu samoga startnog programa (engl: Bootloader) koji se nalazi u

Page 28: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

27

posebnom dijelu programske memorije zbog Harward arhitekture računala, gdje se

programski kod može izvršavati samo iz programske, u ovom slučaju FLASH

memorije.

Zbog toga su mikrokontroleri unatrag kompatibilni, tako je moguće spojiti

mikrokontroler unutar ugrađenoga računala preko posebne serijske sabirnice na

programator i zamijeniti bilo koji dio programske memorije, ili čak fizički izdvojiti

mikrokontroler iz ugrađenog računala te ga spojiti na programator FLASH memorija

putem paralelne sabirnice poput starih FLASH memorija.

Prilikom izrade uređaja s ugrađenim računalom mikrokontrolerom ove vrste,

proizvođač uređaja s ugrađenim računalom mora napisati program (Bootloader)

odnosno rutine za samostalnu izmjenu programske memorije i putem serijske

sabirnice isti upisati u gornji dio programske memorije rezerviran za te rutine.

Ponekad će sam proizvođač mikrokontrolera učiniti taj korak te postaviti standardni

program za izmjenu programske memorije. Time se proizvođačima uređaja olakšava

jer mogu preskočiti ovaj korak. Kad je uređaj dizajniran i sastavljen, njegovim

spajanjem na osobno računalo upisuje se programska podrška putem protokola koji

je propisao proizvođač mikrokontrolera (ako se koristi i postoji tvornički startni

program) ili nekoga posebnog protokola koji koristi sam proizvođač tog uređaja (ako

proizvođač koristi svoje rutine za zamjenu programske memorije).

Način rada standardnog startnog programa jest sljedeći:

• Provjeriti je li programska memorija prazna ili postoji program.

• Ako nema korisničkoga programa, čekati uspostavu komunikacije od strane

osobnog računala korištenjem neke od standardnih vrsta komunikacije poput

serijske RS232 ili USB, te preuzeti segment po segment izvršnoga programa i

zapisati ga u programsku memoriju.

• Pokrenuti izvršni program u prvom dijelu programske memorije ako je zapis

uspješno završen; u protivnom sve ponoviti.

Na taj način tehnologija otvara vrata za samostalno održavanje ugrađenih računala,

odnosno proizvoda u koje su ugrađeni bez ili sa minimalnom intervencijom korisnika,

Page 29: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

28

u svrhu dopuna izvršnih programa ili popravljanja propusta, izradom složenijega

korisničkoga startnog programa.

2.3.5. Mikrokontroler temeljen na Von Neumann arhitekturi s programski implementiranim programatorom

Posljednja faza razvoja izmjene izvršnoga programa predstavlja proširenje

prethodne. Susreće se na naprednijim arhitekturama mikrokontrolera temeljenima na

Von Neumann arhitekturi, gdje su ograničenja čitanja FLASH memorije riješena tako

da se dio programskih rutina za programiranje kopira u radnu memoriju i izvršava iz

radne memorije kako bi FLASH trajna memorija bila dostupna za pisanje. Radi

jednostavnosti proizvodnje uređaja s ovim mikrokontrolerima, proizvođači tog tipa

mikrokotrolera ugrađuju i manju količinu programske memorije u kojoj se nalazi

tvornički startni program za punjenje programske memorije putem određenoga

standardnog sučelja, na primjer USB-a, te su proizvođači ponudili i programsku

podršku za osobna računala koja komuniciraju s tim standardnim startnim

programom.

Jednom kad proizvođač uređaja upiše svoj program u FLASH memoriju ugrađenog

računala, taj se program sam mora pobrinuti i imati rutine za samostalnu izmjenu

FLASH memorije, pri čemu mu je na raspolaganju radna memorija te ostali

raspoloživi tipovi memorija koje mogu biti na raspolaganju.

2.4. Razvoj sveobuhvatnog računarstva

Kako se ugrađena računala brzo šire u sve grane ljudske djelatnosti i samog bitka

čovječanstva, sveobuhvatno računarstvo postaje ljudska svakodnevica, iako nismo ni

svjesni koliko nas ugrađenih računala zaista okružuje. Neka istraživanja pokazuju

kako danas jedna osoba u svijetu ima oko 100 ugrađenih računala u svom okruženju.

Broj mikrokontrolera koji nas okružuju raste eksponencijalno. Istraživanja predviđaju

oko 100 tisuća malih sveobuhvatnih jedinica koje će opstajati u okruženju jednoga

čovjeka u desetljećima koja predstoje [37].

Page 30: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

29

Uzevši u obzir 6 milijardi ljudi koji žive na zemlji, radi se o broju računala koji je teško

zapisati. Dakle istraživanja predviđaju oko 6·1014 računala koja postoje na zemlji,

sama se organiziraju, održavaju i konfiguriraju.

Mnoga računala koja okružuju jednoga čovjeka predstavljaju određeni problem.

Čovjek neće imati vremena za njihovo održavanje ili konfiguriranje. Zato će

sveobuhvatno računarstvo biti primorano razvijati se upravo u tom smjeru

samostalnog organiziranja u koherentne cjeline samostalnog održavanja i

konfiguriranja.

Za mnoga računala potrebna je nova vrsta njihove međusobne interakcije temeljene

na biološkim organizmima [36][38].

2.4.1. Problemi prenatrpanosti sveobuhvatnog računarstva

Pored prednosti koje ugrađena računala donose čovjeku, njihov sve veći broj koji ga

okružuje (engl. pervasive) nosi određene probleme:

• sklop za napajanje (velike količine baterija),

• zagušenost komunikacija.

Velike količine baterija, potpuno nepraktične za 100 tisuća procesora po osobi, koje

imaju i ekološke posljedice velik su problem. Dio tog problema mogu riješiti solarne

ćelije i napajanje putem sunca, ali to nije izvedivo u svim okruženjima.

Računalna industrija morat će raditi i na novim izvorima napajanja, možda gorivim

ćelijama, toplini tijela kao izvoru, solarnim ćelijama, itd.

Drugi veliki problem predstavlja zagušenje komunikacija. Zbog velikog broja

računala, radioprostor će biti zagušen različitim odašiljanjima. Jedan od načina na

koji taj problem možemo umanjiti jest vremensko dijeljenje određene frekvencije za

komunikaciju. No mnoga računala koja komuniciraju mogu predstaviti ozbiljan

problem ako se prenosi veća količina podataka.

Procesorska snaga, a ne brzina glavni je problem za dizajniranje budućih

sveobuhvatnih računala i procesora. Kako dobiti što više procesorske snage uz što

manju potrošnju energije. Osmobitni mikrokontroleri s RISC jezgrom imaju otprilike

Page 31: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

30

jedan MIPS procesorske snage po jednom megahercu takta, dok recimo

tridesetdvobitni ima pedest posto više procesorske snage na istom taktu. Tako se s

višejezgrenim procesorima ili višebitnim procesorima uz isti takt može dobiti i više

procesorske snage, te sve većom gustoćom pakiranja i manju potrošnju.

2.4.2. Tablica politike i uloga u ponašanju sveobuhvatnog računarstva

Predefiniranjem politike (engl. policy) i uloga (engl. roles) te načina ponašanja

određenog računala definiramo i međuodnose te korelacije s ostalim računalima

prisutnima u okolini. Na taj je način, ako su ove uloge standardizirane, moguće

jednostavnije udruživanje ovih računalnih jedinki u veće cjeline. Iako su uloge

predefinirane u tvornici, iste se mogu i dinamički mijenjati, zajedno s izvršnim kodom.

Na taj je način omogućen scenarij zamišljen kao tema ovoga rada.

Pritom će standardizacijom politike i uloga u svijetu sveobuhvatnog računarstva biti

moguće svrstati zajedno grupe uređaja koji rade sličan posao, te će se moći

jednostavnije i lakše prilagoditi postavkama korisnika. Nemoguće je očekivati da će

korisnik konfigurirati svaki od tih uređaja zasebno, kada broj uređaja preraste

nekoliko stotina, a daleko od predviđenog broja stotinu tisuća ugrađenih računala.

Jedini način kako bi se ta masa sveobuhvatnih računala mogla držati pod kontrolom

jest pažljiva izrada standarda sveobuhvatnog računarstva, koji će moći opisati bilo

koji novi proizveden uređaj te ga prema standardu klasificirati i dodijeliti mu politiku

ponašanja i ulogu [39].

2.4.3. Sigurnost rasprostranjenog i sveobuhvatnog računarstva

Sigurnost (engl. security) sveobuhvatnog svijeta računala može postati vrlo velik

problem nakon što ugrađena računala preuzmu kontrolu svih životnih procesa

čovječanstva (promet, zaštita od požara, elektro-energetski sustav i slično) i postanu

povezana. To se ogleda u kompliciranosti uređivanja vatrozidova (engl. firewall),

Page 32: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

31

prespojnika (engl. Router), interakcija kroz mnogostruko organizirane granice i

ograde, specifikacija, analiza, integracija za različite operativne sustave, baze

podataka, itd.[44][45]

Velika je potreba za transparentnom zaštitom sveobuhvatnog računarstva, za

mogućnošću postavljanja različite razinezaštite, odnosno različite razine povjerenja

među različitim vrstama sveobuhvatnih računala.

Mali uređaji s povjerljivim podatcima podložni su krađi ili gubitku, tako da se vrlo

često kao bolja alternativa razmatara biometrička autentifikacija, kao što je otisak

prsta, rožnica ili nešto slično.

U današnje doba dobru lekciju loše dizajnirane sigurnosti možemo naći u uslugama i

uređajima koje masovno koristimo. To su bežični telefoni, mobilni telefoni, infracrveno

daljinsko otvaranje garažnih vrata, CATV dekoderi. Gotovo da ne postoji vrsta zaštite

koja se ne može zaobići ili probiti na neki način. U biti zaštita bude probijena u svemu

što je vrijedno truda.. Stoga u budućnosti treba pažljivo planirati i sigurnost

sveobuhvatnog računarstva, kako komunikacije među njima tako i same

konfiguracije. Zbog prožimanja sveobuhvatnog računarstva u svim porama ljudske

djelatnosti, sigurnost ugrađenih računala mora se poboljšavati [46].

2.4.4. Uređivanje sveobuhvatnog računarstva

Uređivanje (engl. management) rasprostranjenoga i sveobuhvatnog računarstva

postaje prava noćna mora za ljude koji to računarstvo koriste. Kompleksnost cijelog

sustava, kada cijelo sveobuhvatno računarstvo gledamo kao jedan sustav, iznimno je

velika. Ukupan broj uređaja nadilazi mogućnosti tradicinalnog upravljanja ljudkim

resursima.

Greške koje se mogu dogoditi u takvim sustavima mogu blokirati cijele regije u

ljudskom svijetu (na primjer pogreška u signalnom prometnom sustavu ili pad

komunikacijske mreže).

Svijet u sustavu rasprostranjenosti sveobuhvatnog računarstva može postati pravi raj

za računalne viruse, crve i zlonamjerne ljude koji znaju kako probiti sigurnost sustava

i iskoristiti ga u osobne svrhe.

Page 33: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

32

Sustav može propagirati lažne informacije o pojedinim računalima ili organizacijama

te na taj način zlorabiti sustav. Također se radi o velikoj kompleksnosti programske

podrške na računalima, radnim stanicama ili poslužiteljima.

Page 34: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

33

3. NADOGRADNJA PROGRAMSKE PODRŠKE SVEPROŽIMAJUĆIH UGRAĐENIH SUSTAVA

Tehnološki napredak razvoja fleksibilnosti izmjene odnosno samostalnog

programiranja mikrokontrolera omogućio je i njihov posljednji korak u tehnološkoj

evoluciji, uz veliku rasprostranjenost GSM i GPRS komunikacije, koja ugrađenom

računalu omogućuje spajanje na Internet, slika 3.1. [47]. Proizvođači su uvidjeli

prednosti samostalne izmjene programske memorije putem Interneta (engl. Firmware

Over The Air, FOTA) [49], koju posjeduje svaki kvalitetniji proizvod s ugrađenim

računalom i pristupom na Internet.

Slika 3.1. Ugrađeno računalo s mogućnošću samostalne izmjene programske memorije i GPRS

modulom za spajanje na Internet.

Samostalna izmjena programa proizvođačima pomaže u očuvanju ugleda, jer će

moći dopuniti programe proizvoda ili popraviti greške prije nego što ih korisnici uopće

primijete [50][51].

0KB

120KB Rutine za izmjenu programske mem.

Prog

ram

ska

mem

orija

Izvršni program

GPRS

Page 35: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

34

3.1. Samostalna izmjena izvršnog programa

Samostalna izmjena izvršnog programa osnova je daljnjega tehnološkog napretka

ugrađenih računala koja su na neki način komunikacijski povezana na Internet, bilo

izravno putem GPRS komunikacije ili neizravno putem neke druge komunikacije.

Osnova ovako naglog porasta primjene ugrađenih računala leži upravo u njihovoj

fleksibilnosti te jednostavnoj zamjeni uloge. No, to nije dovoljno za budući napredak.

Negativne strane već su spomenute, a među kojima je najizraženija pojava grešaka u

programskome izvršnom kodu.

Uzmimo kao primjer novije generacije mobilnih telefona koji imaju na raspolaganju

sve predispozicije za napredak u ovom smjeru. Današnji mobilni telefon imaju

dovoljno resursa za implementaciju funkcionalnosti samostalne izmjene svoga

izvršnog programa, te mogućnost pristupa Internetu putem GPRS-a. Uporabom tih

resursa omogućena je samostalna nadogradnja koja može biti potpuno

transparentna korisniku. Mobilni telefon sam će se spojiti na internetske stranice

proizvođača i provjeriti postojanje novije inačice izvršnoga koda. Ako ona postoji,

može je potpuno transparentno učitati, ili tražiti dopuštenje korisnika za tu akciju.

Nakon što je nova inačica pohranjena u privremenu memoriju, te provjerena njena

ispravnost, nakon ciklusa ponovnog starta uređaja može se uporabljivati.

Korist od ovakve funkcionalnosti imaju i proizvođači i potrošači jer omogućuje

jednostavnu nadogradnju. Ovo se naravno odnosi na sve uređaje koji na ovaj ili onaj

način imaju pristup Internetu. Time jedinke, ugrađena računala, na neki način postaju

samosvjesni organizmi koji se sami održavaju sa ili bez nadzora njihovih vlasnika.

Funkcionalnost samostalnog održavanja već je uobičajena na osobnom računalu.

Gotovo svaka aplikacija u svim operativnim sustavima ima istu funkcionalnost te će

prilikom svog pokretanja pogledati ima li dostupan Internet te postoji li novija inačica.

Ako novija inačica postoji, ona može automatski ili uz odobrenje korisnika napraviti

učitavanje nove inačice s Interneta te zamjenu postojeće.

Predispoziciju za ovu funkcionalnost imaju ili će uskoro imati svi uređaji s ugrađenim

računalima koja imaju povezanost s osobnim računalom ili Internetom putem neke

vrste komunikacije. Potpuno je izvjesno kako će svjetske organizacije razviti novu

standardiziranu vrstu komunikacijskoga protokola za uređaje unutar kućanstva, koji

Page 36: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

35

će pored nadzora svih ugrađenih uređaja imati i funkcionalnost samostalnog

održavanja. Tako tema ovoga rada počiva upravo na funkcionalnosti samostalne,

dinamičke nadogradnje programske podrške ugrađenih računala.

3.1.1. Agentski pristup rješenju samostalne nadogradnje Dinamička nadogradnja, odnosno samostalna izmjena programske podrške

ugrađenih sustava temelji se na implementaciji programskih agenata. Agent

predstavlja izvršni program unutar ugrađenog računala koji se u potpunosti brine o

preuzimanju nove inačice programske podrške s udaljenog mjesta odnosno

poslužitelja, brine se o uspješnoj zamjeni trenutačne inačice programa s novom

preuzetom, te o ispravnom pokretanju nove inačice programa [50][52].

Agent pored svoje primarne funkcije preuzimanja i zamjene programske podrške

posjeduje mehanizme usklađivanja konfiguracije računala s poslužiteljem, razmjenu

informacija o vrsti sklopovlja i samom proizvodu, te informacije o trenutačnoj inačici

programske podrške kako bi agent od strane poslužitelja, uzevši sve informacije u

obzir, točno znao koji program treba dostaviti ugrađenom računalu.

Dakle mehanizam agenta može djelovati odnosno biti predstavljen s više izvršnih

algoritama koji se izvršavaju na više strana. Kako redovito, kad govorimo o

sveprožimajućim ugrađenim računalima, govorimo o mikrokontrolerima koji nemaju

operativni sustav, koji nemaju mnogo slobodne programske memorije i ograničeni su

procesorskom snagom, tako i algoritam agenta mora biti optimiziran i prilagođen

okolini. Iako se teza agenata može primijeniti na bilo koje računalo opremljeno

komunikacijskim kanalom za dohvat novoga programskog sadržaja, fokus rada bit će

stavljen na ugrađena računala ograničenih mogućnosti.

Algoritam agenta bit će podijeljen u više programskih cjelina, gdje će jedna ili više

manjih cjelina biti na strani klijenta, dakle udaljenom ugrađenom računalu, a jedna

velika cjelina, daleko zahtjevnija procesorskom snagom i memorijskim prostorom, na

strani poslužitelja [53][54][55][56].

Page 37: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

36

3.2. Agent na poslužiteljskoj strani komunikacije

Dinamička nadogradnja programske podrške podrazumijeva preuzimanje nove

inačice programske podrške s udaljenog poslužitelja putem Interneta. HTTP (engl.

Hyper Text Terminal Protocol) [57] osnovni je protokol na kojem se temelji Internet,

odnosno internetske stranice, te je samim time logičan izbor za protokol preuzimanja

programske nadogradnje. Protokol je relativno jednostavno implementirati na

klijentskoj strani gdje je jednostavnost poželjna radi manje procesorske moći i

programskog prostora te isti je po standardu podržan kod svih GPRS uređaja.

FTP (engl. File Transfer Protocol) protokol je striktno određen za prijenos datoteka,

koji bi možda bio bolji izbor za prijenos izvršnih programa, no protokol je daleko

kompliciraniji i teži za implementaciju. FTP zahtijeva dva TCP/Ip (engl. Transmission

Control Protocol/Internet Protocol) kanala, od kojih je jedan prema poslužitelju, a

drugi prema klijentu, što redovito predstavlja problem u implementaciji na GPRS

uređajima.

Računalo je na poslužiteljskoj strani komunikacije standardno LAMP (engl. Linux,

Apache, MySQL, Perl/PHP/Python) poslužiteljsko računalo za internetske stranice,

temeljeno na PHP (engl. Hypertext Preprocessor) tehnologiji i MySQL (engl. My

Structured Query Language) bazi podataka. PHP je skriptni programski jezik

pogodan za rad programskog agenta na poslužiteljskoj strani, te se sve inačice

programske podrške pohranjuju u MySQL bazi podataka [58].

Agent nema ograničenja na memorijski prostor jer koristi bazu podataka i

procesorsku moć, jer se izvršava na poslužiteljskom računalu. Agent će preuzeti sve

relevantne informacije od agenta s klijentske strane komunikacije, te shodno

dobivenim informacijama izvršiti akcije.

Page 38: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

37

3.2.1. Zadatci programskog agenta poslužitelja

Programski agent na poslužiteljskoj strani komunikacije ima sljedeće zadatke:

1. Preuzeti sve informacije od klijentskog agenta o svojstvima ugrađenog

računala i proizvodu u koje je ugrađeno, te o korisničkoj konfiguraciji.

2. Pohraniti sve podatke u bazu podataka o udaljenom ugrađenom računalu

prema serijskom broju radi evidencije o izmjenama i statističke svrhe.

3. Provjeriti uskladivosti trenutačne programske inačice za tu vrstu ugrađenog

računala s posljednjom najnovijom inačicom u bazi podataka.

4. Provjeriti uskladivosti trenutačne korisničke konfiguracije s mogućim

modifikacijama konfiguracije u novoj inačici programske podrške.

5. Uskladiti i modificirati korisničke konfiguracije prema zahtjevima nove inačice.

6. Proslijediti klijentskom agentu novu inačicu programske podrške i modificiranu

korisničku konfiguraciju.

Dakle agent će obaviti veći dio posla raznih provjera uskladivosti, zbog sljedećeg

razloga: udaljeno ugrađeno računalo može imati prestaru inačicu programa. U

slučaju da se zbog nekog razloga ugrađeno računalo nije redovito samostalno

održavalo (nedostatak internetske veze, nije dugo bilo u pogonu , ili neki drugi razlog)

postoji opasnost da će razlike u konfiguracijskom zapisu biti prevelike između

postojeće i posljednje inačice. Upravo je to zadatak agenta: uskladiti inačice,

modificirati konfiguracije i prilagoditi novu inačicu udaljenom ugrađenom računalu.

Agent ugrađenog računala dobit će novu odgovarajuću inačicu programske podrške i

odgovarajuću izmijenjenu konfiguraciju koja će točno odgovarati korisniku tog

proizvoda u koje je ugrađeno računalo ugrađeno.

Page 39: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

38

3.2.2. Osvrt na potrošačku elektroniku

Uzmimo za primjer pametne telefone temeljene na Android platformi. Na tržištu

postoji više desetaka podvrsta i modela nekoliko različitih proizvođača telefona. Svi

su oni temeljeni na istoj platformi, na istom operativnom sustavu. No nemaju svi

telefoni iste ugrađene procesore, jednake mogućnosti i funkcionalnosti. Čak i kod

istog proizvođača postoji više različitih modela u različitim cjenovnim razredima. A svi

će navedeni telefoni preuzeti isti, najnoviji Android operativni sustav [59]. Naravno,

on će biti prilagođen točno određenomu modelu s točno određenim perifernim

uređajima odnosno mogućnostima. Štoviše, Android uređaji imaju zajednički

poslužitelj s kojeg se preuzimaju svi programi, odnosno programska podrška koju će

proizvođači modificirati i objaviti na istome mjestu odnosno internetskom poslužitelju.

Page 40: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

39

3.3. Programski agent ugrađenog računala

Agentski program na klijentskoj strani odnosno unutar ugrađenog računala može biti

program iz jednog dijela ili više djelova, izvršavati se samostalno ili paralelno s

glavnim izvršnim programom, kao dio operativnog sustava ili bilo kako drugačije,

ovisno o vrsti programskog agenta ili vrsti ugrađenog računala.

Agentova zadaća jest redovito provjeriti internetsku vezu s poslužiteljem, predstaviti

se inačicom programa koja se izvršava i pitati programskog agenta na poslužiteljskoj

strani postoji li nova inačica. Ako postoji nova inačica programske podrške, onda će

agent predati sve informacije o ugrađenom računalu poslužitelju, serijski broj, inačicu

programa, model proizvoda, konfiguraciju korisnika, vrstu perifernih sklopova i sve

druge relevantne informacije koje opisuju proizvod. Nakon usklađivanja inačica koje

izvršava poslužiteljska strana agenta, klijentski agent unutar ugrađenog računala

preuzet će novu inačicu programske podrške i modificiranu konfiguraciju korisnika

proizvoda.

Agent se brine o uspješnom prepisivanju programske memorije novom inačicom

izvršnog programa, te o ponovnom pokretanju ugrađenog računala radi ispravne

inicijalizacije svih sustava novom inačicom.

3.3.1. Zadatci programskog agenta ugrađenog računala

Agent ima sljedeće zadatke:

1. Redovito intervalno spojiti se na server, ukratko se predstaviti i pitati za

posljednju inačicu programske podrške.

2. Detaljno se predstaviti serverskom agentu ako on zatraži detaljne informacije

te dostaviti korisničku konfiguraciju i trenutačnu inačicu programske podrške.

3. Obavijestiti korisnika ili zatražiti dopuštenje korisnika prema korisničkoj

konfiguraciji.

Page 41: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

40

4. Preuzeti novu inačicu programske podrške i spremiti je u lokalnu memoriju

(vanjsku memoriju ako postoji ili izravno u programsku memoriju).

5. Preuzeti modificiranu korisničku konfiguraciju.

6. Preslikati novu inačicu programske podrške u programsku memoriju ako

postoji vanjska memorija.

7. Ponovno pokrenuti novi program i preslikati odnosno pohraniti modifikacije

korisničke konfiguracije.

Pritom ove točke zadataka agenta mogu postojati u više agentskih cjelina. Nije nužno

da sve izvrši jedan agentski algoritam. Točke mogu biti raspoređene tako da se dio

njih izvrši paralelno uz glavni program, a samo dio točaka samostalno, kako bi se

dobila što veća transparentnost i što manji prekid u radu uređaja odnosno proizvoda.

Kritična je točka 4. jer traje nekoliko minuta radi preuzimanja veće količine podataka

putem GPRS veze.

3.3.2. Netransparentnost zamjene programske podrške

Problem kod svih vrsta agenata jest netransparentnost zamjene programske

podrške. Naime, svaki će agent uzrokovati određeni prekid u radu ugrađenog

računala. Ovisno o vrsti agenta, taj prekid može biti duži ili kraći, od nekoliko sekundi

do nekoliko minuta. Ovisno o vrsti i namjeni proizvoda, agent se mora brinuti o

trenutku kad će prekid nastupiti, te zatražiti potvrdu od korisnika za prekid rada.

Page 42: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

41

3.3.3. Osvrt na potrošačku elektroniku

U primjeru pametnih telefona na Android platformi, agent će obavijestiti korisnika

iskočnom porukom ili diskretno na popisu poruka za korisnika o postojanju nove

inačice nekog programa ili operativnog sustava. Agent će tražiti potvrdu za učitavanje

novog sadržaja, osim ako korisnik nije izričito rekao da agent samostalno bez pitanja

učita novi sadržaj.

Telefon će biti potpuno u funkciji za preuzimanja novog sadržaja na vanjski

memorijski prostor, te će nakon završetka preuzimanja agent diskretno obavijestiti

korisnika o završetku.

Korisnik odabirom nove učitane inačice zaustavlja staru koja se trenutačno izvršava,

nova se preslikava (instalira) u programsku memoriju i pokrene nakon završetka. U

slučaju da se radi o nadogradnji samog operativnog sustava, postupak je sličan.

Agent će preuzeti novu inačicu operativnog sustava na vanjsku dodatnu memoriju i

nakon toga zatražiti potvrdu korisnika za ponovno pokretanje telefona.

Cijeli se operativni sustav zaustavlja, pokreće se specijalni startni programski agent

koji će preslikati operativni sustav s vanjske memorije na programsku memoriju

telefona i nakon toga ponovno pokrenuti operativni sustav. Ova operacija može

potrajati od nekoliko minuta do nekoliko desetaka minuta, kada je telefon van

pogona.

Page 43: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

42

3.4. Vrste programskih agenata unutar ugrađenog računala

Neovisno o kojoj se vrsti agenta za dinamičku zamjenu programske memorije radi,

ugrađeno računalo mora imati određene predispozicije:

1. Programski algoritam agenta mora imati mogućnost izravnog pristupa

programskoj memoriji i dodatnoj memoriji ukoliko ona postoji.

2. Agent mora imati mogućnost izmjene programske memorije i dodatne

memorije ukoliko ona postoji.

3. Agent mora imati pristup udaljenom agentu na poslužiteljskoj strani preko

GPRS ili odgovarajuće druge vrste komunikacije putem TCP/IP protokola.

4. Agent mora imati pristup korisničkoj konfiguraciji.

5. Agent mora imati mehanizme za manipulaciju glavnim izvršnim programom

(zaustavljanje, ponovno pokretanje).

Kad su osnovi zajednički zahtjevi za sve vrste agenata ispunjeni, agenti se generalno

unutar ugrađenog računala mogu podijeliti u dvije grupacije:

1. Agenti s izravnim zapisom u programsku memoriju.

2. Agenti s dodatnom memorijom veličinom većom od programske memorije.

Prva grupacija agenata ima manje zahtjeve za sklopovlje ugrađenog računala,

jeftinije je za izvedbu, no ima duži prekid u radu glavnog programa jer se glavni

program mora zaustaviti prilikom preuzimanja i zapisivanja programa u programsku

memoriju.

Druga grupacija nudi nešto transparentniju zamjenu programske podrške, tako što će

sam prekid u radu trajati kraće, pouzdaniji je u radu, preuzimanje se može izvesti

paralelno s izvođenjem glavnog programa kad je procesor manje opterećen, no

zahtijeva nešto skuplje sklopovlje odnosno dodatnu memoriju.

Obje vrste agenata odnosno algoritma koji izvršavaju mogu se podijeliti na dvije

cjeline, gdje se dio zadataka agenta izvšava paralelno s glavnim programom, a dio

samostalno dok je program zaustavljen.

Page 44: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

43

3.5. Agenti s izravnim zapisom u programsku memoriju

Agent s najmanjim zahtjevima naći će se u široj potrošačkoj elektronici, koja ima

osiguranu povezanost sa internetom, no zbog ekonomskih razloga nema dodatni

memorijski prostor, slika 3.1. Za realizaciju ugrađenog računala s ovom vrstom

agenta dovoljno je imati moderan mikrokontroler sa samostalnom izmjenom

programske memorije te spojem na GSM/GPRS uređaj.

Radi ograničenja sklopovlja odnosno programske FLASH memorije koja se ne može

čitati dok se u nju piše, sam algoritam agenta mora biti u posebnom odvojenom dijelu

programske memorije koja je čitljiva za pisanja (kako je objašnjeno poglavlju 2.3.4).

Zbog toga će sam algoritam agenta biti podijeljen u dva dijela, gdje se jedan dio

izvršava paralelno s programom ugrađenog računala, a drugi samostalno, zapisan u

poseban dio programske memorije.

3.5.1. Zadatci dijela agenta unutar glavnog programa

Zadatci programskog agenta koji se izvršavaju paralelno s glavnim programom, u

trenutcima kad je procesor manje opterećen:

1. Redovito intervalno spojiti se na poslužitelj, ukratko se predstaviti i pitati za

posljednju inačicu programske podrške.

2. Detaljno se predstaviti serverskom agentu ako on zatraži detaljne informacije

te dostaviti korisničku konfiguraciju i trenutačnu inačicu programske podrške.

3. Obavijestiti korisnika ili zatražiti dopuštenje korisnika prema korisničkoj

konfiguraciji.

4. Preuzeti modificiranu korisničku konfiguraciju.

5. Pohraniti modifikacije korisničke konfiguracije nakon prvog pokretanja nove

inačice.

Ovaj dio agenta odnosno algoritam mijenjat će se zajedno s izmjenom programske

podrške, tako da su moguće promjene ovoga dijela agenta u budućnosti.

Page 45: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

44

3.5.2. Zadatci samostalnog dijela agenta

Zadatci programskog agenta koji se izvršavaju samostalno u odvojenom dijelu

programske memorije, isključivo kad je glavni program zaustavljen:

1. Preuzeti novu inačicu programske podrške i spremiti je u programsku

memoriju.

2. Pokrenuti novu inačicu programske podrške.

Ovaj dio agenta odnosno algoritam može se ne mijenjati zajedno s novim inačicama

programske podrške, može se promijeniti samo u ISP načinu programiranja,

spajanjem ugrađenog računala na specijalni programator. Ovaj dio samostalnog

algoritma agenta treba biti robustan i detaljno testiran, kako se ne bi potkrale greške

ili potrebe za njegovom izmjenom u budućnosti.

Iako se čini da je ovaj dio agenta jednostavan jer ima samo dva zadatka, agent u

sebi mora sadržavati algoritam za:

1. inicijalizaciju i spajanje na Internet putem GPRS uređaja ili neke druge

komunikacije,

2. TCP/Ip i HTTP protokol za spajanje na poslužitelj putem Interneta,

3. preuzimanje programske podrške u nekom dogovorenom formatu, kojei će

dekodirati u čiste binarne oktete spremne za zapis,

4. zapis u programsku memoriju,

5. provjeru ispravnosti preuzetih podataka,

6. provjeru ispravnosti zapisanih podataka,

7. ponavljanje preuzimanja i zapisa u slučaju pogreške u zapisu.

Algoritam agenta mora biti vrlo malen tako da stane u prostor dopušten za

samostalni dio agenta.

Page 46: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

45

3.5.3. Prednosti agenta s izravnim upisom u programsku memoriju

Agent nema posebnih zahtjeva za dodatnim memorijskim prostorom. Gotovo će

svako moderno ugrađeno računalo ispuniti sve zahtjeve za implementaciju ove vrste

agenta.

3.5.4. Nedostatci agenta s izravnim upisom u programsku memoriju

Za izvođenja agenta, odnosno preuzimanja nove inačice i pisanja u programsku

memoriju, glavni program je zaustavljen, a uređaj u koje je ugrađeno računalo

ugrađeno je van pogona. Preuzimanje i zapis novoga programa može potrajati

nekoliko minuta.

Nedostatak koji se uzročno-posljedično nameće jest nemogućnost samostalne

izmjene dijela agenta koji se nalazi u posebnome memorijskom programskom

prostoru, odnosno agent ne može sam sebe izmijeniti.

3.5.5. Transparentnost u radu i prekid rada ugrađenog računala

Ova vrsta agenta nije transparentna i prekid rada glavnoga programa odnosno

uređaja može značajno potrajati. Problem se nameće kod uređaja koji zahtijevaju

neprestani rad, jer je potrebno odlučiti kad je pogodno vrijeme za nadogradnju,

odnosno kad je nadogradnja važnija od prestanka rada uređaja.

Page 47: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

46

3.5.6. Osvrt na potrošačku elektroniku

Većina potrošačke elektronike koja danas nema ovu zanimljivu funkciju samostalnog

obnavljanja programske podrške a ima potrebu za tim u principu se temelji na ovoj

vrsti ugrađenog računala, odnosno ovakav bi agent morao biti instaliran i upogonjen

u postojećim uređajima bez izmjene samog dizajna ugrađenog računala.

Na primjer mobilni telefoni prije pojave pametnih telefona. Oni imaju mogućnost

samostalne izmjene programske podrške, imaju dostupan Internet. Razlog zbog

kojeg oni nemaju ovu funkcionalnost može se objasniti cijenom prenesenih podataka

putem GPRS protokola koja je u prošlosti bila previsoka, a sam osnovni program

telefona prevelik za prenošenje.

Page 48: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

47

3.6. Agent s dodatnom memorijom većom od programske

Agent s nešto većim zahtjevima od prethodnog naći će se u široj potrošačkoj

elektronici koja ima neku vrstu komunikacije s Internetom, i ima dodatni memorijski

prostor veći od programske memorije, slika 3.2. Za realizaciju ugrađenog računala s

ovom vrstom agenta dovoljno je imati moderan mikrokontroler sa samostalnom

izmjenom programske memorije te spojem na GSM/GPRS uređaj i vanjsku memoriju

za privremenu pohranu preuzete nove inačice glavnog programa.

Slika 3.2. Ugrađeno računalo s mogućnošću samostalne izmjene programske memorije i GPRS

modulom za spajanje na Internet te dodatnom vanjskom memorijom.

Radi ograničenja sklopovlja odnosno programske FLASH memorije koja se ne može

čitati dok se u nju piše, sam algoritam agenta koji piše po programskoj memoriji mora

biti u posebnom odvojenom dijelu programske memorije koja je čitljiva za pisanja

(kako je objašnjeno u poglavlju 2.3.4.). Zbog toga će sam algoritam agenta biti

podijeljen u dva dijela, gdje se jedan dio izvršava paralelno s programom ugrađenog

računala, a drugi samostalno, zapisan u poseban dio programske memorije.

120KB

Rutine za izmjenu programske mem.

Prog

ram

ska

mem

orija

Izvršni program

8KB

GPRS

SPI

Dodatna vanjska memorija za privremenu pohranu nove inačice izvršnog programa

>120KB

Page 49: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

48

3.6.1. Zadatci dijela agenta unutar glavnog programa

Zadatci programskog agenta koji se izvršavaju paralelno s glavnim programom, u

trenutcima kad je procecesor manje opterećen:

1. Redovito intervalno spojiti se na poslužitelj, ukratko se predstaviti i pitati za

posljednju inačicu programske podrške.

2. Detaljno se predstaviti programskom agentu na poslužitelju ako on zatraži

detaljne informacije te dostaviti korisničku konfiguraciju i trenutačnu inačicu

programske podrške.

3. Obavijestiti korisnika ili zatražiti dopuštenje korisnika prema korisničkoj

konfiguraciji.

4. Preuzeti novu inačicu programske podrške i spremiti je u dodanu vanjsku

memoriju.

5. Preuzeti modificiranu korisničku konfiguraciju.

6. Nakon prvoga pokretanja nove inačice programa, preslikati odnosno pohraniti

modifikacije korisničke konfiguracije.

Velik dio zadataka obavlja algoritam agenta koji se paralelno izvodi s glavnim

programom. Preuzimanje programa može potrajati nekoliko minuta ili više, no to neće

utjecati na izvršavanje glavnog programa odnosno rad uređaja, jer se agent izvršava

kad je procesor manje opterećen. Također će se ovaj dio agenta mijenjati zajedno s

novom inačicom programske podrške te su moguće izmjene i dopune agenta u

budućnosti.

3.6.2. Zadatci samostalnog dijela agenta

Zadatci programskog agenta koji se izvršavaju samostalno u odvojenom dijelu

programske memorije, isključivo kad je glavni program zaustavljen:

Page 50: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

49

1. Preslikati novu inačicu programske podrške iz vanjske memorije u programsku

memoriju.

2. Pokrenuti novu inačicu programske podrške.

Ovaj dio agenta odnosno algoritam ne može se mijenjati zajedno s novim inačicama

programske podrške, može se promijeniti samo u ISP načinu programiranja,

spajanjem ugrađenog računala na specijalni programator. Ovaj dio samostalnog

algoritma agenta treba biti robustan i detaljno testiran, kako se ne bi potkrale greške

ili potrebe za njegovom izmjenom u budućnosti.

Algoritam agenta jednostavan je jer ima samo dva zadatka, i agent u sebi mora

sadržavati algoritam za:

1. preuzimanje podataka sa vanjske memorije (putem SPI sabirnice ili slične),

2. zapis u programsku memoriju,

3. provjeru ispravnosti zapisanih podataka,

4. ponavljanje zapisa u slučaju pogreške u zapisu.

Algoritam agenta mora biti vrlo malen kako bi stao u dopušteni prostor za samostalni

dio agenta, što nije problem jer algoritam nije zahtjevan.

3.6.3. Prednosti agenta s dodatnim memorijskim prostorom

Agent nema posebnih zahtjeva osim za dodatnim memorijskim prostorom. Gotovo

svako moderno ugrađeno računalo ispunit će sve zahtjeve za implementaciju ove

vrste agenta.

Veći dio algoritma agenta nalazi se u programskoj memoriji pored glavnog programa,

tako da će se i agent svaki put nadograditi prilikom nadogradnje glavnog programa.

Nadogradnja računala izvest će se gotovo transparentno s vrlo kratkim prekidom

rada glavnog računala nekoliko sekundi prilikom preslikavanja programske memorije

novom inačicom.

Page 51: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

50

3.6.4. Nedostatci agenta s dodatnim memorijskim prostorom

Potrebna je dodatna vanjska memorija veća od programske memorije ugrađenog

računala.

3.6.5. Transparentnost u radu i prekid rada ugrađenog računala

Ova vrsta agenta nije potpuno transparentna, no prekid rada glavnog programa

odnosno uređaja potrajat će samo nekoliko sekundi. Problem se nameće kod uređaja

koji zahtjevaju neprestani rad, jer je potrebno odlučiti kad je moguće izvršiti

nadogradnju, odnosno kad je nadogradnja važnija od prestanka rada uređaja.

3.6.6. Osvrt na potrošačku elektroniku

Većina potrošačke elektronike koja danas nema ovu zanimljivu funkciju samostalnog

obnavljanja programske podrške, a ima potrebu za tim, u principu se temelji na ovoj

vrsti ugrađenog računala, odnosno ovakav agent morao bi biti instaliran i upogonjen

u postojećim uređajima bez izmjene samog dizajna ugrađenog računala.

Na primjer, mobilni telefoni prije pojave pametnih telefona. Oni imaju mogućnost

samostalne izmjene programske podrške, imaju dostupan Internet i dodatnu vanjsku

memoriju. Razlog Zbog kojeg oni nemaju ovu funkcionalnost može se objasniti

cijenom prenesenih podataka putem GPRS protokola koja je u prošlosti bila

previsoka, a sam osnovni program telefona prevelik za prenošenje.

Pametni telefoni posljednje generacije posjeduju samostalnu obnovu glavne

programske podrške na kojoj se izvršava operacijski sustav, i agent koji je zadužen

za izmjenu programske podrške pripada ovoj vrsti agenta.

Page 52: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

51

3.7. Komunikacija među agentima na ugrađenom računalu

Obje vrste programskih agenata predstavljenih u prethodnih nekoliko potpoglavlja

zbog same arhitekture mikrokontrolera moraju se implementirati u dva dijela. Jedan

je dio koji se izvodi paralelno glavnom programu, a drugi koji se izvršava samostalno.

Kako bi oba dijela agenta funkcionirala ispravno, potrebna je neka vrsta komunikacije

među njima. Kako se ne izvode paralelno, komunikacija će biti svojevrstan zapisnik

pohranjen u neku od trajnih memorija koja će predstavljati informacije ili naredbe

drugom dijelu kad se isti pokrene.

Dakle komunikacija se izvodi po principu zastavica i informacijskih zapisa, zapisanih

u korisničku EEPROM memoriju. Radna memorija nije pogodna za njihovu

međusobnu komunikaciju jer se radna memorija briše i inicijalizira prilikom pokretanja

glavnog programa ili startnog programa.

Programski agent koji se izvršava paralelno glavnom programu dogovorit će

preuzimanje nove programske podrške s poslužiteljskim agentom, te informacije o

tome što (koju inačicu preuzeti, kamo se spojiti) zapisati u korisničku trajnu memoriju,

nakon čega restarta procesor čime se pokreće drugi dio programskog agenta

odnosno startni program. Drugi dio agenta provjerit će zapis u korisničkoj trajnoj

memoriji te preuzeti naredbu, odnosno informacije potrebne za spajanje i

preuzimanje programske podrške ili u slučaju druge vrste agenta samo preslikavanje

programske podrške iz vanjske memorije u programsku memoriju, te o završenom

zadatku obavijestiti prvi dio agenta kroz zapis u trajnu korisničku memoriju.

Page 53: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

52

3.8. Izvedenice agenta s dodatnim memorijskim prostorom

Generalno se svi agenti za samostalnu nadogradnju programske podrške uz manju

modifikaciju mogu svrstati pod agente s dodatnom vanjskom memorijom. To su razni

programski agenti za održavanje aplikacija unutar operativnih sustava. I naposlijetku,

specijalne izvedenice s diskretnim elementima kad se ne radi o mikrokontrolerima.

3.9. Agent kao zasebna aplikacija u višeprocesnome operacijskom sustavu

Agent kao zasebna aplikacija u višeprocesnome operativnom sustavu najpopularnija

je vrsta agenta koja omogućuje gotovo transparentno održavanje neke aplikacije,

minimalne prekide u radu aplikacije, prikazane na slici 3.3. Ova se vrsta agenta i

intenzivno primjenjuje na osobnim računalima i pametnim telefonima jer su ondje

ispunjeni svi preduvjeti koje ova vrsta agenta zahtijeva.

Slika 3.3. Agent kao zasebna aplikacija unutar operacijskog sustava.

Ispunjeni su svi preduvjeti. Postoji višeprocesni operativni sustav koji se brine o

zauzeću memorije te izvršavanju aplikacija kao zasebnih procesa. Tvrdi disk ili

vanjska memorija u obliku MMC kartice koja trajno pohranjuje aplikacije dostupan je

agentu za pisanje. Agent postaje nova aplikacija koja se paralelno izvršava s ostalim

aplikacijama odnosno procesima unutar operativnog sustava. Ipak, zamjena neće biti

moguća potpuno transparentno bez zastoja. Zastoj će postojati, a o izvedbi aplikacija

agenta i glavne aplikacije ovisi koliko će trajati.

Operativni Sustav 8KB Trenutačna

aplikacija GPRS

Page 54: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

53

3.9.1. Princip rada agenta kao zasebne aplikacije unutar operativnog sustava

Svakih nekoliko sati, koliko je predefinirano, agent se spaja na internetsku stranicu

proizvođača i provjerava postoji li u bazi neka aplikacija koja nije ažurirana. Ako

postoji, agent je transparentno učita, pohrani u memoriju na privremeno mjesto (sve

koje postoje) i čeka predefinirani trenutak za instalaciju. To može biti definirano

određeno vrijeme svaki dan, na primjer po noći kad se računalo ne koristi, ili prilikom

gašenja računala, kada će agent napraviti instalaciju svih aplikacija i ugasiti računalo.

Zanimljiva je činjenica kod ove vrste agenta ta da, iako se radi o agentu kao aplikaciji

unutar više procesnog operativnog sustava, instalacija novije inačice nije potpuno

transparenta. Dakle postoji prekid u radu, iako kratak i kad to ne ometa računalo u

radu.

3.9.2. Zastoj rada aplikacije prilikom izmjene novom

Iako agent ima gotovo sve preduvjete da obavi zamjenu potpuno transparentno

unutar operativnog sustava, zamjena ipak traje i prekida rad aplikacije. Ovaj

nedostatak može se prikriti zamjenom aplikacije tek onda kada se uređaj gasi ili pali.

Tada korisnik neće primijetiti nikakav prestanak u radu aplikacije, a sljedeće

pokretanje pokrenut će novu inačicu.

Nešto ozbiljniji problem javlja se kod uređaja koji se nikad ili rijetko gase. Kod njih će

agent biti primoran odrediti najprikladnije vrijeme za ponovno pokretanje aplikacije,

kada će sustav odnosno uređaj biti najmanje eksponiran mogućim problemima zbog

kratkog zastoja. Pritom treba sve parametre unaprijed pripremiti kako bi se aplikacija

pokrenula što brže i transparentno nastavila raditi s varijablama s kojima je

zaustavljena.

Page 55: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

54

4. DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE

U ovom poglavlju prikazan je agent s izravnim zapisom u programsku memoriju bez

dodatnoga memorijskog prostora (predstavljen u poglavlju 3.5.) jer je zanimljiviji sa

znanstvenog aspekta zbog teže realizacije dizajna samog programa agenta, i

pristupačniji s ekonomskog aspekta jer ugrađeno računalo zahtjeva samo

mikrokontroler, GPRS modul i vrlo malo popratnoga sklopovlja (sklop za napajanje i

davatelj takta). Uz vrlo malu modifikaciju testnoga ugrađenog računala i samog

programa agenta može se realizirati i tehnološki napredniji i transparentniji agent s

dodatnim memorijskim prostorom (predstavljen u poglavlju 3.6.).

Testno računalo odnosno mikrokontroler mora zadovoljavati sve uvjete, odnosno

zahtjeve agenta sa slike 3.1. koje ima prema mikrokontroleru odnosno ugrađenom

računalu. Na tržištu se može naći mnogo mikrokontrolera posljednje generacije koji

imaju mogućnost samostalne izmjene programske memorije, temeljene na raznim

porodicama procesora, različitih cjenovnih razreda. Svi kontroleri koji zadovoljavaju

taj uvjet proizvode se s raznim perifernim sklopovljem, različite veličine programske i

radne memorije, tako da nije problem odabrati odgovarajući mikrokontroler koji će

zadovoljiti funkcionalnosti finalnog proizvoda.

Odabir porodice mikrokontrolera prilikom dizajna nekog uređaja odnosno finalnog

proizvoda djelomično je subjektivan odabir projektanta ili tima projektanata i

programera ili tima programera, te djelomično ovisi o procesorskoj snazi koju

porodica posjeduje, a potrebna je za finalni proizvod. Za potrebe testiranja i

realizacije programskog agenta odabran je mikrokontroler iz porodice AVR, 8-bitnih

procesora, RISC arhitekture, proizvođača ATMEL, sa 128KB programske memorije,

dvije RS232 sabirnice, s mnogo dodatnog sklopovlja i sučelja te nižega cjenovnog

razreda [60].

Sa svrhom ispitivanja primjenjivosti predloženog rješenja dinamičke nadogradnje

programske podrške u stvarnim uvjetima u industriji i potrošačkoj elektronici, odabran

je industrijski uređaj, odnosno ugrađeno računalo koje se koristi u automobilskoj

industriji. Radi se o uređaju za praćenje i sigurnost vozila jer se temelji na procesoru

koji je odabran za test, te uređaj ima ugrađen GPRS modul, WISMO228 proizvođača

Page 56: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

55

Sierra Wireless [61]. Stvarnom proizvodu bit će dodana funkcionalnost dinamičke

nadogradnje programske podrške, neophodne kako bi proizvod bio konkurentan na

tržištu, te jeftinije za održavanje prilikom pojave pogrešaka u radu ili jednostavno

prilikom dopune samog uređaja novim funkcionalnostima.

4.1. Mikrokontroler za ugrađeno računalo s funkcionalnošću samostalne izmjene programske memorije

Proizvođač ATMEL dugi niz godina radi na razvoju brzih trajnih memorija

smogućnošću brze izmjene sadržaja (engl. FLASH) te paralelno s tim razvija

mikrokontrolere iz raznih porodica koje inkorporiraju ove brze trajne memorije

relativno velikih kapaciteta. U svom razvoju vide potrebu za novom porodicom

procesora malih dimenzija a velikih mogućnosti, prilagođenima za brz razvoj

ugrađenih računala široke primjene. Radi se o AVR obitelji osmobitnih RISC

procesora, snažnih performansi, niske potrošnje, malih gabarita, visoke integracije,

snažnih memorija. Procesor je temeljen na Harvard arhitekturi, sa pravom RISC

jezgrom, gdje je jedan ciklus takta jedna naredba, te je sposoban izvršavati 20 MIPS-

a pri taktu od 20MHz. Posjeduje širok napon napajanja od 1.8V do 5.5V, programski

kontroliran integrirani davač takta, integrirane sve vrste memorija do 256KB

programske memorije, sa samostalnom izmjenom programske memorije iz izvršnog

programa. Prilagodljiv je svakom dizajnu ugrađenog računala jer se proizvodi s

programskom memorijom od 1KB do 256KB. Isto tako njegovi gabariti i mogućnosti

variraju od najmanjih sa 6 ulazno/izlaznih signala do najvećih s više od 64

ulazno/izlazna signala, snažnih jedinica sposobnih pogoniti svjetleće diode izravno.

Integriraju nekoliko serijskih RS232 sabirnica, I2C, CAN (engl. Controller Area

Network), SPI (engl. Serial Programming Interface), analogno-digitalne pretvornike

(engl. A/D Converter), sklop za impulsno širinsku modulaciju (engl. PWM, Pulse

Width Modulation), nekoliko vremenskih sklopova (engl. Timers), nadzorni vremenski

sklop (engl. Watchdog Timer), Analogni komparator i slično.

Page 57: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

56

Slika 4.1. Jezgra AVR procesora.

AVR mikrokontroleri imaju integrirane sve funkcije potrebne za rad nekoga

ugrađenog računala, gotovo da se cijelo računalo sastoji od samo jednoga

integriranog sklopa, AVR procesora. Izvana se može dodati potrebno sučelje prema

uređaju u koji se ugrađuje, sklop za prilagodbu napajanja i davatelj takta ako je bitna

preciznost. Inače AVR procesor u sebi sadrži i davatelj takta nešto manje preciznosti

koji može raditi na 1MHz, 2MHz, 4MHz, i 8MHz. Zbog niske cijene i široke palete

AVR procesora s različitim funkcijama integriranima unutar čipa, ugrađeno računalo

doista će biti niske cijene i malih gabarita, bez potrebe za velikim, kompliciranim i

skupim tiskanim pločicama.

Page 58: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

57

AVR porodica posjeduje nekoliko različitih komunikacijskih sabirnica i sve mogu biti

uporabljene za učitavanje nove inačice izvršnog programa u slučaju programskog

agenta. On ima određeno područje programske memorije rezervirano baš za

algoritam (kako je predstavljeno u poglavlju 2.3.4.), odnosno program agenta iz kojeg

se mogu izvršavati rutine za vrijeme pisanja po programskoj memoriji. Taj segment

programske memorije popularno se naziva startni program (izvorno engl. boot loader)

koji se dalje brine za učitavanje stvarnog izvršnog programa.

Slika 4.3. Blok dijagram AVR procesora AT90CAN128.

Page 59: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

58

4.1.1. Atmel AVR obitelj i samostalna izmjena programske memorije

Atmel AVR mikrokontroleri dolaze s potpuno praznom programskom memorijom.

Zato postoje mehanizmi i sabirnica za serijsko ili paralelno punjenje programske

memorije, bilo posebne startne sekcije ili običnog programa, ali pomoću posebnih

programatora (poglavlje 2.3.3.) koji se spajaju na procesor dok je procesor ugrađen u

sam uređaj. Tako će jednom unesen robustan i napredan startni program omogućiti

kasnije izmjenu programske memorije putem toga startnog programa, programskog

agenta, bez potrebe za posebnim vanjskim programatorima.

Prema podjeli vrste agenata, AVR pripada pretposljednjoj generaciji mikrokontrolera

(poglavlje 2.3.3.), te se mogu primijeniti obje vrste agenta za njihovu samostalnu

izmjenu programske memorije, nakon što se sam program agenta zapiše u

programsku memoriju putem vanjskog programatora. Uz jedno ograničenje. Veličina

programa samostalnog dijela agenta mora biti manja od 8KB.

Dakle uvelike ovisi o umijeću programera startnog programa, odnosno agenta i

ostalog programa, u kojoj će mjeri sam agent raditi transparentno, jer prilikom pisanja

po programskoj memoriji ona nije dostupna za čitanje i izvršavanje. Dostupan je

samo mali segment gdje se nalazi samostalni dio agenta. Stoga, ako programer

uspije staviti vitalne rutine potrebne za rad uređaja unutar tog malog segmenta,

uređaj će raditi paralelno agentu. U protivnom, uređaj prestaje s radom za izmjene

programske memorije.

Uz dodatni memorijski prostor jednak ili veći od programske memorije, agent će moći

uz dovoljno programskog umijeća izvršavati preuzimanje nove programske inačice i

zapisivati je u dodatni memorijski prostor, sporadično u prekidnoj rutini i time na

trenutke zaustavljati rad procesora nad glavnom funkcijom. Ako uređaj u danom

trenutku ne zahtijeva mnogo procesorske snage, ovo će biti moguće izvesti, tako da

funkcionalnost uređaja bude potpuna priliko preuzimanja nove inačice. Isto će tako i

prelazak s trenutačne inačice na novu biti moguće izvesti uz vrlo kratak prestanak

rada, ako se programi i agent dobro dizajniraju (agent s dodatnom memorijom).

Page 60: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

59

4.1.2. Proširenje ugrađenog računala temeljenog na AVR obitelji dodatnom memorijskom karticom

Mikrokontroler porodice AVR posjeduje nekoliko sučelja odnosno sabirnica koje se

mogu iskoristiti za proširenje memorije. Prije svega tu je standardna paralelna

sabirnica s paralelnim adresnim i podatkovnim pristupom za dodavanje dodatne

radne memorije. No ona nije najbolji izbor za moderne ugrađene sustave jer troši

mnogo uzlazno/izlaznih signala za spajanje memorije koje se mogu bolje iskoristiti

kao sučelje prema uređaju u koji je ugrađeno računalo ugrađeno.

Također postoje dvije serijske sabirnice koje se isto tako mogu iskoristiti za serijske

električki programabilne trajne memorije (engl. EEPROM) ili FLASH memorije, a to

su I2C i SPI sabirnice. I2C nisu pogodne za dodatnu memoriju za potrebe agenta jer

se uglavnom proizvode I2C memorije s nešto manjim memorijskim prostorom, a

memorije s 128KB i više vrlo su rijetke i skupe.

S druge strane imamo SPI sabirnicu koja je pouzdana i robusna, te raširena. Mnogi

proizvođači raznih sklopovlja koriste nju. Takve su MMC (engl. Multi Media Card)

memorijske kartice i FLASH memorije različitih proizvođača, vrlo jeftine i dobavljive, s

velikim memorijskim prostorom.

Jednostavnim dodatkom takve memorije procesoru omogućit će izvršnoj aplikaciji ili

agentu transparentan rad prilikom učitavanja nove inačice programa s nešto sporijih

komunikacija, npr. putem GPRS-a, te spremanjem iste u dodanu memoriju. Nakon

što je učitana nova inačica provjerena i ispravna, agent može zaustaviti na kratko

izvršavanje izvršnog programa i zamijeniti ga novim programom spremljenim u

dodanoj memoriji.

Zbog velike brzine prijenosa putem SPI sučelja vrijeme zapisa nove inačice ovisit će

isključivo o brzini pisanja u programsku memoriju AVR procesora.

Page 61: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

60

4.2. Testno ugrađeno računalo

Odabrano testno ugrađeno računalo koristi se u automobilskoj industriji za nadzor i

praćenje vozila. Ono posjeduje sve elemente koji su potrebni za razvoj i testiranje

agenta s izravnom izmjenom programske memorije i agenta s dodatnim memorijskim

prostorom. Na slici 4.4. prikazana je arhitektura ugrađenog računala koje se sastoji

od nekoliko diskretnih modula:

1. mikrokontroler iz AVR porodice, ATmega128,

2. GSM/GPRS modul, WISMO228,

3. sklop za napajanje (switcher) temeljen na LM2596,

4. sklop za davanje takta, 14.7MHz,

5. jednostavno sučelje između mikrokontrolera i GPRS modula,

6. dodatna FLASH memorija i sučelje, temeljeno na SST25VF080B,

7. ulazno sučelje iz vanjskog svijeta prema ugrađenom računalu,

8. izlazno sučelje iz ugrađenog računala prema vanjskom svijetu,

9. sklop za dijeljenje serijske sabirnice između sučelja na GPS modul, osobno

računalo, i drugi uređaji,

10. sklopovlje za CAN sabirnicu temeljeno na MCP2515 i MCP2551,

11. sklopovlje za GPS prijam temeljeno na Globalsat EB3531,

12. sučelje prema osobnom računalu,

13. ostala sučelja i sklopovi.

Za potrebe razvoja agenta neophodni su samo elementi cjelina točaka (1-5),

prikazani istaknuto na slici 4.4. odnosno izdvojeni na slici 4.5. Ostalo sklopovlje i

sučelja nepotrebni su za razmatranje sa stanovišta agenta, no kako se radi o

stvarnom industrijskom uređaju, imaju svoju svrhu i namjenu u konačnoj

funkcionalnosti uređaja.

Page 62: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

61

Ugrađeno računalo

1Mikrokontroler ATmega128

2GSM/GPRSWISMO228

3NapajanjeLM2596

4Sklop za takt7,38/14,7MHz

7Ulazno sučelje

Otpornička mreža 8

Izlazno sučeljeULN2003D/

Mosfet snage

10CAN modulMCP2551/MCP2515

5 UART

11GPS prijemnik

EB3531

6Dodatna memorija

SST25VF080

9Multiplexer

serijske sabirnice

UART

UART

UAR

TSPI

SPI

CAN

RS232

12V

0-24V

300mA

/6AANT GSM

ANT GPS

UART

ANT RFID

ulazi

Digitalni izlazi

13RFIDMifare

12Sučelje prema

osobnom računalu

Slika 4.4. Blok shema testnoga ugrađenog računala.

GPRS modul WISMO228 koristi se za komunikaciju ugrađenog računala odnosno

klijentskog agenta unutar ugrađenog računala s agentom na poslužiteljskoj strani

putem Interneta te TCP/Ip protokola. Modul je spojen na mikrokontroler putem

jednostavne dvosmjerne serijske sabirnice, slične RS232 no s malim invertiranim

naponskim nivoima. Mikrokontroler upravlja GPRS modulom putem AT naredbi [67] i

koristi implementirani TCP/Ip stog unutar samoga GPRS modula.

Page 63: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

62

Ugrađeno računalo za razvoj agenta

1Mikrokontroler ATmega128

2GSM/GPRSWISMO228

3NapajanjeLM2596

4Sklop za takt

7,38MHz

5 UART

12Sučelje prema

osobnom računalu

UART

RS232

12V ANT GSM

Slika 4.5. Blok-shema ugrađenog računala s cjelinama potrebnima za razvoj agenta.

Na slici 4.6. prikazana je električna shema testnog ugrađenog računala, odnosno

samo dio industrijskog uređaja potrebnog za testiranje.

Slika 4.6. Električna shema dijela ugrađenog računala korištenog za testiranje.

Kako bi GPRS modul ispravno funkcionirao na njega je spojena SIM kartica [68] i

mala integrirana antena na tiskanoj pločici. Sučelje između mikrokontrolera i modula

čine 3 otpornika (R3, R4, R5) i 1 digitalni izlaz za paljenje modula (PD4/PON).

Napajanje mikrokontrolera i modula zajedničko je i iznosi nestandardnih 4.4V što je

minimalni napon da bi mikrokontroler mogao ispravno raditi na 14.7MHz, i s druge

Page 64: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

63

strane maksimalni napon propisan za WISMO228. Napajanje je zasnovano na

integriranom sklopu LM2596 [69], sposobno isporučiti do 3A struje stabiliziranog

napona. Ono se temelji na impulsnoj tehnici te se ulazni napon snižava pulsno

širinskom modulacijom (engl. PWM – Pulse Width Modulation). Na taj su način

gubitci i potrošnja energije uređaja nekoliko puta manji nego da se radi o linearnom

snižavanju i regulaciji napona napajanja s manjim disipiranjem parazitne energije u

obliku topline. Sklop za regulaciju sastoji se od dva otpornika (R1 i R2) koji

postavljaju iznos izlaznog napona, induktiviteta (L1), brze snažne diode (D2) i

nekoliko kondenzatora (C1 do C4).

Sučelje prema osobnom računalu ne koristi klasični RS232 naponski nivo nego 5V

UART naponski nivo, tako da je sučelje prema osobnom računalu praktički dva

vodiča na tiskanoj pločici i spojni konektor (J4).

Sklop za takt krajnje je jednostavan i sastoji se od kristalnog kvarca i dva blok

kondenzatora (Y1, C5, C6).

Iako je testno računalo jednostavno, velik dio površine tiskane pločice zauzima

upravo sučelje prema vanjskom svijetu odnosno uređaju u koji je ugrađeno računalo

ugrađeno (cjeline 7 i 8). Na slici 4.7. prikazana je gornja strana tiskane pločice s

elementima te označenim cjelinama prema blok-shemi sa slike 4.4.

Page 65: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

64

Slika 4.7. Gornja strana tiskane pločice testnog ugrađenog računala s označenim elementima i

cjelinama, dimenzija 77x137mm.

Page 66: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

65

4.3. Realizacija agenta s izravnom izmjenom programske memorije

Kao što je već spomenuto u poglavlju 3.3., agent unutar ugrađenog računala ima

određene zadatke i specifičnost realizacije zbog načina rada mehanizama unutar

mikrokontrolera koji dopuštaju pisanje po programskoj memoriji uz istodobno čitanje

izvršnih naredbi samo iz jednog malog dijela programske memorije (poglavlje 2.3.4.).

Zbog toga se programski algoritam agenta dijeli u dva dijela, u kojem se jedan dio

izvršava paralelno s glavnim programom, unutar prekidne rutine kad je procesor

manje opterećen (poglavlje 3.6.1.), te drugi samostalni dio koji će se izvesti kad

glavni program bude zaustavljen (poglavlje 3.6.2.).

4.3.1. Zadatci prvog dijela programskog algoritma agenta

1. Redovito intervalno spojiti se na server, ukratko se predstaviti i pitati za

posljednju inačicu programske podrške.

2. Detaljno se predstaviti serverskom agentu ako on zatraži detaljne informacije

te dostaviti korisničku konfiguraciju i trenutačnu inačicu programske podrške.

3. Obavijestiti korisnika ili zatražiti dopuštenje korisnika prema korisničkoj

konfiguraciji.

4. Preuzeti modificiranu korisničku konfiguraciju.

5. Pohraniti modifikacije korisničke konfiguracije nakon prvog pokretanja nove

inačice.

4.3.2. Zadatci drugog dijela programskog algoritma agenta

1. Preuzeti novu inačicu programske podrške i spremiti je u programsku

memoriju.

2. Pokrenuti novu inačicu programske podrške.

Page 67: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

66

4.3.3. Analiza programskog algoritma agenta

Iako se na prvi pogled čini kako je prvi dio algoritma kompliciraniji, jer ima više

zadataka, u stvarnosti je drugi dio algoritma kompliciraniji i nogo teži za realizirati

zbog nekoliko ograničenja spomenutih u prethodnim poglavljima, ponajviše zbog

ograničenog programskog prostora za drugi dio algoritma.

Algoritam drugog dijela agenta mora imati implementiran algoritam za:

1. inicijalizaciju i spajanje na Internet putem GPRS uređaja ili neke druge

komunikacije,

2. TCP/Ip i HTTP protokol,

3. preuzimanje programske podrške u Intel HEX formatu, koji će dekodirati u

čiste binarne oktete spremne za zapis,

4. zapis u programsku memoriju,

5. provjeru ispravnosti preuzetih podataka,

6. provjeru ispravnosti zapisanih podataka,

7. mehanizme ponavljanja preuzimanja i zapisa u slučaju pogreške u zapisu.

Osim navedenih zadataka, algoritam agenta mora imati i funkcionalnost za:

1. preuzimanje programske podrške i putem sučelja sa osobnim računalom,

2. preuzimanje programske podrške putem SPI sučelja s dodatne vanjske

memorije.

Preuzimanje programske podrške putem sučelja s osobnim računalom neophodan je

algoritam u slučaju standardnog načina održavanja ugrađenog računala ili u slučaju

nemogućnosti povezivanja s Internetom. Zbog zaokruživanja cjeline te kako bi agent

bio univerzalan poželjno je i da ima funkcionalnost preuzimanja programske podrške

s dodatne memorije.

Page 68: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

67

4.3.4. Dijagram tijeka samostalnog algoritma agenta

Na slici 4.8. prikazan je dijagram tijeka izvršavanja drugog dijela algoritma agenta,

dakle samostalnog dijela agenta u posebnom dijelu programske memorije

mikrokontrolera. Prilikom svakog uključivanja ili reseta mikrokontrolera izvršit će se

ovaj algoritam.

Algoritam se temelji na zastavicama te učitava korisničku konfiguraciju, adresu

servera i sve ostale podatke iz električno izbrisive programabilne podatkovne

memorije (engl. EEPROM). Tu će glavni program odnosno programski agent koji se

izvršava paralelno glavnom programu zapisati parametre i zastavice potrebne za

izvršavanje samostalnomu programskom agentu, i to je jedini način komunikacije

između prvog dijela agenta koji se izvršava paralelno s glavnim programom i ovoga

dijela koji se samostalno izvršava (poglavlje 3.7.).

Algoritam omogućuje preuzimanje nove programske podrške sa:

1. udaljenoga programskog agenta na poslužitelju putem TCP/Ip protokola,

2. osobnog računala spojenog putem serijske sabirnice RS232,

3. dodatne vanjske memorije.

Pored zastavica, algoritam se temelji na međuspremnicima.

Ciklička rutina koja se poziva intervalno ili kad je zapisan segment pošalje zahtjev

serveru ili osobnom računalu za prijam segmenta.

Prekidna rutina za GPRS modul prima podatke s njega te putem zastavica izdvaja

čiste primljene podatke od servera od kontrolnih informacija. Čisti podatci šalju se na

međuspremnik.

Prekidna rutina za prijam podataka s osobnog računala izdvaja kontrolne oktete

putem zastavica, a čiste podatke sprema u isti međuspremnik kao i prekidna rutina

za GPRS modul.

Page 69: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

68

Preuzeti novi program sa

servera?

Preslikati dodatnu

memoriju u programsku?

Preuzeti novi program sa

osobnog računala?

Start bootloadera/samostalnog agenta

Izvrši glavni program u programskoj memoriji

Inicijaliziraj GPRS modulDa

Postoji li konfiguracija za

spajanje na server?

Ne

Postavi pokazivač na prvi segment programa

Da

Zatraži segment i preuzmi segment (http prema serveru

ili sučelje prema osobnom računalu)

XML parser:Izdvoji IHEX iz XML-a

IHEX parser:Izdvoji oktete iz Ihex-a

Parser prijavio grešku?

Da

Zapiši oktete u programsku memoriju i provjeri zapis

Ne

Učitavanje iz vanjske

memorije?

Greška prilikom zapisa?

Greška prilikom zapisa?

NeDa

Segment++

Zadnji segment?

Ne Segment++

Ne Zadnji segment?

Ne

Ne

Da

Da

Preuzmi oktete iz vanjske memorije

Postavi pokazivač na prvi segment

Da

Da

Da

Da

Ne

Ne

Ne

Poslužitelj

Slika 4.8. Dijagram tijeka samostalnog algoritma agenta.

Page 70: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

69

U petlji se izvršava XML parser (engl. Extensible Markup Language) [70] koji uzima

podatke s međuspremnika, izdvaja kontrolne informacije ovisno o nazivu podatka o

kojem se radi, kojima postavlja zastavice, a samo podatke koji predstavljaju preuzeti

program u Intel HEX zapisu prosljeđuje dalje u IHEX parser.

IHEX parser također se temelji na zastavicama prema Intel HEX standardu [71],

provjerava ispravnost zapisa svakog reda te izdvaja stvarne oktete nove inačice

programa iz ASCII HEX zapisa. Izdvojeni okteti dalje se prosljeđuju na rutinu za zapis

u programsku memoriju.

Rutina za zapisu u programsku memoriju također se temelji na zastavicama. Brine se

o zapisu segmenta u privremenu radnu memoriju te u međuspremnik predzapisa u

FLASH programsku memoriju, koji je osmina veličine segmenta. Brine se o zapisu

međuspremnika predzapisa da se on fizički zapiše u trajnu FLASH programsku

memoriju. Rutina će nakon svakoga zapisanog segmenta provjeriti zapis u

programskoj memoriji i usporediti ga sa zapisom u privremenoj memoriji. Shodno

tomu postavljaju se zastavice i ponavlja zapis ako je potrebno.

Dakle, cijeli algoritam agenta temelji se na FIFO međuspremniku (engl. First In, First

Out) i parserima.

4.3.5. Tijek glavne funkcije

Nakon svakog pokretanja ili restarta ugrađenog računala, pokreće se segment

memorije u kojemu se nalazi agent. Zato se samostalni agent naziva još i startni

program (engl. BootLoader).

Agent se mora pobrinuti za nadogradnju programske podrške putem osobnog

računala primarno i putem Interneta što je zadatak ovoga rada.

Glavna (engl. main) funkcija inicijalizirat će sklopovlje ugrađenog računala, ulazno-

izlazne signale, premjestiti tablicu prekidnih vektora, postaviti brzine komunikacije na

serijske portove i sve ostalo što je potrebno da se agent uspješno pokrene.

int main(void) { cli(); PORTE|=(1<<PE0)|(1<<PE1)|(1<<PE2); DDRE|=(1<<PE1)|(1<<PE2); // PE2 u 1 radi HCF4052

Page 71: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

70

DDRG|=(1<<PG4); PORTG&=~(1<<PG4); // PG4 u 0 radi HCF4052 DDRD&=~(4); PORTD|=4; // mičemo tablicu prekidnih vektora u memorijsko područje agenta MCUCR = (1<<IVCE); MCUCR = (1<<IVSEL); // inicijalizacija USART za sučelje prema GPRS modulu _UBRRH_=0; _UBRRL_=ubr[ubrc++]; #ifdef GPRS _UBRR1H_=0; _UBRR1L_=ubr[ubrc1++]; #endif _UCSRC_ = (1<<UCSZ1) | (1<<UCSZ0); // 8 bit, 1 stop bit, no parity _UCSRB_ = (1<<TXEN) | (1<<RXEN); // enable transmitter and receiver _UCSRB_ |= (1<<RXCIE); // receiver interrupt #ifdef UART0_TINT _UCSRB_ |= (1<<TXCIE); // transmit interupt #endif _UCSRA_=0; #ifdef GPRS _UCSR1C_ = (1<<UCSZ1) | (1<<UCSZ0); // 8 bit, 1 stop bit, no parity _UCSR1B_ = (1<<TXEN) | (1<<RXEN); // enable transmitter and receiver _UCSR1B_ |= (1<<RXCIE); // receiver interrupt _UCSR1A_=0; #endif #ifdef _2XUART _UCSRA_=(1<<U2X); // Double speed #ifdef GPRS _UCSR1A_=(1<<U2X); // Double speed #endif #endif // tmr0 je 8bit timer za 50Hz sat TCCR0=(1<<CS02) | (1<<CS00); // 128 prescaler TCNT0=111; //144 impulsa @ 7.3278MHz TIFR|=(1<<TOV0); TIMSK|=(1<<TOIE0); // to izadje 50 puta u sekundi (50Hz) #endif bits=0; bits|=(1<<spi_end); bits|=(1<<spi_tend)|(1<<spiena); ledica(); receiveBufferFull = FALSE; // reset full flag sbuft=0; sbufr=0; WDTCR|=(1<<WDCE)|(1<<WDE); WDTCR=0x0f; // Uključimo Watch Dog 2sec time reset_timer0(); // omogućimo prekide sei();

Nakon uspješne inicijalizacije, agent će se predstaviti osobnom računalu te upitati

GPRS modul je li prisutan te pričekati četiri sekunde u petlji prije nego što se izvrši

ostatak programskoga koda. U petlji agent čeka osobno računalo na zahtjev za

spajanjem i nadogradnjom programske podrške. Na upit će agent također odgovoriti

predstavljanjem.

info(3); // Agent se predstavi osobnom računalu #ifdef GPRS

Page 72: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

71

bitsout|=_gsmq|_gsmi; gsm_at(); if (bitsout&_gsmq && !(bitsout&_gsma)) { time_wait=100; GSM_PT // upalimo GPRS modul ako je ugašen } #endif time=4; // čekamo 4 sekunde bits|=(1<<start)|(1<<spi_xon); segment_(ERVBUF); // upišemo 0xFF u cijelo područje privremene memorije while (1) { // Petlja koja se vrti 4 sekunde i čeka osobno računalo // da zatraži nadogradnju programske podrške // u slučaju da je postavljena zastavica za nadogradnju // programske podrške putem interneta ista će se izvršiti // ako postoje potrebne informacije za spajanje wdr(); if (bits&(1<<_info)) info(3);

Nakon isteka četiri sekunde ili ranije ako je osobno računalo zatražilo nadogradnju,

izvršit će se ostatak agenta. Dakle prema zastavicama u trajnoj podatkovnoj memoriji

(engl. EEPROM), ili prema zahtjevu osobnog računala, ili ako nema niti jednog

zahtjeva, agent će pozvati funkciju check_start_app() koja provjerava postojanje

programske podrške u programskoj memoriji i istu pokrene, ili ponovno pokreće

agenta ako je programska memorija prazna.

if (bits&(1<<start)) { if (!time) { #ifdef GPRS if (!(rb2ee(DLVER)&0x80) && rb2ee(GPRSAPN)!=0xff && rb2ee(GPRSAPN)) { bits&=~(1<<start);bits|=(1<<gprsboot); puts_P_("Connecting to server..",0x13); reset_timer0(); gsm_setup(); gprs_web_start(); } else check_start_app(); // inače pokrećemo aplikaciju // Ako je flash prazan poziva bootloader ispocetka #endif } } else { xml_engine(); #ifdef GPRS if (bits&(1<<gprsboot))gsm_engine(); #endif //if (!time) check_start_app(); // restart the bootloader or start application } } }

U slučaju nadogradnje, glavna funkcija u beskonačnoj petlji izvršava funkcije

xml_engine odnosno XML parser koji se brine o prijmu podataka i njihovoj pohrani, te

gsm_engine koja se brine o GPRS modulu, njegovoj inicijalizaciji te upitima prema

serverskom agentu.

Prijam podataka s osobnog računala ili GPRS modula se odvija u prekidnim

funkcijama.

Page 73: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

72

4.3.6. XML parser

XML parser funkcija poziva se ciklički u beskonačnoj petlji nižeg prioriteta. Ako

procesor ne izvšava prekidne rutine, XML parser bit će pozivana. Funkcija provjerava

postoji li znak u međuspremniku koji pune prekidne funkcije GPRS modula i osobnog

računala, u kojem će se biti podatci u XML obliku. Na slici 4.9. prikazan je dijagram

tijeka ove funkcije.

Slika 4.9. Dijagram tijeka algoritma XML parsera.

XML je odabran za komunikaciju sa serverom jer je univerzalan, jednostavan za

korištenje i njime se lako opisuju vrste podataka koje se prenose. Nazivi podataka

mogli su biti definirani posebno za agente i prijenos podataka, no XML je daleko bolji

univerzalni izbor.

Page 74: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

73

Agent prepoznaje određene vrste podataka XML polja:

• <SEG> koji kaže o kojem se trenutačnom segmentu programa radi,

• <D> podatci u Intel Hex formatu nove inačice programske podrške,

• <X> podatci u kriptiranom Intel Hex formatu.

Server će poslati još neke podatke koje će agent ignorirati. Ostali podatci bitni su za

prvi dio algoritma agenta, no nevažni u ovom dijelu.

4.3.7. Tijek funkcije XML parsera

Ukoliko postoji novi znak u međuspremniku, funkcija će spremiti registre i

onemogućiti prekide, kako bi međuspremnik bio netaknut u ovom trenutku.

Funkcija uzima znak/podatak s međuspremnika i postavlja pokazivač na sljedeći

znak u međuspremniku (FIFO). Prekidi se natrag omogućuju, ako su bili omogućeni i

prije ulaska u funkciju jer sada se dalje prekidi mogu izvršavati i prekinuti funkciju

XML parsera, jer XML je preuzeo trenutačan znak iz spremnika koji će obraditi.

if (sbuft!=sbufr) { // Imam novi znak sreg=SREG; cli(); c1=sbuf[sbufr]; if (sbufr<SBUF_SIZE) sbufr++; else sbufr=0; if (receiveBufferFull) receiveBufferFull--; SREG=sreg;

Preuzeti znak nalazi se u varijabli c1. I sada se ulazi u napredno grananje ovisno o

zastavicama. Varijabla xml oktet je kojem bitovi predstavljaju pojedine zastavice.

Donja 4 bita okteta varijabla su odnosno brojač trenutačnog znaka unutar XML

naziva podatka, a gornja 4 bita predstavljaju pojedine zastavice ('D','S','G','/'). Dakle,

ako je xml veći od nule, XML zastavica je postavljena, ulazimo u grananje.

// c1 sadrzi ulazni znak if (xml) { if (xml==1) { switch (c1) { case '/': xml|=0x80; bits1&=~_cripted; break; // </...> case 'X': bits1|=_cripted; // <X> case 'D': xml|=0x40; break; // <D> case 'S': xml|=0x20; break; // <SEG> } } else if ((xml&0x0F)==3) { if (c1=='G') xml|=0x10; // <SEG> } if (c1=='>') { if (xml==0x42) bitsout|=_gprs_prog; // <D>

Page 75: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

74

else if (xml==0x34) { segment=0; bitsout|=_get_segment; } // <SEG> else if (xml&0x80 && bitsout&_gprs_prog) segment_write(); //</D> ili </X> else bitsout&=~_get_segment; // </SEG> xml=0; } else xml++; } else if (c1=='<') { xml=1;

Ako je xml varijabla jednaka jedan, dakle na prvom smo znaku naziva XML podatka, i

sada switch funkcijom odaberemo o kojem se prvom slovu radi. Ovisno o znaku,

postavlja se određena zastavica, odnosno bit varijable xml.

Nadalje, ako se ne radi o prvom znaku, funkcija provjeri radi li se o trećem znaku i je

li isti znak 'G'? Ako je 'G', radi se o <SEG> podatku i podiže određena zastavica.

Preostale spomenute zastavice nalaze se u globalnoj varijabli bitsout koja sadrži sve

preostale zastavice unutar agenta.

Ako su gornja četiri bita varijable xml jednaka tri, što znači zastavice S i G podignute,

te donja četiri jednaka četiri, znači da se radi o 3 slova unutar naziva, primljeni

podatak je <SEG> i funkcija treba postaviti zastavicu „segment“ kako bi se sljedeći

put prilikom ulaska u funkciju preuzeli podatci za trenutačan segment programa.

Nadalje, ako je postavljena zastavica „/“ i zastavica „IHEX“, to znači da je primljen

</D> ili </X> te treba završiti segment i pozvati funkciju za zapis segmenta iz radne

memorije u programsku memoriju.

Ako je postavljena samo zastavica „/“, onda se spušta zastavica „segment“ kako se

ne bi u varijablu brojača segmenta zapisali krivi podatci.

Dalje funkcija provjerava jesu li postavljene zastavice „IHEX“ ili „segment“ te poziva

funkciju IHEX parsera ili funkciju za preuzimanje segmenta.

} else if (bitsout&_gprs_prog) ihex_engine(c1); else if (bitsout&_get_segment) get_segment(c1);

Funkcija procesira međuspremnik odnosno primljene podatke i GPRS-a i osobnog

računala, tako da mora izvršiti i još nekoliko radnji koje se tiču isključivo komunikacije

s osobnim računalom. To je instrukcija osobnog računala da agent potpuno izbriše

programsku memoriju, zatim korisničko sučelje prema osobnom računalu gdje će se

agent predstaviti, i mehanizam kojim agent potvrđuje da je spreman za primanje

segmenata.

Page 76: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

75

else if (c1=='*') eraseflash(); else if (c1=='i') info(3); else if (c1==_CBL_) { putchar_(']'); reset_timer0(); } #ifdef _VERIFY else if (c1=='v') { bits|=1<<verify; reset_timer0(); } #endif }

Za nadogradnju putem osobnog računala postoji i dodatna funkcija kojom se može

usporediti preuzeti program s programskom memorijom i na taj način provjeriti

ispravnost cijelog programa.

Malom nadopunom ove funkcije agent je dobio funkcionalnost nadogradnje i

uporabom osobnog računala.

Page 77: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

76

4.3.8. Intel HEX format parser

HTTP protokol podrazumijeva prijenos podataka u ASCII obliku. Binarni format iako

je podržan nije preporučen. S druge strane XML prenosi isključivo podatke u ASCII

formatu sa zabranjenim korištenjem znakova veće od i manje od. Intel HEX format

standardizirani je format za pohranu i prenošenje programskih okteta računala, koristi

samo znakove dvotočki te brojeve i slova A do F u ASCII formatu, slika 4.10. Dakle

oktet je predstavljen hexadecimalno s dva slova odnosno znaka.

Slika 4.10. Intel HEX format zapisa okteta.

Nadalje, Intel HEX format ima ugrađene mehanizme za provjeru ispravnosti zapisa,

trenutačne lokacije u programskoj memoriji, završetak programa i broj okteta u

zapisu. Na taj način format je riješio problem kontrole ispravnosti prenesenoga

programa i problem pretvorbe binarnih okteta u dopuštene ASCII znakove.

Nedostatak je Intel HEX formata veličina zapisa. Naime, isti se u odnosu na

originalne oktete povećava oko dva i pol puta. To znači da će količina prenešenih

podataka umjesto 120KB, koliko je programska podrška velika, iznositi oko 400KB

uporabom skupe GPRS veze na Internet. Također, prijenos 400KB GPRS vezom

klase 10 s maksimalnom brzinom preuzimanja od 60kbps iznositi će 69 sekundi,

odnosno, ako se radi o nadogradnji s osobnog računala serijskom sabirnicom na

115200bps, oko 35 sekundi.

Podatci

Tip podataka

Adresa

Broj okteta

Kontrolni oktet

Page 78: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

77

Početak IHEX parsera primljen znak

Je li znak :?

Je li zastavica IHEX

postavljena?

NeJe li zastavica IHEX

postavljena?

Da

Postavi zastavicu

greške

Da

Izlaz iz funkcije

Ne

Da

Postavi zastavicu IHEX, postavi

zastavicu parni broj, postavi zastavicu broj okteta, testnu

sumu na 0

Ne

Varijabla TC maskiraj donja 4 bita i dodaj primljeni znak konvertiran u binarni broj

(4bit)

Je li zastavica parni broj?

Rotraj TC u lijevo 4 bita i postavi zastavicu parni broj

Ne

Da

Skini zastavicu parni broj i pribroji TC testnoj sumi

Je li postavljena

zastavica broj okteta?

Je li postavljena zastavica adresa1?

Postavi TC u broj_okteta varijablu, skini zastavicu broj

okteta, postavi zastavicu adresa1

Da

Ne

Postavi TC u gornji oktet varijable adresa,

skini zastavicu adresa1, postavi

zastavicu adresa2

Da

Je li postavljena zastavica adresa2?

Ne

Postavi TC u donji oktet varijable adresa,

skini zastavicu adresa2, postavi

zastavicu tip

Da

Je li postavljena

zastavica tip?

Ne

Da

Je li TC jednak 1?

Postavi zastavicu

podatci, skini zastavicu tip

Postavi zastavicu kraj_prog

Da

Ne

Je li broj_okteta>0?

Ne

Postavi TC u privremeno polje,

broj_okteta--, pokazivac na

privremeno polje ++

Da Je li testna suma različita

od nule?

Ne

Postavi zastavicu

greška

Da

Dodatni mehanizmi

provjere

Slika 4.11. Dijagram tijeka izvršavanja algoritma funkcije IHEX parsera.

Page 79: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

78

Ipak Intel HEX format ima više prednosti nego nedostataka i korišten je u realizaciji

agenta. Komprimiranje prenešenih podataka nije moguće jer algoritam za

dekompresiju nije moguće staviti u mali programski prostor dodijeljen agentu.

Algoritam Intel HEX parsera se kao i u slučaju XML parsera temelji na zastavicama i

izvršava jedan po jedan znak kako se on proslijedi iz XML parsera. Na slici 4.11.

prikazan je dijagram tijeka izvršavanja Intel HEX parsera.

4.3.9. Tijek funkcije IHEX parsera

Funkcija XML parser će znak po znak podatka nove inačice programske podrške

proslijediti Funkciji IHEX parsera. Ova funkcija po zastavicama zna koji podatak

unutar jednog reda Intel Hex formata trnutačno procesira, i na taj način zna kamo taj

podatak proslijediti ili spremiti. Globalne varijable korištene u funkciji su:

• ihex sadrži zastavice,

• ihexc sadrži trenutačni podatak odnosno oktet pretvoren iz dva ASCII znaka,

• ihex_ad sadrži trenutačnu adresu na koju spremaju podatci,

• ihex_crc sadrži trenutačnu testnu sumu,

• ihex_bc sadrži trenutačan broj preostalih okteta podataka u jednom redu

zapisa.

Kao i u prethodnoj funkciji, sve zastavice funkcije sadržane su u jednoj varijabli ihex.

Odmah na početku funkcije provjera se je li ihex veći od nule, odnosno pretvorba

Intel Hex reda u tijeku. Ako je red započeo, funkcija preuzima znak koji se nalazi u

varijabli c. Varijabla ihexc sadrži konvertirani binarni oktet. Dakle prvo se istomu

maskiraju donja četiri bita i upiše konvertirani ASCII heksadecimalni znak u donja

četiri bita.

Provjerom zastavice neparni znak koji se nalazi na najnižem bitu varijable ihex,

funkcija će u slučaju parnog znaka rotirati ihexc ulijevo za četiri bita. To znači da će

upisani znak doći točno na svoje mjesto gornja četiri bita.

Ako je ipak neparni znak u redu Intel HEX formata, to znači da se unutar ihexc

varijable nalaze i gornja i donja četiri bita, znači cijeli oktet preuzet iz dva ASCII

Page 80: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

79

znaka, pa funkcija teče dalje. Varijabla ihexc dodaje se testnoj sumi, varijabli ihex_crc

i tako svaki oktet u jednom redu. Kad se na kraju reda toj sumi pribroji i kontrolni

oktet, suma mora biti jednaka nuli u slučaju ispravno primljenog reda.

Dalje funkcija prema zastavicama uzima vrijednost iz ihexc i stavlja je u tip podataka,

broj okteta i adresu.

if (ihex) { // Preuzeti znak se nalazi u c ihexc&=0xF0; // maskiramo donja 4 bita ihexc|= dekriptiraj(hexCharToInt(c)); // stavimo znak u donja 4 bita if (!(ihex&1)) { // ako je parni znak ihexc<<=4; // rotiramo u lijevo 4 bita ihex|=1; // postavimo zastavicu neparni } else {

ihex&=0xFE; // maknemo 1 radi ascii -> hex konverzije ihex_crc+=ihexc; // dodamo testnoj sumi oktet if (ihex&0x80) { // bytecount spremimo ihex=0x40; ihex_bc=ihexc; // postavimo zastavicu ad1 } else if (ihex&0x40) { // uzimamo byte od adrese gornji ihex=0x20; ihex_ad=ihexc; ihex_ad<<=8; } else if (ihex&0x20) { // uzimamo byte od adrese donji ihex=0x10; ihex_ad|=ihexc; check_segment(); ihex_ad&=0x7FF; } else if (ihex&0x10) { // uzimamo type podataka if (ihexc==1) ihex=4; // endoffile else if (!ihexc) ihex=8; // normalni podatci else ihex=2;

Na taj je način jednostavno i elegantno rješeno dekodiranje kontrolnih okteta koji

dolaze u slijedu, funkcijom koja se izvršava prekidno.

Nadalje, kada se u funkciji preuzme broj okteta, adresa i tip podatka, funkcija će

preuzeti podatke. U slučaju da je tip jednak nuli, što znači programski okteti, funkcija

broji oktete varijablom ihex_bc i sprema ih u privremeno memorijsko polje segmenta

veličine 2048 okteta u radnoj memoriji mikrokontrolera.

Ako se ne radi o tipu podataka nula, onda se ti podatci jednostavno ignoriraju. Tip

podatka jedan kraj je Intel Hex datoteke i nema podatak. Dok postoje dodatni tipovi

dva, tri, i četiri prema Intel Hex standardu za prošireni set adresa, koji se u ovom

slučaju ignoriraju, jer se agent preko trenutačnog broja segmenta veličine 2KB brine

o točnoj adresi okteta kamo se isti upisuje.

Nakon što su preuzeti svi okteti podataka, funkcija uzima kontrolni oktet i provjerava

greške te postavlja zastavice shodno trenutačnoj situaciji, koje će ostatku algoritama

agenta reći što dalje činiti.

Page 81: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

80

} else if (ihex&0x0F) { // uzimamo podatke if (ihex_bc) { // uzimamo podatke bilo koje vrste // Spremamo oktete samo ako se radi o tipu 0 ihex_bc--; if (ihex&8) verify_buffer[ihex_ad++]=ihexc; } else { // kraj reda if (ihex_crc) { // U slučaju greške ihex_error|=1; putchar_('§'); } else if (ihex&4) { // U slučaju kraja podataka bits|=(1<<srecEndOfFile); } if (ihex&8) { // u slučaju tipa 0 // Radimo dodatne provjere ispravnosti podataka if (ihex_ad>(ihex_adc+16)) { ihex_error|=2; putchar_(0xA9); } else ihex_adc=ihex_ad; } ihex=0; dekriptn=0; // Sve zastavice resetiramo } } } }

Zadnji dio funkcije ima detekciju znaka dvotočke, koji u standardu predstavlja

početak reda i shodno tomu postavlja zastavice unutar ihex varijable. U slučaju da se

početak reda pojavi prije nego što je prethodni završio, generirat će se greška i

postaviti zastavice o greški, kako bi ostatak algoritma agenta znao što poduzeti

odnosno ponoviti preuzimanje cijelog segmenta s poslužitelja nanovo.

if (c==':') { if (ihex) { #ifdef UART0_TINT putchar_('\''); #endif ihex_error++; } ihex=0x80;ihex_crc=0; if (bits1&_cripted) dekriptn=2; }

Naprednim programiranjem funkcije IHEX parser, koja procesira slijedni tip podataka

u prekidnom načinu, dobilo se na fleksibilnosti, brzini rada, boljem strukturiranju

programa i na kraju ono što je najbitnije, smanjenoj veličini izvršnog programa samog

agenta.

Page 82: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

81

4.3.10. Usporedba funkcije IHEX parsera u prekidnom obliku sa slijednim

Stariji model funkcije za dekodiranje Intel HEX formata prikazana je ovdje, kako bi se

dobio osjećaj koliko je prekidni parser bolji, napredniji i manji od klasičnoga slijednog

dekodiranja svakog reda zasebno:

uint8_t parseIHEX(void) { volatile uint8_t Bytecount, Checksum, Type; volatile uint32_t Address; volatile uint8_t tmpAddress; volatile char c1, c2; do { c1=getchar1(); if (c1=='*') { eraseflash(); } if (c1=='i') { info(3); } if (c1=='!' || !c1 || !time) check_start_app(); if (c1==_CBL_) { putchar_('}'); reset_timer0(); } if (c1==';') { dekriptn=2; } if (c1=='v') { bits|=1<<verify; reset_timer0(); } else if (!(bits&(1<<spiboot)) &&programThisMemory==FLASH && c1!=':' && c1!='&' && c1!='$' && c1!=';' && c1!='\r' && c1!='\n') { if (!(recieveBufferOveride&0x10)) putchar_('L'); recieveBufferOveride|=0x10; } } while (c1!=':' && c1!=';'); reset_timer0(); programThisMemory = FLASH; // set flag srecEndOfFile = FALSE; // get the byte count Bytecount = getbyte(); Checksum = Bytecount; // add byte count to checksum Address = 0; // reset s-record address #ifdef IHEX_Linear if (IHEXelA) { // Extened linear Adress Address=(uint32_t)IHEXelA; Address<<=8; // Rotating left 8 bit } #endif tmpAddress = getbyte(); // get next address byte Address += (uint32_t)tmpAddress; // add new lower address byte Checksum += tmpAddress; // add address portion to checksum Address <<= 4; // shift existing address one byte left #ifdef IHEX_Segment if (IHEXesA) // Extended Segment Adress Address+=(uint32_t)IHEXesA; #endif Address <<= 4; // shift existing address one byte left tmpAddress = getbyte(); // get next address byte Address += (uint32_t)tmpAddress; // add new lower address byte Checksum += tmpAddress; // add address portion to checksum Type = getbyte(); Checksum += Type; // add type to checksum if ((Address-oldAddress)>0x10 && oldAddress && Address && !Type) { putchar_('s'); // if checksum is wrong, 'C' indicates this error recieveBufferOveride|=0x10; } oldAddress=Address; if (Type==0) { // Normal Data record #ifdef _VERIFY if (!(bits&(1<<verify))) #endif checkpage(Address); // Check if Adress is within page if ((Bytecount&0x01)==1) { // Eror even byte number putchar_('o'); // TEST ONLY recieveBufferOveride|=0x10; } else {

Page 83: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

82

// read all data bytes while (Bytecount) { if (Bytecount>=2) Bytecount-=2; else Bytecount=0; // assemble a 16 bit data word and calculate checksum c1 = getbyte(); Checksum += c1; c2 = getbyte(); Checksum += c2; // write word to flash write buffer #ifdef _VERIFY if (bits&(1<<verify)) { #if defined (__AVR_ATmega128__) || defined (__AVR_AT90CAN128__) if(pgm_read_byte_far(Address) != c1 || pgm_read_byte_far(Address+1UL) != c2) { #else if(pgm_read_byte_near(Address) != c1 || pgm_read_byte_near(Address+1UL) != c2) { #endif putchar_('E'); // TEST ONLY recieveBufferOveride|=0x10; } Address+=2UL; } else { #endif verify_buffer[(uint8_t)(Address&0xff)]=c1; verify_buffer[(uint8_t)(Address&0xff)+1]=c2; boot_page_fill((uint8_t)(Address&0xff), (c2 << 8) + c1); flashPageSizeCounter -= 2; if (flashPageSizeCounter<=2) { if ((writeBaseAddress + (uint32_t)SPM_PAGESIZE)< BOOTADR) writebuffertomemory(); } Address+=2UL; checkpage(Address); #ifdef _VERIFY } #endif } } } else if (Type==2) { // Extended Segment Adress Record tmpAddress = getbyte(); // get next address byte IHEXesA = tmpAddress; Checksum += tmpAddress; // add address portion to checksum IHEXesA <<= 8; // shift existing address one byte left tmpAddress = getbyte(); // get next address byte IHEXesA += tmpAddress; // add new lower address byte Checksum += tmpAddress; // add address portion to checksum } else if (Type==4) { // Extended Linear Adress Record tmpAddress = getbyte(); // get next address byte IHEXelA = tmpAddress; Checksum += tmpAddress; // add address portion to checksum IHEXelA <<= 8; // shift existing address one byte left tmpAddress = getbyte(); // get next address byte IHEXelA += tmpAddress; // add new lower address byte Checksum += tmpAddress; // add address portion to checksum } Checksum += getbyte(); if(Checksum != 0) { putchar_('c'); // if checksum is wrong, 'C' indicates this error recieveBufferOveride|=0x10; } if (Type==1) { // EOF srecEndOfFile = TRUE; #ifdef _VERIFY if (!(bits&(1<<verify))) #endif writebuffertomemory(); putchar_('<'); } dekriptn=0; return TRUE; }

Već je na prvi pogled jasno koliko je funkcija složenija, nekoliko puta duža i veća i

radi slijedno, a ne u prekidu kao nova naprednija funkcija za dekodiranje Intel HEX

formata.

Page 84: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

83

4.3.11. Funkcija za zapis segmenta u programsku memoriju

Funkcija za zapis segmenta memorije od 2048 okteta (segment_write) pokušat će

zapisati segment memorije iz privremenog polja u radnoj memoriji u programsku

memoriju tri puta. Naravno, nakon svakog puta provjerit će zapisane oktete u

programskoj memoriji i usporediti ih s oktetima u privremenom polju u radnoj

memoriji. Ako se tri puta ne uspije pravilno upisati segment, onda se segment

ponovno preuzima i ponovno zapisuje u privremenu i poslije programsku memoriju.

Ako je postavljena zastavica da je kraj programa, onda će se pozvati funkcija

end_of_write, inače se povećava pokazivač na sljedeći segment koji će se preuzeti.

void segment_write (void) { volatile uint8_t tmp=0; while (tmp<4) { segment_(WRITE); if (segment_(VERIFY)) { tmp++; putchar_(0xc9+tmp); } else tmp=0xff; } if (bits&(1<<srecEndOfFile) && tmp==0xff) end_of_write(); else if (tmp==0xff && !ihex_error) segment++; else ihex_error=0; ihex_adc=0; segment_(ERVBUF); bitsout|=_gprs_chk|_time120; bitsout&=~_gprs_prog; bits&=~(1<<srecEndOfFile); putchar_('%');putcharh_(segment); reset_timer0(); }

Nakon toga funkcija briše polje privremene memorije, postavlja zastavice i na kraju

šalje osobnom računalu zahtjev za novi segment. Ukoliko se radi o preuzimanju sa

poslužitelja, taj će zahtjev osobno računalo ignorirati, ako je uopće i spojeno na

ugrađeno računalo.

Funkcija segment_ višenamjenska je skriptna funkcija koja manipulira s privremenom

i programskom memorijom na određenom segmentu. Iskorištena je činjenica da se tri

operacije vrlo malo razlikuju tako da se zastavicama funkcija prilagođuje i izvršava:

1. pisanje privremenog polja u programsku memoriju,

2. provjera zapisa usporedbom programske i privremene memorije,

3. brisanje odnosno postavljanje inicijalnog polja privremene memorije svih

bitova u logičku jedinicu.

Page 85: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

84

Također, funkcija se brine o različitim veličinama međuspremnika; privremenom polju

koje je veličine 2048 okteta i privremenome međuspremniku FLASH programske

memorije koji je 255 okteta. Naime, programska memorija ne zapisuje se izravno,

nego se okteti, njih 255, postave u međuspremnik FLASH memorije, koji se zatim

generičkom funkcijom boot_page_write_safe spremi u programsku memoriju.

Naravno, prije toga se segment u programskoj memoriji obriše generičkom naredbom

boot_page_erase_safe koje su dio razvojnog programskog okruženja za AVR

porodicu procesora.

Generička funkcija boot_rww_enable_safe ponovno će omogućiti čitanje iz donjeg

dijela programske memorije koja postane nedostupna za pisanja i nakon pisanja.

#define WRITE 0 #define VERIFY 0x80 #define ERVBUF 0x40 uint8_t segment_ (const uint8_t opt) { volatile uint16_t tmpa=0; while (tmpa<=VER_BUF_SIZE) { // 8 puta zapisemo SPM_BUFFER jer je buffer 255byte, a verify buffer 2048byte if (opt&ERVBUF) { verify_buffer[tmpa++]=0xff; } else { writeBaseAddress=(uint32_t)segment; writeBaseAddress<<=11; writeBaseAddress+=(uint32_t)tmpa; do { if (opt&VERIFY) { if(pgm_read_byte_far(writeBaseAddress+ (uint32_t)(tmpa&0xff)) != verify_buffer[tmpa]) return 1; tmpa++; } else { boot_page_fill(tmpa&0xff, verify_buffer[tmpa]+(verify_buffer[tmpa+1]<<8)); tmpa+=2; } } while (tmpa&0xff); if (!opt) { boot_page_erase_safe(writeBaseAddress); boot_page_write_safe(writeBaseAddress); boot_rww_enable_safe(); // reenable rww section again } } } return 0; }

Zašto je korišten segment od 2048 okteta ako je međuspremnik u programskoj

memoriji 256 okteta? Zbog jednostavnog razloga što je 256 okteta međuspremnik

premalen, i što se za preuzimanje svakog segmenta od servera šalje određena

količina podataka u zaglavlju HTTP protokola, i isto se tako prima mnogo više

znakova nego što sadrži sam XML podatak.

Korišteno je 2048 okteta segment, jer procesor raspolaže sa samo 4096 okteta radne

memorije, a svi nisu mogli biti iskorišteni jer su potrebni i drugi međuspremnici.

Page 86: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

85

Tako ispadne da je glavni program od 120KB ima 60 segmenata. Znači šezdeset

upita sa zaglavljima i svim ostalim nije mnogo veća količina kao u slučaju da se radi o

256 okteta segmentu kad bi bilo 480 segmenata.

4.3.12. Funkcija za signalizaciju kraja zapisa

Funkcija end_of_write u slučaju ispravnog prijema i zapisa programa u programsku

memoriju, postavlja zastavice u trajnoj memoriji, šalje informacije na osobno računalo

i ponovno pokreće agenta. Također šalje „+++“ na GPRS modul, te u slučaju da je isti

ostao u podatkovnom načinu rada, vraća se u naredbeni način rada.

void end_of_write (void) { if (recieveBufferOveride&0x10) { eraseflash(); } else { #ifdef GPRS if (bits&(1<<gprsboot)) puts_P_("+++",4); wb2ee(DLVER,rb2ee(DLVER)|0x80); #endif putchar_('['); putchar_('O'); putchar_('K'); putchar_('\n'); } startBootloader(); // ponovno pokreni agenta }

Page 87: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

86

4.3.13. Prekidna rutina GPRS modula

Prekidna rutina GPRS modula izvršava se svaki put kad modul pošalje bilo koji znak

ugrađenom računalu preko serijske sabirnice. Prekida rutina, kao i prethodne

funkcije, temelji se na zastavicama i slijedne podatke odnosno informacije izvršava

jedan po jedan znak.

Prekidna rutina mora prepoznati tri vrste podataka koje modul šalje preko iste

sabirnice, a potpuno su različiti podatci. Dakle vrste podataka:

1. AT komande i odgovor na AT komande.

2. Podatkovni mod i podatci koje će GPRS modul primiti od TCP/Ip konektora na

određeni poslužitelj u internetskom svijetu.

3. HTTP izdvojeni podatci prema standardu protokola.

Prva vrsta podataka kontrolne je naravi, postavlja zastavice i odlučuje što će

algoritam izvršiti prema modulu.

Nakon što se izda naredba za spajanje modula putem Interneta i TCP/Ip porta na

određeni poslužitelj, i veza bude uspješno ostvarena, naredbom modul ulazi u TCP/Ip

stog, odnosno podatkovni način rada i svi znakovi upućeni prema modulu i od

modula bit će izravno prosljeđeni do internetskog poslužitelja na određenoj adresi i

portu.

U tom slučaju algoritam agenta mora emulirati upit internetskog pretraživača prema

standardu HTTP i zatražiti određeni sadržaj. Time dolazimo to trećeg tipa podataka

gdje agent mora znati izdvojiti zaglavlje od stvarnih podataka koje server šalje. Samo

ti stvarni podatci predstavljaju XML koji se prosljeđuju u međuspremnik. Sve se

ostale razine podataka odbacuju.

ISR (UART1_INT) { uint8_t status=0,sreg; sreg=SREG; cli(); status=_UCSR1A_; ledica(); if (status & (1<<_DOR1_)) { // Izgleda da je propusten znak bitsout|=_bod0; } uart0c=_UDR1_; // Uzimam podatak sa serije0 if (uart0c) bitsout&=~_gsmq; // Da prisutan je if (!(bitsout&_gsm_data) && (uart0c=='+')) uart0p=0;

Page 88: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

87

if (uart0p<(UARTR0_BUF_SIZE-1)) uart0[uart0p++]=uart0c; // Uzimam podatak sa serije0 else if (uart0p==0xff) uart0p=0; if (bitsout&_gsm_data) { if (http_data) { fill_sbuf(uart0c); // punimo XML u međuspremnik if (status & (1<<_DOR1_)) http_data--; http_data--; } else if (uart0c==10) { if (uart0p<6 && !(check_char(uart0[0])) ) { // imamo chunked iznos get_http_data_size(); } else if (uart0p>16 && uart0[uart0p-7]=='c' && uart0[uart0p-6]=='l' && uart0[uart0p-5]=='o' && uart0[uart0p-4]=='s' && uart0[uart0p-3]=='e') { bitsout&=~(_gsm_data|_gprs_data_open|_get_segment|_gprs_prog); xml=0; putchar_('×'); } uart0p=0; uart0t=0; } else if (uart0p==4 && ((uart0[0]=='S' && uart0[1]=='H' && uart0[2]=='U' && uart0[3]=='T')|| (uart0[0]=='+' && uart0[1]=='C' && uart0[2]=='R' && uart0[3]=='E') )) { bitsout&=~(_gsm_data|_gprs_data_open|_get_segment|_gprs_prog); xml=0; putchar_('×'); } #ifdef UART0_TINT else putchar_i(uart0c); #endif } else { #ifdef UART0_TINT putchar_(uart0c); #endif if (uart0p==6 && uart0[0]=='+') { if (uart0[1]=='W' && uart0[2]=='I' && uart0[3]=='P' && uart0[4]=='R') { // +WIPREADY: 2,1 bitsout|=_gprs_data_open|_gprs_chk; } else if (uart0[1]=='W' && uart0[2]=='I' && uart0[3]=='P' && uart0[4]=='P') // +WIPPEERCLOSE: 2,1 bitsout&=~_gprs_data_open; else if (uart0[2]=='M' && uart0[3]=='E') // +CMEE bitsout|=_er; // Error } else if (uart0c==13 || uart0c==10) { if ((uart0[0]=='a' && uart0[1]=='t')) { #ifdef _DEBUG_GSM_ xd('R','!'); #endif bitsout&=~(_gsm|_gsmq); bitsout|=(_gsma); } else if ((uart0[1]=='K' && uart0[0]=='O')) { #ifdef _DEBUG_GSM_ xd('R','?'); #endif bitsout&=~(_gsm|_gsmq); bitsout|=(_gsma|_ok); } else if ((uart0[0]=='0' && (uart0[1]=='3' || uart0[1]=='4') && uart0[2]=='2') && uart0p==4) { #ifdef _DEBUG_GSM_

Page 89: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

88

xd('R','#'); #endif bitsout&=~(_gsmq); bitsout|=_gsm; } else if (uart0p==2) { if (uart0[0]=='4') { bitsout|=_er; // Error //timergsm_com=0; } else if (uart0[0]=='1') { // Connected data mode bitsout|=_gsm_data; bitsout|=_gprs_chk; uart0status=0; } else if (uart0[0]=='0') { bitsout&=~(_gsmq); bitsout|=_gsm; bitsout|=_ok; // OK #ifdef _DEBUG_GSM_ xd('O','K'); #endif //timergsm_com=0; if (bitsout&_gsmi) { #ifdef _DEBUG_GSM_ xd('R','i'); #endif bitsout|=(_gsma); } } } bitsout&=~_bod0; uart0p=0; uart0t=0; } } SREG=sreg; }

Page 90: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

89

4.3.14. Prekidna rutina sučelja prema osobnom računalu

Prekidna rutina za prijam znakova odnosno podataka s osobnog računala krajnje je

jednostavna. Na osobnom računalu pokrene se programska podrška koja je

prilagođena ovoj vrsti agenta i koja će poslati podatke točno onog sadržaja koji je

potreban. Program na osobnom računalu šalje čisti XML format podataka koje agent

očekuje. Pri tome prekidna rutina detektirat će i pogrešnu brzinu prijenosa podataka i

prilagoditi se brzini definiranoj na osobnom računalu u određenim granicama.

Dopuštene brzine su 115200bps, 57600bps, 19200bps i 9600bps. Nadalje, prekidna

rutina mora znati prepoznati kada osobno računalo odnosno programska podrška na

istom želi mijenjati programsku memoriju ugrađenog računala.

ISR (UART0_INT) { volatile uint8_t ic; ledica(); if (_UCSRA_ & (1<<_DOR_)) // Izgubljen byte recieveBufferOveride|=0x10; if (_UCSRA_ & (1<<_FE_)) { // Izgleda da je krivi baudrate #ifdef AUTOBAUD if (bits&(1<<start)) { if (!(ubrc&1)) _UBRRL_=ubr[ubrc>>1]; ubrc++; if (ubrc>15) ubrc=0; } #endif } else { ic=_UDR_; // Uzimam podatak sa serije0 // putchar1(ic); if (!(bits&(1<<uartboot))) { if (ic==_CBL_) { bits&=~((1<<start)|(1<<gprsboot)|(1<<spiboot)); bits|=(1<<uartboot); reset_timer0(); } else if (ic==0x0a || ic==0x0d) bits|=1<<_info; } else { fill_sbuf(ic); } } }

Rutina prepoznaje znak pod nazivom „_CBL_“ iza kojeg se krije ASCII znak „&“.

Kada agent prilikom svoga pokretanja odmah nakon pokretanja ili restarta ugrađenog

računala primi ovaj znak, postavit će zastavice i prijeći u način rada nadogradnje

programske podrške ugrađenog računala putem osobnog računala.

Upravo je zbog toga funkcija XML parser dopunjena s onih nekoliko redova gdje se

na određeni znak agent predstavlja, briše programsku memoriju i tako dalje.

Dakle, kad se nakon primljenog znaka „&“ postave zastavice, sva daljnja

komunikacija, odnosno primljeni podatci, prosljeđuju se u međuspremnik funkcijom

fill_sbuf() koja je ista kao i za GPRS modul i koristi isti međuspremnik.

Page 91: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

90

Naime, agent će prema postavljenim zastavicama u globalnoj varijabli bits znati koja

je vrsta veze u tijeku i s kojeg uređaja dolaze podatci, te se shodno tomu i ponašati.

Programska podrška na osobnom računalu ponaša se kao jednostavni server, gdje

nema HTTP protokola, nego jednostavno agent zatraži segment programske

memorije koji želi preuzeti i kaže kad je preuzimanje gotovo. Naravno, proces je

maksimalno pojednostavljen kako bi se mogle iskoristiti postojeće funkcionalnosti

koje su implementirane radi nadogradnje putem Interneta, no da omoguće i

nadogradnju izravnim spajanjem na osobno računalo trošeći pritom što je manje

moguće programske memorije agenta.

4.3.15. Funkcija za zapis okteta u prijemni međuspremnik

Funkcija je vrlo jednostavna, a koristi se za spremanje podataka u međuspremnik.

Pritom ima mehanizme za postavljanje pointera na početak i kraj reda, i zastavice

kad se međuspremnik prepunio.

void fill_sbuf (const uint8_t ic) { sbuf[sbuft]=ic; // Uzimam podatak sa serije0 receiveBufferFull++; if (sbuft<SBUF_SIZE) { // Ne upisuje nove kada se buffer zapuni if ((sbuft+1)!=sbufr) sbuft++; else recieveBufferOveride|=0x10; } else { if (sbufr!=0) sbuft=0; else recieveBufferOveride|=0x10; } }

Međuspremnik je veličine 500 okteta. Vjerovatno nije potreban toliko velik spremnik,

no radna memorija je slobodna. Međuspremnik je tu radi većih brzina prijenosa

podataka. Na primjer, kad bi se koristila brzina prijenosa veća od 115200bps, i niže

brzine procesora, moglo bi se dogoditi da procesor ne stigne procesirati kroz funkcije

XML parser i IHEX parser; zbog toga je tu međuspremnik koji će podatke sačuvati

dok se isti ne obrade.

Page 92: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

91

4.3.16. Funkcija za provjeru i pokretanje glavnog programa

Ovu će funkciju agent pozvati nedugo nakon pokretanja. Ona provjerava postoji li

glavni program u programskoj memoriji koji će pokrenuti, ili ako je programska

memorija prazna, funkcija ponovno pokreće samostalnog agenta.

Dakle funkcija pogleda zapis u programskoj memoriji na nultoj adresi i ako je isti

jednak 0xFF, memorija je prazna. Tada se ponovno pokreće agent.

Ako memorija nije prazna, funkcija mora vratiti tablicu prekidnih vektora na početak

programske memorije kako bi se glavni program izveo ispravno, i pokrene glavni

program.

void check_start_app(void) { if(pgm_read_byte_near(0x0000) == 0xFF) { startBootloader(); // pokreni agenta } else if(!(bits&((1<<uartboot)|(1<<spiboot)|(1<<gprsboot)))) { // preseli tablicu prekidnih vektora na početak programske // memorije u slučaju da agent ne bude pokrenut cli(); MCUCR = (1<<IVCE); MCUCR = 0; startApplication(); // pokrenemo glavni program while (1); } }

4.3.17. Prekidna rutina za sat

Prekidna rutina izvest će se dvjesto puta u sekundi i njome agent dobiva takt sata za

vremenski ovisne funkcionalnosti. Za odbrojavanje vremena u sekundama, za

funkciju kašnjenja i za generiranje dužine vremenski ovisnog impulsa za paljenje

GPRS modula.

ISR(SIG_OVERFLOW0) { // 5ms 200Hz if (time_wait) time_wait--; #ifdef GPRS else GSM_RT #endif timer_clock++; if (timer_clock==200) { timer_clock=0; if (time) time--; // seconds ledica(); } }

Page 93: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

92

4.3.18. Rutine i funkcije za slanje podataka na osobno računalo

Prilikom razvoja agenta potrebno je na neki način kontrolirati i vidjeti što agent

komunicira s GPRS modulom, serverskim agentom putem Interneta, i krajnjoj liniji

agent mora programskoj podršci na osobnom računalu slati neke informacije i

podatke.

Standardna funkcija za slanje podataka na osobno računalo inače je vrlo

jednostavna. Ima samo dva reda programskoga koda. Dakle funkcija čeka dok

sklopovlje za serijsku komunikaciju ne pošalje znak i isprazni spremnik. Tada funkcija

stavlja novi znak za slanje na spremnik.

void uartPutChar(uint8_t c) { while(!(_UCSRA_ & (1 << UDRE))); // čekaj dok se ne isprazni izlazni spremnik serijskog sučelja _UDR_ = c; // zapiši znak na izlazni spremnik }

Prilikom dijagnostike kvara i razvoja potrebno je što više informacija o drugim

komunikacijama i načinu rada agenta poslati na osobno računalo putem 115200bps

serijske komunikacije. To znači da za svaki znak treba oko 90 mikrosekundi za

prijenos. To znači da će svaki znak procesor biti zaustavljen na to vrijeme.

Povećavanjem broja znakova koji se prenose u slučaju razvoja, to vrijeme postaje

ogromno i uzima dragocjeno vrijeme samome agentu za izvođenje algoritama.

Zato je moguće prilikom razvoja uključiti definiciju „UART0_TINT“ i, umjesto

jednostavne funkcije za slanje, koristiti prekidnu rutinu i međuspremnik za slanje.

To znači da, kad bilo koji dio algoritma pozove funkciju za slanje znaka na osobno

računalo, ona će prvi znak odmah poslati a ostale spremiti u međuspremnik (kojemu

se definira duljina, na primjer 250 znakova). Tako će algoritam agenta moći bilo kad

pozivati funkciju za ispis na osobno računalo ne usporavajući pritom rad samoga

ugrađenog računala.

#ifdef UART0_TINT static volatile char ssbuf[UARTS_BUF_SIZE+2]; static volatile uint16_t sbp=0,sbt=0; ISR (UART0_TINT) { if (sbp!=sbt) { bits1&=~(_tend|_tfull); _UDR_=ssbuf[sbp++]; if (sbp>UARTS_BUF_SIZE) sbp=0; } else bits1|=(_tend); } uint8_t putchar_i (volatile uint8_t c) { // PC port uint8_t sreg; if (bits1&(_tfull)) return (0);

Page 94: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

93

sreg=SREG; cli(); if (bits1&(_tend)) { bits1&=~(_tend); _UDR_=c; } else { ssbuf[sbt++]=c; if (sbt>UARTS_BUF_SIZE) sbt=0; if (( sbp== (sbt+1)) || (sbp==0 && sbt==UARTS_BUF_SIZE)) bits1|=(_tfull); } SREG=sreg; // sei(); return (c); } void uartPutChar(uint8_t c) { while(!putchar_i(c)); } #else void uartPutChar(uint8_t c) { while(!(_UCSRA_ & (1 << UDRE))); // čekaj dok se ne isprazni izlazni spremnik serijskog sučelja _UDR_ = c; // zapiši znak na izlazni spremnik } #endif

Kako se koji znak pošalje, prekidna rutina uzima sljedeći znak iz međuspremnika i

šalje ga na osobno računalo.

Negativna strana ovoga složenijeg načina slanja jest ta da su ove rutine i funkcije

daleko veće od ona početna dva reda, te će i zauzeti nekoliko desetaka puta više

dragocjenoga programskog prostora za agenta u ograničenom relativno malom

prostoru za od 8KB predviđenih za njega.

4.3.19. Funkcija za kontrolu rada GPRS modula

Funkcija gsm_engine ciklički se izvršava poput xml_engine funkcije kad je procesor

slobodan i ako je postavljena zastavica za preuzimanje programa putem Interneta.

Funkcija će ovisno o zastavicama pozvati redom:

1. gprs_web_start funkciju za inicijalizaciju GPRS funkcionalnosti i TCP/Ip stoga

te spajanje na server,

2. gprs_data_start funkciju koja otvara vezu na server i prebacuje modul u

podatkovni mod,

3. gprs_data_send funkciju koja kroz podatkovni TCP/Ip kanal šalje HTTP

protokolom zahtjev serveru za preuzimanje određenog segmenta.

void gsm_engine (void) { if (bitsout&_gprs_chk) {

Page 95: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

94

bitsout&=~_gprs_chk; if (bitsout&_gprs_data_open && !(bitsout&_gsm_data)) gprs_data_start(); else if (bitsout&_gsm_data && !(bitsout&_gprs_prog) && !(bits&(1<<srecEndOfFile))) gprs_data_send(); else if (!(bitsout&_gsm_data)) gprs_web_start(); } if (time==(10) || time==(60) || time==(30)) { putchar_('!'); time--; bitsout|=_gprs_chk; } }

Ovisno o zastavicama u kojoj je fazi agent, te prema prekidnoj rutini modula, poslat

će se određeni zahtjev modulu.

Na kraju funkcije ima još algoritam koji se izvršava vremenski u određenim

intervalima u raznim nepredviđenim situacijama kad se server ne odazove, podiže

zastavice i na taj način upravlja ponašanjem agenta.

4.3.20. Grupa funkcija naredbi prema GPRS modulu

Ugrađeno računalo komunicira s GPRS modulom putem AT komandi. Prilikom starta

agenta bit će pozvana funkcija gsm_setup koja incijalizira modul, odnosno postavlja

potreban način rada modula i uključuje GPRS i TCP/Ip stog, te se postavlja pristupna

točka za spajanje na Internet preko GPRS usluge (APN).

void crlf (void) { putchar1(13);putchar1(10); } void gsm_at (void) { puts_P_("at",0x14); wait(100); } void gsm_setup (void) { gsm_at(); puts_P_("at+pssleep=0",0x14); wait(40); puts_P_("ate0v0",0x14); wait(40); puts_P_("at+wipcfg=1",0x14); wait(40); puts_P_("at+wipbr=1,6",0x14); wait(40); puts_P_("at+wipbr=2,6,11,",4); putchar1('"'); printx_(GPRSAPN, 4); putchar1('"'); crlf(); wait(40); }

Page 96: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

95

Funkcija gprs_web_start inicijalizira preostale funkcionalnosti modula potrebne za

otvaranje TCP/Ip kanala prema poslužitelju na određenoj adresi i portu 80, koji je

standardan za HTTP protokol.

void gprs_web_start(void) { gsm_at(); puts_P_("at+wipbr=4,6,0",0x14); wait(100); puts_P_("at+wipclose=2,1",0x14); wait(20); puts_P_("at+wipcreate=2,1,",4); putchar1('"'); printx_(GPRSWWW, 4); putchar1('"'); puts_P_(",80",0x14); wait(100); }

Nakon što je modul spojen na server, funkcija gprs_data_start prebaciti će modul u

podatkovni način rada, i sada se sve što se šalje na modul izravno preusmjerava

putem GPRS-a, Interneta, TCP/Ip sve do poslužitelja i tako natrag.

void gprs_data_start (void) { gsm_at(); puts_P_("at+wipdata=2,1,2",0x14); wait(20); }

Nakon što je modul u podatkovnom modu rada izravne komunikacije sa serverom,

funkcija gprs_data_send implementirat će HTTP zahtjev, odnosno emulirati

internetski pretraživač te poslati određene podatke i zahtjeve internetskom

poslužitelju. Svi se podatci dohvaćaju iz trajne podatkovne memorije i šalju na modul

funkcijom printx_ odnosno printxh u slučaju ASCII Hex prikaza binarnog okteta.

void gprs_data_send(void) { puts_P_("GET ",4);printx_(GPRSPATH,4); puts_P_("?ser=",4); printxh(SERIAL,3); // Ispisi serijski broj puts_P_("&v=",4); printxh(VERSION,2); // Ispisi inačicu programa puts_P_("&vg=",4); printxh(DLVER,2); // Ispisi traženu inačicu programa puts_P_("&act=",4); putchar1('D'); // Ispiši traženu akciju (D) preuzimanje puts_P_("&seg=",4); putcharh(segment); // Ispiši traženi segment puts_P_(" HTTP/1.1",0x14); puts_P_("Host: ",4);printx_(GPRSWWW,0x14); crlf(); if (bitsout&_time120) { time=120; bitsout&=~_time120; // Tako da ceka na server 100 sekundi } }

Naravno, na taj zahtjev, ako je sve ispravno, server će odgovoriti putem standardnog

HTTP protokola i upakirati podatke u XML zapis kodiranja.

Page 97: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

96

4.4. Implementacija realiziranoga samostalnog dijela programskog agenta na klijentskoj strani komunikacije

Za prevođenje programskog agenta iz C programskog jezika u strojni izvršni kod

prilagođen za AVR porodicu procesora korišten je AVR GCC prevoditelj, kao dio

WINAVR programskog paketa. Iako se kao razvojno okruženje koristi AVR Studio 4

proizvođača ATMEL, prevoditelj WINAVR programskog paketa kreira nešto manji,

odnosno optimiziraniji strojni izvršni kod, tako da je samostalni dio programskog

agenta preveden upravo tim paketom.

Od 128KB ukupno raspoloživoga memorijskog prostora procesora, 8KB rezervirano

je za samostalni dio agenta. Agent s uključenim proširenjem za prekidno slanje

podataka na osobno računalo iznosi 6806 okteta programske memorije. U ovakvom

stanju agent se koristi u razvojnom okruženju. U slučaju produkcije, kad nije potrebno

proširenje za slanje podataka na osobno računalo u prekidu sa međuspremnikom,

implementirani agent zauzima 6386 okteta programske memorije. Dakle proširena

funkcija za prekidno slanje podataka zauzima samo 420 okteta.

Kad se iz agenta izuzme i GPRS dio za GPRS komunikaciju, samostalni dio

programskog agenta postaje standardni startni program veličine 3652 okteta

programske memorije. Dakle, taj standardni startni program u sebi sadrži rutine za

preuzimanje programskog sadržaja s osobnog računala u Intel HEX formatu, rutine

za pohranu preuzetoga programskog sadržaja u programsku memoriju i kontrolne

rutine za provjeru te pokretanje korisničkog programa. Taj dio startnog programa

neophodan je i bez njega samostalna izmjena programske memorije mikrokontrolera

unutar ugrađenog računala nije moguća. GPRS dio samostalnog dijela programskog

agenta praktički zauzima samo 2734 okteta.

Rezervirani programski prostor unutar procesora za startni program može biti

maksimalno 8KB ili manje s cjelobrojnom vrijednošću potencije broja dva. U slučaju

da nije potreban GPRS dio programskog agenta, rezervirani prostor može se smanjiti

na 4KB jer je startni program veličine nešto manje od toga.

Isto tako, smisao dinamičke nadogradnje programske podrške leži na samostalnoj

nadogradnji putem GPRS komunikacije, tako da isključivanje GPRS dijela nije opcija.

Iako agent zauzima 6386 okteta, što je manje od 8192 okteta rezerviranih za startni

program, preostali okteti neće moći biti iskorišteni od strane korisničkog programa,

Page 98: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

97

tako da je poželjno optimizirati samostalni dio agenta dodavanjem mogućnosti

dohvata programske podrške iz dodatne vanjske memorije i iskoristiti preostalih 1806

okteta koji su sada prazni i ne mogu biti iskorišteni od strane korisničkog odnosno

glavnog programa, slika 4.12.

Programska memorija

3652BStandardni startni program: rutine za Intel HEX i pisanje

po programskoj memoriji GPRS rutine

Slobodni prostor

Programski prostor za korisnički odnosno glavni program veličine 120KB

2734B

1806B

1E000

1FFFF

0000

Slika 4.12. Organizacija programske memorije i raspodjela programskog prostora samostalnog dijela

programskog agenta.

Page 99: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

98

4.5. Ispitivanje rada implementacije programskog agenta

Na slici 4.13. prikazana je testna okolina korištena za ispitivanje ispravnosti rada,

mjerenje vremena i statističku analizu mjernih rezultata. Na ispitivanju je postavljena

simulacija stvarne okoline, internetski poslužitelj spojen preko 100Mbit optičke veze

na Internet, koji izvršava poslužiteljski programski agent kreiran u PHP programskom

jeziku sa čuvanjem podataka u MySQL bazi podataka. Ugrađeno računalo koristi

WISMO228 GPRS modul koji se spaja preko GSM/GPRS davatelja usluge na

Internet. GPRS veza klase 10 ograničena je na 60kbps prilikom preuzimanja, te

40kbps prilikom slanja, odnosno 80kbps u preuzimanju i 20kbps u slanju ako je

preuzimanje dominantno, no GPRS nema prioritet u odnosu na GSM mrežu tako da

ta brzina u trenutku opterećenja GSM mreže pada. [72][4]

Testni ugrađeni sustav

Osobno računalo – mjerenje vremena i zapis u tablicu

GPRS

Poslužiteljsko računalo

GSM/GPRS davatelj usluge

RS232

TCP/Ip

TCP/Ip

Internet

Slika 4.13. Testna okolina za mjerenje statističkih podataka.

Na slici 4.14. prikazan je dijagram tijeka komunikacije samostalnog dijela

programskog agenta s poslužiteljskim agentom i razmjena informacija.

Page 100: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

99

Poslužitelj

Ako je postavljena zastavica za preuzimanje

inicijalizacija GPRS modula i preuzimanja, pokazivač na

segment 0

Zahtjev za preuzimanje segmenta postavljen kao

HTTP GET s parametrima koji opisuju sklopovlje i

inačicu programske podrške

GET /?vg=inacica&hwv=model&seg=segment

Baza podataka

Primljen zahtjev, procesiranje inačice,

segmenta i sklopovlja te dohvat odgovarajućeg

segmenta iz baze podataka

Pakiranje segmenta u XML, sa dodatnim informacijama i

vraćeni natrag agentu

<DOCUMENT><SEG>segment</SEGMENT><D>IntelHEX</D></DOCUMENT>Preuzimanje odgovora i prosljeđivanje istoga na XML parser, zatim na

IntelHEX parser i na kraju zapis u privremenu

memoriju

Zapis segmenta iz privremene u programsku

memoriju i provjera ispravnosti preuzimanja i

zapisa

Je li ispravno zapisan segment

NE

DA

Ako je ispravno preuzet segment, uvećaj segment

za 1

Je li zadnji segment?

NE

Pokreni preuzeti program

DA

Agent

Postavljen zahtjevza preuzimanje

nove inačice

HTTP GET [opis sklopovlja i inačica programske podrške]

Segment u IntelHEX formatu zapakiran u XML

Slika 4.14. Dijagram tijeka komunikacije programskih agenata s klijentske i poslužiteljske strane.

Odstupanje testne okoline od stvarnog slučaja očituje se u tome da je ugrađeno

računalo statično, dok u stvarnosti može biti i mobilno jer se radi o sigurnosnom

sustavu i sustavu za praćenje vozila.

Page 101: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

100

4.5.1. Način mjerenja i spremanja podataka

Testno ugrađeno računalo izvodi startni odnosno samostalni dio programskog agenta

koji preuzima zadanu programsku podršku s poslužitelja. Radi se o dvije grupe

mjerenja gdje prva grupa preuzima 110KB programske memorije koja sadrži stvarni

radni glavni program malo modificiran u svrhu testiranja, druga grupa preuzima 8KB

programske podrške zbog usporedbe. Stvarni je glavni program je u svrhu ispitivanja

modificiran tako da poziva samostalni programski agent s parametrima za učitavanje

istog programa s poslužitelja u prosjeku svake dvije minute, što bi trebalo rezultati sa

720 uzoraka prikupljenih u 24 sata, no taj će broj biti manji zbog produžetka intervala

u slučaju ponovljenih pokušaja u preuzimanju ili neispravnog preuzimanja.

Programska podrška s poslužitelja preuzima se u Intel HEX formatu, koji unosi

dodatne kontrolne oktete i svaki oktet programa prikazuje sa dva ASCII znaka. Tako

da ustvari preuzeti program iznosi 282KB u prvom slučaju odnosno 20KB u drugom

slučaju.

Preuzimanje se također odvija u segmentima veličine 2KB, odnosno 2048 okteta koji,

kad se u svrhu prijenosa pretvaraju u Intel HEX format te njihova veličina poraste za

2.6 puta. Cjeli program preuzima se u 50 segmenata u prvoj grupi, odnosno 4

segmenta u drugoj, gdje vrijeme potrebno za dohvat svakog segmenta iznosi

prosječno dvije sekunde.

U te dvije sekunde agent na strani ugrađenog računala putem HTTP protokola

zatraži dohvat određenog segmenta GET naredbom, agent na poslužiteljskoj strani

primi zahtjev, obradi ga, preuzme segment iz baze podataka te ga proslijedi natrag

zapakiranog u XML, HTTP protokolom koji preuzme agent od strane ugrađenog

računala, parsira, raspakira, obradi i zapiše u programsku memoriju.

Kako se radi o 50 segmenata te je za preuzimanje i zapis svakog segmenta od 2KB

potrebno oko 2 sekude, nalazimo da je u prosjeku potrebno oko 100 sekundi za

prijenos cijelog programa u prvoj grupi testiranja, odnosno oko 8 sekundi za 4

segmenta u drugoj grupi testiranja.

Povećanje segmenta na 4KB ili više sigurno bi ubrzalo prijenos programa, no

povećanje nije moguće zbog ograničenja samog sklopovlja ugrađenog računala,

odnosno, ugrađeno računalo ne raspolaže s dovoljno radne memorije.

Page 102: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

101

Mjerenje vremena i evidencija statističkih podataka realizirano je programom na

osobnom računalu koje analizira podatke proslijeđene preko serijskog RS232

sučelja. Naime samostalni agent prilikom svog rada poslat će manji set informacija

kroz sučelje prema osobnom računalu kako bi korisnik mogao pratiti rad agenta u

slučaju testiranja. Agent će poslati informaciju o početku rada, informacije o

preuzimanju svakog segmenta te završetku rada.

Program na osobnom računalu mora parsirati sve primljene podatke te izdvojiti

informaciju o početku rada, kada se uključuje štoperica i čeka informacija o završetku

rada. Kad agent završi sa radom, program na osobnom računalu zapisuje podatke u

tablicu:

• trenutačno vrijeme početka preuzimanja,

• vrijeme potrebno za preuzimanje cijelog programa,

• broj ponovljenih pokušaja u slučaju problema u preuzimanju.

U slučaju da neki segment nije ispravno preuzet, samostalni agent pokušava

ponovno dok isti ne bude prenesen. Ponovni pokušaj može stajati i do 25 sekundi u

slučaju ponovne inicijalizacije GPRS uređaja i uvećati ukupno vrijeme za taj iznos.

Također zastoj u GSM mreži i smanjivanje GPRS brzina prijenosa uvećat će ukupno

vrijeme preuzimanja

Testni sustav mjerit će 24 sata i zapisivati statistike o radu, za prvu grupu mjerenja, te

sljedećih 24 sata za drugu grupu mjerenja.

Page 103: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

102

4.5.2. Rezultati mjerenja

U 24 sata testiranja prikupljeno je 624 uzorka prve grupe odnosno 639 uzoraka iz

druge, te 543 uzorka iz prve grupe s upola manjim segmentom preuzimanja. U tablici

4.1. prikazani su statistički podatci testiranja.

Veličina programa 110KB 110KB 8KB

Veličina segmenta 1KB 2KB 2KB

Veličina programa u Intel Hex formatu 282KB 282KB 20KB

Teoretski moguće vrijeme preuzimanja (60/40kbps) 48,3s 48,3s 3,6s

Teoretski moguće vrijeme preuzimanja (80/20kbps) 35,5s 35,5s 2,5s

Postignuto vrijeme preuzimanja bez segmentacije 35,5s 35,5s 3,6s

Najbolje vrijeme preuzimanja 135,0s 84,0s 9,0s

Prosječno vrijeme preuzimanja 149,9s 103,8s 10,5s

Najlošije vrijeme preuzimanja 1611s 1335s 94s

Broj uzoraka: 543 624 639

Broj uzoraka sa ponovljenim pokušajem 18 86 6

Ukupan broj ponovljenih pokušaja 80 182 15

Postotak uzoraka s ponovljenim pokušajem 3,31% 13,78% 0,94%

Tablica 4.1. Ispitni podatci.

Iz statističkih podataka vidljivo je kako samo zaglavlje HTTP protokola zbog velikog

broja segmenata unosi određeno kašnjenje odnosno vrijeme prijenosa ako

usporedimo 48 sekundi teoretski najbržeg prijenosa s 84 sekunde najbržeg uzorka.

Također, brzine prijenosa su 60kbps za preuzimanje te 40kbps za slanje ako se

preuzima manja količina podataka, odnosno i šalje određena količina podataka.

Prilikom preuzimanja bez segmentacije, što je praktično nemoguće zbog ograničenja

sklopovlja, brzina prijenosa preuzimanja raste na 80kbps, a slanja pada na 20kbps,

čime samo preuzimanje može biti izvršeno unutar 35 sekundi.

Page 104: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

103

S druge strane, u drugoj grupi mjerenja najbrže teoretsko vrijeme od 3,6 sekundi jako

odstupa od najboljeg izmjerenog vremena od 9 sekundi. Velika je razlika unešena

samom inicijalizacijom GPRS uređaja i startnih kašnjenja te kašnjenja nakon zapisa i

prilikom pokretanja glavnog programa. Tih nekoliko sekundi neće biti toliko izraženo

na velikom paketu od pedesetak segmenata, ali u slučaju maloga programskog

paketa to vrijeme nije zanemarivo. Isto tako, samo zaglavlje HTTP protokola, upit

poslužitelja, čekanje na odgovor poslužitelja koje možda jest zanemarivo kratko, no

kada se pomnoži pedeset puta za pedest segmenata, to vrijeme će biti odgovorno za

dobar dio razlike vremena između teoretskog i stvarnog preuzimanja u prvoj grupi

mjerenja.

Također, segmentacija nije povoljna za preuzimanje preko GPRS tehnologije. Što je

manji segment, sama količina prenešenih podataka raste, jer svaki segment ima

određenu količinu podataka za upit i odgovor u HTTP i XML protokolu. Smanjivanjem

segmenta upola na 1KB, vrijeme preuzimanja u se prosjeku produžilo za 50%.

Povećanje segmenata sigurno će ubrzati prijenos, no zbog ograničenja veličine

radne memorije procesora veći segmenti od 2KB nisu mogući. Zamjenom procesora

većom memorijom i većom radnom memorijom prilikom povećanja segmenta mogle

bi se dogoditi određena ubrzanja u prijenosu, no s druge će strane i programska

podrška koja će se prenositi biti veća.

Page 105: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

104

4.5.3. Analiza mjerenja preuzimanja programa veličine 110KB Na slici 4.15. prikazan je graf testiranja preuzimanja programskog paketa od 110KB

tijekom 24 sata. Većina testiranih uzoraka preuzimanja završena je unutar stotinu

sekundi, a u slučaju ponovljenog pokušaja vrijeme bi se produžilo do stotinu i

šezdeset sekundi.

020406080

100120140160180200220240260280300320340360380400420440460480500

9 10 11 12 13 14 15 16 18 19 20 21 22 23 0 1 2 3 4 5 6 7 8

Doba dana [sati]

Vrije

me

preu

zim

anja

[s]

0

5

10

15

20

25

Bro

j pon

avlja

nja

Vrijeme preuzimanja Broj ponavljanja

Slika 4.15. Vrijeme preuzimanja programskog paketa od 110KB tijekom 24 sata.

Postoji samo jedan uzorak ujutro u deset sati i četrdeset devet minuta koji je imao

sedam ponovljenih pokušaja s ukupnim vremenom od četiristotine devedeset i dvije

sekunde. Uzorak izgleda kao neuobičajeni izdvojeni incident, ali se zastoj dogodio

ponovno poslijepodne u šest sati, sa uzastopnim ponovnim pokušajima gdje je prvo

problematično preuzimanje i rekordno veliko. Ono iznosi trideset ponovljenih

pokušaja sa rekordnih 1335 sekundi. Cijeli šesti sat poslijepodne prošao je s

neuspjelim preuzimanjem, ali se na kraju sata stanje normaliziralo i ponovno

nastavilo unutar uobičajenih granica.

Na slici 4.16. prikazan je identičan test dan ranije u poslijepodnevnim satima kada

nije prisutna nikakva anomalija, odnosno sva su mjerenja prošla unutar predviđenih

granica s maksimalnim preuzimanje od stotinu sedamdeset i šest sekundi uz pet

ponavljanja.

Page 106: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

105

Anomalija sa slike 4.15. ogleda se u neuobičajenom opterećenju ili zastoju

GSM/GPRS davatelja usluga jer je GPRS manje prioritetna usluga u odnosu na

razgovore i GSM.

0

10

20

30

40

50

60

70

80

90

100

110

120

130

140

150

160

170

180

14 15 16 17 18 19 20 21

Doba dana

Vrije

me

preu

zim

anja

[s]

0

1

2

3

4

5

6

7

8

9

Bro

j pon

avlja

nja

Vrijeme preuzimanja Broj ponavljanja

Slika 4.16. Vrijeme preuzimanja programske nadogradnje u posljepodnevnim satima dan ranije.

Na slici 4.17. prikazan je graf sa slike 4.15., ali u izdvojenom periodu od 2 sata.

0

20

40

60

80

100

120

140

4:01

4:11

4:23

4:34

4:44

4:54

5:04

5:15

5:25

5:36

5:47

5:58

Doba Dana [sati:minute]

Vrije

me

preu

zim

anja

[s]

0

1

2

3

4

5

6

7

Bro

j pon

avlja

nja

Vrijeme preuzimanja Broj ponavljanja

Slika 4.17. Vrijeme preuzimanja programske nadogradnje od 4 do 6 sati.

Page 107: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

106

4.5.4. Analiza mjerenja preuzimanja programa veličine 8KB Na slici 4.18. prikazan je graf testiranja preuzimanja programskog paketa od 8KB

tijekom 24 sata. Većina testiranih uzoraka preuzimanja završena je unutar petnaest

sekundi, a u slučaju ponovljenog pokušaja vrijeme bi se produžilo do rekordne

devedeset i četiri sekunde.

0

5

10

15

20

25

30

35

40

45

50

55

60

65

70

75

80

85

90

95

100

15 15 16 17 18 19 20 21 22 23 0 1 2 3 4 5 5 6 7 8 9 10 11 12 13 14

Doba dana

Vrije

me

preu

zim

anja

[s]

0

1

2

3

4

5

6

7

8

9

10

Bro

j pon

avlja

nja

Vrijeme preuzimanja Broj ponavljanja

Slika 4.18. Vrijeme preuzimanja programskog paketa veličine 8KB u 24 sata.

Uspoređujući podatke mjerenja preuzimanja velikoga realnog paketa od 110KB, i

ovih mjerenja malih paketa gdje je samo preuzimanje podataka za cijeli red veličine

manji, utjecaj pogrešaka u preuzimanju daleko je veći. Kako se radi o manjem broju

segmenata (samo četiri), manja je šansa da se dogodi neuspješan prijenos

podataka. S druge strane, kada se i dogodi neuspješan prijenos zbog zastoja u

GPRS sučelju, napraviti će drastično drugačiji rezultat od prosjeka.

U 24 sata mjerenja dogodila su se samo četiri značajna prekida u prijenosu, odnosno

pogreške u prijenosu, i to u 20 sati, 3 sata iza ponoći, 8 sati ujutro i u 1 sat iza

podneva. Realno, ta drastična odstupanja od srednje vrijednosti mogu se opisati

kretanjem ljudi, odnosno ostalih korisnika GSM usluga koji umanjuju slobodan

prostor za GPRS promet.

Na slici 4.19. prikazan je samo jedan dio grafa u malom periodu od 9 do 10 sati ujutro

gdje se vidi karakteristično, prosječno vrijeme preuzimanja od desetak sekundi.

Page 108: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

107

0

2

4

6

8

10

12

14

16

18

20

22

24

26

9:00 9:03 9:05 9:07 9:09 9:12 9:14 9:16 9:18 9:21 9:23 9:25 9:27 9:30 9:32 9:34 9:36 9:39 9:41 9:43 9:45 9:48 9:50 9:52 9:54 9:57 9:59

Doba dana

Vrije

me

preu

zim

anja

[s]

0

1

2

3

4

5

6

7

8

9

10

11

12

13

Bro

j pon

avlja

nja

Vrijeme preuzimanja Broj ponavljanja

Slika 4.19. Vrijeme preuzimanja od 9 do 10 sati s brojem ponavljanja u slučaju pogreške.

Page 109: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

108

5. ZAKLJUČAK

Sveprisutnost ugrađenih računala u svim porama ljudskog postojanja može se

zahvaliti njihovoj fleksibilnosti i bržoj realizaciji nekog uređaja od ideje do finalnog

proizvoda. Tehnološki razvoj mikrokontrolera usmjeren je njihovoj prilagodbi bilo

kojem ugrađenom sustavu, a ponajviše brzoj i fleksibilnoj zamjeni programske

podrške. Zbog tržišne utakmice i sve kraćeg vremena od ideje do proizvoda, program

koji se izvršava unutar ugrađenog računala u velikoj mjeri definira njegovu ulogu,

mogućnosti uređaja i njegovu funkcionalnost. Time nastaje jedan problem: ostavljeno

je vrlo malo vremena za detaljno testiranje nekog proizvoda i nerijetko tvrtke izdaju

prve manje serije proizvoda na tržište koje nisu iscrpno ispitane, te vrlo često sami

korisnici pronalaze pogreške u radu. Kako samu funkcionalnost, a i pogreške u radu

u velikoj mjeri definira ugrađeno računalo, odnosno programska podrška, potrebna je

visoka razina fleksibilnosti da se te pogreške u algoritmu brzo otklone.

S obzirom na prisutan trend rasprostranjene uporabe GSM i GPRS tehnologija,

otvaraju se velika vrata napretku ugrađenih računala upravo u smjeru samostalnog

održavanja. Ugrađenom računalu postaje dostupan svijet Interneta i veza s matičnom

kućom proizvođača. Ugrađeno računalo koje posjeduje mehanizam samostalne

izmjene programske memorije i ima spoj na Internet, omogućit će i samostalno

održavanje odnosno dinamičku zamjenu programske podrške.

U okviru magistarkog rada pristupljeno je rješenju problema samostalne nadogradnje

putem programskog agenta koje se pokazalo kao dobro rješenje početnog problema.

Razvijeni sustav putem programskih agenata brine se za ažurnost programske

podrške ugrađenog računala te obavlja nadogradnju programa. Implementirani

programski agent postavlja minimalne sklopovske zahtjeve na ciljno ugrađeno

računalo.

Vrednovanje rada pokazalo je uspješnost i robusnost implementiranih mehanizama

nadogradnje programske podrške ugrađenih sustava. Mjerenja su pokazala da

vrijeme preuzimanja izravno ovisi o raspoloživom memorijskim prostoru ugrađenog

sustava. Podjela programskog koda na odsječke uslijed ograničenja memorijskog

prostora produžava vrijeme prijenosa. Pritom, uslijed dodatnih kašnjenja

poslužiteljskog agenta na svaki upit, smanjvanjem veličine odsječka povećava se

ukupno vrijeme prijenosa uz istodobno smanjenje broja retransmisija.

Page 110: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

109

Moguća dodatna poboljšanja jesu povećanje transparentnosti rada uporabom

dodatne memorije za privremenu pohranu programske podrške te razrada algoritama

usmjerenih na prijenos samo promjena. Na taj način može se postići dodatno

skraćivanje zastoja u radu prilikom nadogradnje. U slučajevima sigurnosno kritičnih

sustava potrebno je dodatno analizirati pogodnost trenutka za nadogradnju

programske podrške.

Page 111: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

110

6. LITERATURA

[1] Heath S., Embedded systems design, Oxford, 2003.

[2] Wolf W., Embedded Systems-on-Chips, The Computer Engineering Handbook, pp. 22-1

– 22-11, 2002.

[3] Mario Žagar, Arhitektura Upravljačkih mikroračunala i njihovo povezivanje s okolinom

Praktičar, Školska knjiga, Zagreb, 2003.

[4] European Telecommunications Standards Institute, GSM Global System For Mobile

Communications: Digital cellular telecommunications system (Phase 2+);Data Terminal

Equipment - Data Circuit terminating; Equipment (DTE-DCE) interface for Short

Message Service (SMS) and Cell Broadcast Service (CBS) (GSM 07.05), July 1996

[5] Ben Levitan, "GSM Wireless Handbook: Network Architecture, Operation, and

Services", November 2003

[6] Marwedel P., Embedded System Design, Springer, p:13-36, 2006.

[7] Dally W.J., Balfour J.; Black-Shaffer D.; Chen J. ;Harting R.C., Parikh V., Park J.,

Sheffield D., Efficient Embedded Computing, Stanford Univ., Stanfod, CA, 2008.

[8] Warneke B, Last M, Liebowitz B, Pister K, Smart Dust: Communicating with a Cubic

Milimeter, Computer, vol. 34, pp. 44-51, 2001.

[9] Sloman M., Ubiquitous Computing: A grand Challenge, Seminar on Imperial College

London, 2006.

[10] Nim K. Cheung, Mobile Communications for Anything That Moves, IEEE

Comunications MAGAZINE, October 2003, Volume 41, Number 10, pp. 64-65

[11] Steven D. Johnson, Formal Methods in Embedded Design, COMPUTER Innovative

Technology for Computer Professionals, November 2003, Vol. 36, No. 11, pp. 104-106

[12] Meg McGinity, GPS System Takes On Traffic, IEEE PERVASIVE COMPUTING

MOBILE AND UBIQUITOUS SYSTEMS, Oct.-Dec. 2003, Vol. 2, No. 2, pp. 8-9

[13] Chris Herring, "Microprocessors, Microcontrollers, and systems in the new

millennium", IEEE MICRO, Novembar-Decembar 2000, Vol. 20, Number 6, pp. 45-59

[14] Horowitz P., Hill W, The Art of Electronics 2nd Ed. Cambridge University Press,

Cambridge, 1989.

[15] Ayers J.E., Digital Integrated circuits: analysis and design, CRC Press, pp. 591, 2004.

[16] Millman, Grable, Microelectronics, Combinatorial Digital Circuits

[17] Sharma, A. K., Semiconductor Memories, IEEE Press, New Jersey, 1996.

Page 112: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

111

[18] Amft O., Lukowicz P, From Backpacks to Smartphones: Pas, Present, and Future of

Werable Computers, IEEE Pervasive Computing, pp. 8-13, 2009.

[19] Clark T., Jones M, Armstrong C, The dynamic structure of management support

systems: theory development, research focus, and direction; Society for Information

Management and The Management Information Systems Research Center, 2007.

[20] Wolf W., Embedded Systems-on-Chips, The Computer Engineering Handbook, pp. 22-

5, 2002.

[21] Cafuta, DavorDodig, Ivica; Sruk, Vlado, An Approach to Embedded Internet System

Development // Proceedings of MIPRO 2006, Opatija, Croatia, 2006.

[22] Wolf W., Embedded Systems-on-Chips, The Computer Engineering Handbook, p22-8,

2002.

[23] Intille S., Designing a Home of the Future, IEEE Pervasive Computing, 2002.

[24] Henning S.; Xiaotao W.; and Stylianos S., Ubiquitous Computing in Home Networks,

IEEE Communications MAGAZINE, Nov. 2003, Vol. 41, No. 11, pp. 128-135

[25] Bounrdenas T.; Sloman M; and Lupu E., Self-healing for pervasive computing systems,

architecting dependable systems VII, p1-25, 2010.

[26] Turner K., Flexible management of smart homes, Journal of Ambient Intelligence and

Smart Environments archive Volume 3 Issue 2, p83-109, 2011.

[27] Cellular Telecomunications Industry Assoc., CTIA's Semi-Annual Wireless Industry

Survey, Wow-com, Decmbar 1999, http://www.wow.com/statsurv/survey

[28] C. H. Rao, D. Chang and Y. Lin, iSMS: an integration platform for Short Message

Sevice and IP networks, IEEE Network, March-April 2001, pp. 48-55

[29] Linda Dailey Paulson, Exploring the wireless LANscape, COMPUTER Innovative

Technology for Computer Professionals, October 2000, Vol. 33, Number 10, pp. 12-16

[30] Upkar Varshney, Ronald J. Vetter and Ravi Kalakota, Mobile Commerce: A new

frontier, COMPUTER, October 2000, Volume 33, Number 10, pp. 32-38

[31] Vijay K. Varma, K. Daniel Wong, Kee-Chaing Chua and Frederic Paint, Integration Of

3G Wireless and Wireless LANs, IEEE Communications MAGAZINE, November

2003, Volume 41, Number 11, pp. 72-73

[32] Vijay K. Varma, K. Daniel Wong, Kee-Chaing Chua and Frederic Paint, Interworking

Architecture Between 3GPP and WLAN Systems, IEEE Communications MAGAZINE,

November 2003, Volume 41, Number 11, pp. 74-81

[33] Keiji Tachikawa, A Perspective on the Evolution Of Mobile Communications, IEEE

Comunications MAGAZINE, October 2003, Volume 41, Number 10, pp. 66-73

Page 113: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

112

[34] Atmel Corporation, AT89S8252 In-System Programming MCU Application Note,

Decembar 1997, http://www.atmel.com

[35] Atmel Corporation, AVR UC3 USB DFU Bootloader, 2010, http://www.atmel.com

[36] Sloman M, Lupu EC, Engineering Policy-Based Ubiquitous Systems, The Computer

Journal, 2009

[37] Krishnakumar KT, Sloman M, Constraint based network adaptation for ubiquitous

applications, 6th international enterprise distributed object computing, Lausanne,

Switzerland, 2002, Los Alamitos, IEEE Computer Soc, 2002, Pages:258-269

[38] Lupu E, Dulay N, Sventek J, Autonomous pervasive systems and the policy challenges

of a small world!, 8th IEEE International Workshop on Policies for Distributed Systems

and Networks, 2007

[39] Sloman M., Distributed Systems management: Configuration and Policy Issues, Object

World UK, (London), 1995

[40] Sloman M., Policy Driven Management for Distributed Systems, Journal of Network

and Systems Management, 1994, Vol:2, Pages:333-360

[41] Sloman M, Lupu EC, Engineering Policy-Based Ubiquitous Systems, The Computer

Journal, 2009

[42] Sloman M, Policy issues for pervasive systems, 2005, Pages:31-34

[43] Sloman,M.S. , Distributed Systems management: Configuration and Policy Issues,

Object World UK, (London), 1995

[44] Oliveira S., Oliveira T., and Nogueira J., A policy based security management

architecture for sensor networks, Proc. of the 11th IFIP/IEEE int'l Conf. on Symposium

on Integrated Network Management, 2009.

[45] Dragović B, Crowcroft J, Information exposure control through data manipulation for

ubiquitous computing, Proc. of the 2004 workshop on New security paradigms, New

York, 2004.

[46] Adwankar S., Mohan S., and Vasudevan V., Universal MAnager: Seampless

MAnagment of Enterprise Mobile and Non-mobile Devices, Proc. of the 2004 IEEE Int'l

Conf. on Mobile Data Management (MDM'04), 2004.

[47] Subhasis Saha, Mark Jamtgaard, and John Vilasenor, Bringing Wireless Internet to

Mobile Devices, Computer, June 2001, volume 34, number 6, pp. 54-58

[48] Vijay K. Varma, K. Daniel Wong, Kee-Chaing Chua and Frederic Paint, Security

Aspects of 3G-WLAN Interworking, IEEE Communications MAGAZINE, November

2003, Volume 41, Number 11, pp. 82-88

Page 114: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

113

[49] Open Mobile Alliance, Enabler Test Specification for FUMO, 2006.

[50] Dulay, N. , Lupu,E. , Sloman,M. , et al, Self-managed cells for ubiquitous systems, 3rd

International Workshop on Mathematical Methods, Models, and Architectures for

Computer Network Security, 25 - 27 September 2005, St.Petersburg, Russia, Berlin,

Springer-Verlag, 2005, Pages:1-6

[51] Estrin D., Culler D., Pister K., and Sukhatme G., Instrumenting the Physical world with

pervasive networks, IEEE, Pervasive Computing, Vol:1, p59-69, 2002.

[52] Shin J., Choung Y., Sun Ko K., and Ik Eom Y., Design and Implementation of the

Management Agent for Mobile Devices based on OMA DM, Proc. of the 2nd Int'l Conf.

on Ubiquitous information management and communication, 2008.

[53] Ommen P., A framework for Integrated Management of Mobile-stations Over-the-air,

proc. of the 2001 IEE/IFIP Int'l Symp. on Integrated Network Management, 2001.

[54] Charkravorty R. and Ottevanger H., Architecture and Implementation of a Remote

Management Framework for Dynamically Reconfigurable Device, Proc. of the 2002

IEEE Int'l Conf. on Networks, 2002.

[55] State R., Festor O., and Zores B., An Extensible Agent Toolkit for Device Management,

Proc. of the 2004 IEEE/IFIP Int'l Symp. on Network Operations and Management,

2004.

[56] Adelstein F, Gupta S, Golden G, Schwiebert L, Fundamentals of Mobile and Pervasive

Computing, Middleware for Application Development: Adaption and Agents, p113-133,

2009.

[57] Hypertext Transfer Protocol, Wikipedia the free Encyclopedia, http://en.wikipedia.org/wiki/HTTP

[58] LAMP (software bundle) , Wikipedia the free Encyclopedia, http://en.wikipedia.org/wiki/LAMP_(software_bundle)

[59] Android (operating system) , Wikipedia the free Encyclopedia, http://en.wikipedia.org/wiki/Android_(operating_system)

[60] Atmel corporation, 8-bit AVR Microcontroller with 128Kbytes In-System

Programmable FLASH, http://www.atmel.com

[61] Sierra Wireless, Product Tehnical Specification & Customer Design Guidelines,

Wireless Standard Modem WISMO228

[62] SST, A Microchip Techonoly Company, 8Mbit SPI Serial Flash, SST25VF080B

[63] Petrinović D, Vučić M, Osnove projektiranja računalnih sustava, Zavodska skripta,

Zagreb, 2001.

Page 115: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

114

[64] Vučić M, Upotreba mikrokontrolera u ugrađenim računalnim sustavima, Zavodska

skripta, Zagreb, 1999.

[65] Koopman, P., Better Embedded System Software, Drumnadrochit Press, Wilmington,

2010.

[66] Nielsen, J., Usability Engineering, AP Professional, Boston, 1993.

[67] Sierra Wireless, AirPrime WS Series, AT Command Manual for Firmware L22, 2011.

[68] Subscriber Identity Module, Wikipedia the free Encyclopedia, http://en.wikipedia.org/wiki/SIM_Card

[69] National Semiconductor, Simple Switcher Power Converter 150KHz 3A Step-Down

Voltage Regulator

[70] Extensible Markup Language, Wikipedia the free Encyclopedia, http://en.wikipedia.org/wiki/XML

[71] Intel HEX, Wikipedia the free Encyclopedia, http://en.wikipedia.org/wiki/Intel_HEX

[72] GPRS, General Packet Radio Service, http://en.wikipedia.org/wiki/GPRS

Page 116: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

115

7. SAŽETAK

Dinamička nadogradnja programske podrške ugrađenih sustava

U radu su razmotrene mogućnosti nadogradnje programske podrške ugrađenih

sustava uporabom Interneta, a s ciljem samostalnog održavanja programske

podrške. Analizirane su uporaba i specifičnosti programskih agenata u procesu

nadogradnje programske podrške ugrađenih računala. S obzirom na ograničenja

memorijskih resursa, analizirane su prednosti i nedostatci programskih agenata s

izravnim upisom u programsku memoriju i agenata s uporabom dodatnih

memorijskih sredstava.

Implementacija sustava nadogradnje programske podrške zasnovana na

programskim agentima s izravnim upisom u programsku memoriju ugrađenog

računala, a ostvarena je na ugrađenom sustavu temeljenom na ATMEL procesoru

opremljenom samostalnom izmjenom programske memorije. Povezivost s Internetom

ostvarena je GPRS modulom koji omogućuje komunikaciju s poslužiteljem. Detaljno

je opisana programska implementacija algoritama programskih agenata. Vrednovanje

implementacije postupka dinamičke nadogradnje programske potpore opisano je

nizom mjerenja koja daju uvid u svojstva i svojstva ostupka. Primjena dinamičke

nadogradnje programske podrške programskim agentima pogodna je i za

implementaciju u ograničenoj okolini ugrađenih računalnih sustava ograničenih

sredstava.

Ključne riječi: ugrađeno računalo, programski agenti, samostalna nadogradnja

programske memorije

Page 117: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

116

8. SUMMARY

Dynamic Software Update in Embedded Systems

The paper considered the possibility to upgrade software of an embedded system

using the Internet to gain self-maintained software. The paper analyzes the use and

the specifics of software agents in the process of upgrading software embedded

computers. Given the limitations of memory, it analysed the advantages and

disadvantages of software agents with direct entry into the program memory and

agents with the use of additional memory resources.

Implementation of the system software upgrade is based on software agents to enter

directly into the program memory, and on-board computer was built in the system

based on ATMEL processor equipped with self-modifying program memory.

Connectivity to the Internet was done with GPRS module that enables

communication with the server. It describes the implementation of software

algorithms, software agents, in detail. It evaluates the implementation process of

dynamic upgrades of software described by a series of measurements that give

insight into the properties and characteristics of deviation. Applications of dynamic

software upgrade by software agents is also suitable for implementation in a limited

region of embedded computer systems of limited resources.

Key words: embedded systems, software agent, dynamic software update

Page 118: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

117

9. ŽIVOTOPIS

Goran Jurković rođen je 27. rujna 1975. godine u Slavonskom Brodu u Hrvatskoj. U

istom je gradu odrastao te završio Osnovnu školu «Ivan Goran Kovačić» (1982.-

1990.). Sudjelovao je na mnogim natjecanjima, smotrama tehničkog stvaralaštva

mladih među kojima se ističu republička natjecanja 1988. godine u Poreču, disciplina

elektronika, 1989. godine u Sisku, disciplina programiranje. Na smotri znanstveno-

tehničkog stvaralaštva mladih Jugoslavije 1990. godine u Makarskoj dobio je zlatnu

medalju i diplomu za prikazane rezultate u disciplini elektronika. Srednjoškolsko obrazovanje završio je u Srednjoj tehničkoj školi «Ruđer Bošković» u Zagrebu

(1990.-1994.) te je stekao stručnu spremu IV. stupnja, struka elektrotehnika,

obrazovni profil elektrotehničar, smjer elektronika. Visokoškolsko obrazovanje završio je na «Fakultetu elektrotehnike i računarstva» u Zagrebu (1994.-2001.) na

Zavodu za automatiku i procesno računarstvo, s radom: „Upravljanje procesom

korištenjem usluge kratkih poruka“ pod vodstvom prof. dr. sc. Maria Kovača. Fakultet

završava vrlo dobrim uspjehom.

Od 10. prosinca 2001. godine zaposlen je na Hrvatskoj radioteleviziji u

Zagrebu, odjel informatike. U stručnom radu radio je s većim brojem tehnologija i

tehnoloških rješenja te stekao vještine: Cisco mreže i serveri temeljeni na Microsoft

Windows platformama i Unix/Linux platformama, wireless projekt, antivirusna zaštita,

CA software delivery i Remote Desktop Managment, razvoj sustava poslovnih

procesa za HRT, temeljenih na HTML, PHP, XML, XSL, AJAX, Javasript, te baza

MySQL i Ingres.

Sveučilišni poslijediplomski studij računarstva, smjer Primijenjeno

računarstvo na Fakultetu elektrotehnike i računarstva u Zagrebu upisao je 2002.

godine. Objavio je znanstveni članak na ELMAR znanstvenoj konferenciji 2004

godine pod nazivom: „GSM Wireless Solutions In Distributed Embedded Systems

Designed For Automatic Control“.

Započeti rad na sustavima upravljanja procesima uporabom usluge kratkih

poruka (SMS) tijekom diplomsklog studija komercijaliziran je izradom sustava za praćenje, zaštitu, te daljinsku kontrolu automobila uporabom GSM-a. Rad je

rezultirao priznatim patentom broj PK20050952: „Uređaj za lociranje i nadzor vozila

putem naziva baznih stanica na koje se priključuje mobilni telefon u vozilu".

Page 119: DINAMIČKA NADOGRADNJA PROGRAMSKE PODRŠKE … · U drugom poglavlju prikazana su svojstva ugrađenih računala, njihov povijesni razvoj u smjeru niže cijene proizvodnje, kompaktnosti,

Magistarski rad - Dinamička nadogradnja programske podrške ugrađenih sustava

118

10. BIOGRAPHY

Goran Jurkovic was born August 27th 1975 in Slavonski Brod, Croatia. He grew up

in the same town and graduated from elementary school “Ivan Goran Kovacic” (1982-

1990). He has participated in many competitions, festivals of technical creativity of

young people, among which the Republican contest in Poreč (1988), in Sisak (1989),

and in Makarska (1990). High school education graduated in Technical High School

“Rudjer Boskovic” in Zagreb (1990-1994), and he gained professional title electronic

technician, major electronics. University education graduated on Faculty of

Electrical Engineering and Computing in Zagreb in 2001, and he gained his masters

degree in electrical engineering, department of Control and Computer Engineering in

Automation.

As hobby he was advancing project Process control over SMS started as final work

on undergraduate study on university, which evolved into commercial project code

name SMS Commander. Later on project was oriented to advanced car alarms and

management. It is embedded system originally based on 8051 Intel family

microcontrollers, later changed to Atmel AVR microcontrollers. Also, he gains a patent

in process of this project.

He has started after graduation study on Faculty of Electrical Engineering and

Computing in Zagreb in 2002, to gain his Master of Science degree in computer

engineering. He has published science article on ELMAR science conference in

2004, “GSM Wireless Solutions in Distributed Embedded Systems Designed for

Automatic Control”.

He is employed on “Croatian Radio-Television” in Zagreb, IT department, section

servers and networks maintenance and research, since 2001. He has worked on a

many assignments within IT sections like PC client, server and Cisco networks

maintenance, new technology server research and implementation, etc. By the end of

2007 he was working in sections that develop enterprise business solutions for HRT

(CRT), based on HTML; PHP, XML, XSL, Ingres, MySQL, etc.