dinamiČka nadogradnja programske podrŠke … · u drugom poglavlju prikazana su svojstva...
TRANSCRIPT
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.
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.
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.:
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.
Zahvaljujem mentoru, prof. dr. sc. Vladi Sruku na strpljenju, stručnim savjetima, korisnim raspravama i velikoj potpori tijekom izrade ovoga rada.
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
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
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
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
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.
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.
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.
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
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].
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
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.
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
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.
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.
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.
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).
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.
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
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
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
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
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
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,
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].
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
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),
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.
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.
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
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
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].
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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:
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.
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.
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.
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
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.
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
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.
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.
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.
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).
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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>
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.
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.
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
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.
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
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.
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.
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 {
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.
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.
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.
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 }
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;
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_
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; }
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.
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.
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(); } }
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);
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) {
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); }
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.
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,
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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
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
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
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".
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.