Embedded sistemi
4. Dizajn Embedded sistema |
Elektronika obično koristi ili mikroprocesor ili mikrokontroler. Neki veliki ili stari sistemi
upotrebljavaju opšte-namenski glavni kompjuterski sistem (mainframe) ili minikompjutere.
Korisnički interfejs za embedded sisteme široko variraju, i zato zaslužuju neke specijalne komentare.
Projektanti interfejsa pri PARC-u, Apple Computer-u, Boeing-u i HP-u umanjuju broj tipova korisničke akcije. Na primer, njihovi
sistemi koriste dva dugmeta (apsolutni minimum) za kontrolu sistema menija (da bude jasno, jedno dugme bi trebalo da bude
"sledeći unos menija" a drugo dugme "izaberite ovaj unos menija").
Touch-screen ili dugmad na ivici ekrana takođe umanjuju tip korisničke akcije.
Drugi osnovni trik je minimalizovati i pojednostaviti tip izlaza. Projektanti ponekad koristi svetlo stanja za svaki
interfejsni priključak, ili stanje neispravnosti, da bi naznačili šta ne valja. Jeftina varijacija je dva niza svetla, sa
odštampanom matricom grešaka koje oni biraju - korisnik može zalepiti oznake na maternjem jeziku.
Na primer, Boinog-ov standardni test interfejs je dugme i malo svetala. Kada pritisnete dugme, sva se svetla upale. Kada
otpustite dugme, svetla neispravnosti ostaju uključena. Nazivi su na osnovnom Engleskom.
Drugi primer je verovatno odmah do vas. Pogledajte kompjuterski štampač. Najčešće su svetla označena sa lepljivom etiketom
koje mogu biti štampane na bilo kom jeziku. Na nekim tržištima isporučeni su uređaji sa nekoliko kolekcija etiketa, pa
korisnik može izabrati najprihvatljiviji jezik.
Projektanti koriste boje. Crvena znači da se korisnik može povrediti (misli se na krv). Žuta znači da je nešto pošlo naopako.
Zelena znači da je stanje OK/dobro. Ovo je namerno urađeno da bude slično semaforu, jer to većina ljudi razume.
Većina dizajna je nameštena tako da se prikaz promeni odmah nakon korisnikove akcije. Ako mašina treba nešto da uradi, ona to obično
uradi unutar 7 sekundi, ili daje izveštaj procesa.
Ako dizajn zahteva ekran, mnogi projektanti koriste običan tekst. To je poželjno jer su korisnici čitali znakove godinama. GUI
je dopadljiv i može svašta da radi, ali obično dodaje godine potrebne umetniku, dozvole i vreme prevoda i jednog ili dva
programera ceni koštanja projekta, bez dodavanja neke vrednosti uređaja. Često, prepametni GUI zapravo zbuni korisnika, jer mora da
koristi nepoznate simbole.
Ako dizajn mora da ukaže na delove mašine (kao kod kopira), oni su često obeleženi sa brojevima na pravoj mašini, koji su
vidljivi i sa zatvorenim vratima.
Mrežni interfejs je samo daljinski ekran. Ponaša se slično bilo kom drugom korisničkom interfejsu.
Jedan od najuspešnijih opšte-namenskih ekranski-baziranih interfejsa je meni sa dva dugmeta i linija teksta na jeziku
korisnika. On se uporebljava u pejdžerima, štampačima srednje cene, mrežni switch-evima, i drugim situacijama sa uređajima srednje cene koja
zahteva kompleksno ponašanje od strane korisnika.
Gde postoji tekst, projektant bira jedan ili više jezika. Osnovni jezik je onaj najrazumljiviji od strane ciljne grupe
korisnika.
Većina projektanata pokušava da koristi lokalne setove karaktera, bez obzira koliko su bolni. Ljudi sa neobičnim setovima
karaktera se osećaju maženim i voljenim kad se njihov jezik pojavi na mašinama koje koriste.
Tekst obično prevodi profesionalan prevodilac, čak i kada je lokalni govornik u osoblju. Marketinško osoblje bi trebalo da
bude u mogućnosti da kaže stranim distributerima da su prevodi profesionalni.
Strane organizacije često pokušavaju da daju najvećem distriburteru obavezu da pregleda i prepravi neki prevod na njihov
lokalni jezik. Ovo zaustavlja kritike od strane drugih lokalnih govornika, koji su naklonjeni verovanju da nijedna strana
organizacija neće znati njihov jezik bolje od njih samih.
Drugi jednostavan trik je da su modovi apsolutno jasni na korisničkom displeju. Ako interfejs ima modove, oni moraju biti
uvek reverzibilni na očigledan način.
Većina nadležnih organa smatra da je test upotrebljivosti važniji od broja mišljenja. Projektanti predlažu testiranje
upotrebljivosti korisničkog interfejsa na najnižoj mogućoj tačci. Najčešće korišćen brzi, prljavi, test je da zamolite
izvršnog sekretara da upotrebi kartonski model nacrtan sa magičnim markerima, i upravljan od strane inžinjera. Rezultat
zapisan na video traci će vrlo verovatno biti i smešan i vrlo poučan. Na traci, svaki put kad inžinjer govori, interfejs će
omanuti jer će prouzrokovati poziv servisa.
U dobrostojećim organizacijama, jedna ličnost odobrava korisnički interfejs. Često je to korisnik, glavni distributer ili
neko direktno odgovoran za prodaju sistema. Komiteti ne donose dovoljno brzo odluke, a neki ljudi nikad. Ovo prouzrokuje
skupa zakašnjenja koja se mogu izbeći.
Postoji mnogo različitih CPU arhitektura korištenih u embedded dizajnu poput ARM, MIPS, Coldfire/68k,
PowerPC, X86, PIC, 8051, Atmel AVR, H8, SH, V850, FR-V, M32R itd.
To je u suprotnosti sa tržištem desktop kompjutera, koje je do momenta pisanja ovog teksta (2006) ograničeno na nekoliko
konkurentskih arhitektura, većinski Intel/AMD x86, i Apple/Motorola/IBM PowerPC, korišćen u Apple Macintosh-u. Sa porastom
prihvatanja Java-e na ovom polju, u budućnosti postoji tendencija moguće eliminacije zavisnosti od specifičnog zahteva
CPU/hardvera (i OS-a). Druga grana moguće tendencije eliminacije je razvoj Linux operativnog sistema koji danas postoji za
sve navedene arhitekture (pa čak i one ne-nabrojane).
PC/104 je tipičan standard za mali, nisko-serijski embedded i otporniji sistemski dizajn. Oni često koriste DOS, Linux ili
embedded real-time operativni sistem kao što je QNX ili Inferno.
Uobičajena konfiguracija za vrlo visoko-serijske embedded sisteme je sistem-u-čipu, aplikaciono-zavisno integralno kolo, za
koje se CPU naručuje kao intelektualna svojina i ubacuje u IC-ov dizajn. Najuobičajenija šema se odnosi na upotrebu
field-programmable gate array (polje-programibilnih nizova gejtova), i njegovog programiranja sa svom logikom, uključujući
CPU. Najmoderniji FPGA su dizajnirani za tu namenu.
Poput tipičnih kompjuterskih programera, dizajneri embedded sistema koriste kompajlere (compailer),
assemblere (assembeler) i debagere (debuggeers) za razvoj embedded sistemskog softvera.
Te softverske alatke dolaze sa nekoliko izvora:
 Softverske kompanije koje su se specijalizovane za embedded tržište
 Izvedeni su iz GNU softverskih razvojnih alata. (vidi cross-compiler)
 Ponekad, razvojni alati za lični kompjuter mogu biti korišteni ako je
embedded procesor relativno sličan običnom PC procesoru.
Dizajneri embedded sistema takođe koriste nešto softverskog alata retko korištenog od strane kompjuterskih programera.
 Najčešći su uslužni programi za dodavanje kontrolnog zbira (checksum)
ili CRC-a programu, pa može proveriti svoj program pre nego što ga pokrene.
 Manje česti su uslužni programi koji pretvaraju fajlove podataka u kod,
tako da može da se uključi bilo koji podatak u program.
 Neuobičajeni su Sinhroni programski jezici, korišteni zbog ekstra
pouzdanosti.
Ovi (embedded) sistemi često nemaju operativni sistem, ili imaju specijalizovani embedded operativni sistem (često
real-time operativni sistem), ili je programer dodelio portu jedan od njih novom sistemu.
4.5 Ugrađeni sopstveni - test (Built-in Sef-test) |
Većina embedded sistema imaju neki stepen ili količinu ugrađenog samo-testa. Postoji nekoliko osnovnih
tipova:
- Testiranje kompjutera: CPU, RAM, i programska memorija. Oni se obično pokreću jedanput po uključenju. U
sigurnosno-kritičnim sistemima, oni se pokreću periodično, ili svo vreme.
- Testiranje periferije: Ovi simuliraju ulaze i povratno čitaju ili mere izlaze. Iznenađujući broj komunikacija,
analognih i kontrolnih sistema imaju ove testove, često vrlo jeftine.
- Testiranje napajanja: Oni obično mere svaku trasu napajanja, i mogu isto tako proveriti ulaz (bateriju ili mrežu).
Napajanja su često visoko opterećena, sa niskim graničnim vrednostima.
- Provera komunikacije: Oni potvrđuju prijem jednostavne poruke sa prikključene jedinice. Internet, na primer, ima ICMP
poruku "ping".
- Testiranje kablova: Oni obično aktiviraju žicu u vijugavom rasporedu preko test pinova kablova koji bi trebalo da
budu prikačeni. Sinhroni komunikacioni sistemi, poput telefonskih media, često koriste "sink" testove za ovu namenu.
Kablovski testovi su jeftini, i neverovatno korisni kada jedinica ima priključke.
- Testiranje opreme: Često sistem treba da se podesi kad je instaliran. Testovi opreme obezbeđuju pokazatelje osobi
koja instalira sistem.
- Potrošački testovi: Oni mere šta sistem koristi i upozorava kad su merene količine male. Najčešći primer je merenje potrošnje
kola. Najkompleksniji primeri mogu biti automatizovan medicinski analitički sistem koji održava zalihu hemijskih
reagenasa.
- Operacioni testovi: Oni mere stvari o kojima će korisnik da vodi računa da bi radio sistem. Prvenstveno, njih treba
pokrenuti kad je sistem operativan. To uključuje navigacione instrumente na avionima, kilometar sat na kolima i svetla
aktivnosti diska.
- Sigurnosni testovi: Oni se pokreću unutar "intervala sigurnosti", i oni garantuju da je sistem još uvek pouzdan.
Sigurnosni interval je obično vreme manje od minimuma vremena koje prouzrokuje štetu.
Pouzdanost ima različite definicije zavisno za šta ga ljudi žele. Zanimljivo, postoji realtivno nekoliko
tipova pouzdanosti, i sistem sa sličnim tipovima koriste slične tipove dizajna embedded sistem i ugrađenih-u-sebe testova:
- Sistem je previše nesiguran, ili nedostupan za popravku. (Svemirski sistemi, podvodni kablovi, navigacioni
farovi, sistemi bušotina, i čudnovato, automobili i masovno napravljeni proizvodi). Generalno, embedded sistemi testiraju
podsisteme, i prebacuju na rezervne delove, ili uključuju "limp (savitljive) modove" koji obezbeđuju delimične funkcije.
Obično masovno proizvedena oprema za potrošače ( kao što su kola, PC ili štampači) padaju u ovoj kategoriji, jer je
popravka preskupa i serviser je predaleko, kad se uporedi sa osnovnom cenom koštanja jedinice.
- Sistem se ne može pouzdano ugasiti. (Navigacija aviona, kontrolni sistem reaktora, neke kontrole u fabrici
hemikalija, motori na jednomotornom avionu) Slično prethodno navedenim, "limp modovi" su manje tolerantni. Često rezervu
bira operator.
- Sistem će izgubiti ogromnu količinu novca kad se ugasi. (Telefonske centrale, kontrole fabrike, kontrola mosta i
lifta, automatizovana prodaja i servis) Oni obično imaju nekoliko idi/ne idi testova, sa on-line rezervama ili limp
modova koji koriste alternativnu opremu i ručne procedure.
- Sistem ne može da radi kad je sumljiva situacija. (Medicinska oprema, avionska oprema sa "vrućim" rezervama, poput
motora) Testiranje može biti vrlo egzotično, ali jedina prava akcija je ugasiti celu jedinicu i pronaći grešku.
- Sistem nije operativan kada će izgubiti ogromnu količinu novca. (Kontrole hemijske fabrike, finansijski sistemi) Vrlo
slično medicinskoj opremi, iznad.
4.7 Ispravljanje grešaka (Debugging) |
Debugovanje (ispravljanje grešaka) se obično izvršava sa in-circuit emulatorom, ili nekim tipom debugera
koji može prekinuti mikrokontolerov interni mikrokod.
Prekid mikrokoda dozvoljava debugeru da radi u hardveru sa kojim samo CPU radi. CPU-baziran debuger može biti korišten za
testiranje i debugovanje elektronike kompjutera sa tačke gledanja CPU-a. Ovo je bila pionirska karakteristika PDP-11.
Razvojni ljudi bi trebalo da insistiraju na debagovanju koje pokazuje jezik visokog nivoa, sa tačkama prekida (breakpoints)
i jedno-koračaje (single-stepping), jer su ove karakteristike široko rasprostranjene. Takođe, Razvojni ljudi bi trebalo da
upisuju i koriste mogućnosti jednostavnog logovanja da bi ispravili sekvence realno-vremenskih događaja.
PC ili programeri glavnih sistema kad susretnu ovu sortu programiranja često postanu zbunjeni sa prioritetima dizajna i
prihvatljivim metodama. Savetovanje, recenzija koda i ne-sujteno programiranje se preporučuje.
Kako kompleksnost embedded sistema raste, alati visokog nivoa i operativnih sistema se sele na mašineriju gde to ima
smisla. Na primer, mobilni telefoni, lični digitalni pomoćnici i drugi potrošački kompjuteri često zahtevaju značajanu
količinu softvera koja je lično naručena ili obezbeđena sa strane umesto od proizvođača elektronike. U takvim sistemima,
okruženje otvorenog programiranja kao što je Linux, OSGi ili Embedded Java je neopodno, pa će isporučioc softvera
treće-strane moći da ga proda velikom tržištu.
Većina takvih otvorenih okruženja imaju referentni dizajn koji radi na ličnim kompjuterima. Poprilično softvera za takve
sisteme može biti razvijeno na običnom PC-u. Kako bilo, portovanje otvorenog okruženja na specijalizovanu elektroniku i
razvoj drajvera uređaja za elektroniku je još uvek odgovornost klasičnog inžinjera embedded softvera. U nekim slučajevima,
inžinjer radi za proizvođača integralnih kola, ali takvih ljudi ima i još po negde.
4.8 Pokretanje (Start-up) |
Svi embedded sistemi imaju početni kod. On obično onemogućava prekide, postavlja elektroniku, testira kompjuter (RAM, CPU, i softver) a potom startuje aplikacioni kod. Mnogi embedded sistemi se povrate nakon pada napajanja u kratkom intervalu restartovanjem (bez prethodnog samo-testa). Uobičajeno vreme restartovanja je deseti deo sekunde.
Mnogi projektanti su našli za zgodno da stave jednu ili više hardversko plus softversko kontrolisane LED-ove koji prijavljuju greške tokom razvoja (i u nekim slučajevima, nakon puštanja proizvoda, za dijagnostičku prijavu problema). Česti šablon je da elektronika uključi sve LED(ove) pri resetu (pomoću toga proveravamo da je napajanje priključeno i da sami LED(ovi) rade), posle čega softver menja LED šablon dok se Samo Test pri Uključenju (Power-On Self Test) izvršava. Nakon toga softver može da blinkuje LED(ove) ili postavi svetlosni šablon tokom normalnog rada da bi označio proces izvršavanja programa i/ili greške. To služi za razuveravanje većine tehičara/inžinjera i nekih korisnika. Interesantan izuzetak od toga su električna brojila i druge stvarčice na ulici, žmirkajuća svetla su poznata da privlače pažnju i vandalizam.
Copyright by Oaza.net 2006
|