počevši es

N

niro

Guest
Možete li reći kako TOS kolač moje putovanje ugrađeni sustavi

knjiga
softver
hardver

 
pokušajte pretragu opciju i također vidjeti prethodne teme ... u'll pronaći tona stvari
Ovdje su neki koji svibanj pomoći da:

http://www.edaboard.com/viewtopic.php?t=167440

ftopic173482.html

http://www.edaboard.com/viewtopic.php?t=152830

ftopic158568.html

ftopic148649.html

 
An ugrađen sustav je posebna namjene sustava u kojem je računalo u potpunosti encapsulated by uređaj je kontrola.Za razliku od opće namjene računalu, kao što su osobna računala, jednom ugrađen sustav obavlja unaprijed definiranim zadacima, obično s vrlo specifičnim zahtjevima.Budući da je sustav je namjenjen za određeni zadatak, dizajn inženjeri mogu optimizirati, smanjenje veličine i troškova proizvoda.Ugrađeni sustavi su često masovno proizvodili, tako da je ušteda svibanj biti multipled by milijuni predmeta.

Jezgra svih ugrađenih sustava je formiran od strane jedne ili nekoliko mikroprocesora ili microcontrollers, programiran za obavljanje malog broja zadataka.Nasuprot opće namjene koji može pokrenuti računalo bilo koje softverske aplikacije korisnik odabere, softver na ugrađen sustav je polutrajna, pa je često nazivaju "firmware".
Sadržaj
[sakrij]

* 1 Primjeri ugrađeni sustavi
* 2 Povijest
* 3 Karakteristike
* 4 Projektiranje ugrađenih sustava
o 4,1 korisničkih sučelja
Platforma o 4,2
o 4,3 Alati
o 4,4 Debugging
o 4,5 Operacijski sustav
o 4,6 Start-up
4.6.1 izgrađen-in Self-Test
o pouzdanosti re 4,7
* 5 Vrste ugrađenim softverom arhitektura
o 5.1 kontrola petlja
o 5,2 Nonpreemptive višezadaćnost
o 5,3 Preemptive vremena
o 5,4 Preemptive zadataka
o 5,5 Microkernels i Exokernels
o 5,6 Virtualni strojevi
o 5,7 Checkpointed izračuni
5,8 Ured o stilu (veliki-kernel) operativnog sustava
5,9 o operativnim sustavima Egzotični običaj
* 6 Vidi također
* 7 Vanjski linkovi

[uredi]

Primjeri ugrađeni sustavi

* Automatsko pripovjedač strojeva (bankomata)
* Avioelektronika, kao što su vodstvo inertial sustavi, kontrole leta, hardvera / softvera i drugih integrirani sustavi u zrakoplove i rakete
* Mobilnim telefonima i telefonski prekidači
* Računalna mreža opreme, uključujući usmjerivače, timeservers i firewall
* Računalni pisači
* Copiers
* Diskovi (floppy disk Pogoni i tvrdi disk Pogoni)
* Motor kontrolere i kontroleri antilock kočnica za automobile
* Home automatizaciju proizvode, kao što Termostati, klima uređaja, sprinklers i sigurnost monitoring sustavi
* Ručni Kalkulatori
* Kućanski aparati, uključujući mikrovalne pećnice, perilice rublja, televizija setovi, DVD playeri / snimači
* Medicinske opreme
* Mjerna oprema kao što je digitalna pohrana oscilloscopes, logika analizator, analizator spektra i
* Višefunkcijska wristwatches
* Multimedijalni uređaji: Internet radio prijemnika, TV set top boxes, digitalni satelitski prijemnici
* Višenamjenski printeri (MFPs)
* Osobni digitalni asistenti (PDA uređaji), koji je, mala ručnih računala sa PIMs i druge programe
* Mobiteli s dodatnim mogućnostima, na primjer, mobilni digitalni asistenti s cellphone i PDA i Javu (MIDP)
* Programirljiva logika Kontroleri (PLCs) za industrijsku automatizaciju i praćenje
* Stacionarni videogame konzole i ručni igra konzola
Podesan za nošenje računala *

[uredi]

Povijest
The Apollo Guidance Computer, prvog modernog recognizably ugrađenih system.source: The Computer History Museum
Uvećaj
The Apollo Guidance Computer, prvog modernog recognizably ugrađenih sustava.
Izvor: The Computer History Museum

Prvi moderni recognizably ugrađen sustav je Apollo Guidance Computer, developed by Charles ukočen suknar na MIT Instrumentation Laboratory.Svaki let na Mjesec imao dva.Oni ran inertial smjernice sistema i komandni modul i LEM.

Na početak projekta, na računalu je Apollo vodstvo smatra riskiest stavku u Apollo projekta.Koriątenjem tadašnje nove monolitno integriranih krugova, kako bi se smanjila na veličinu i težinu, povećao ovaj rizik.Prvi masovno proizvedeni ugrađen sistem je bio Autonetics D-17 vodstva za računalnu Minuteman projektil, izdan u 1961.Ona je građena od diskretni tranzistorski logički i imao je tvrdi disk za glavne memorije.Kada je otišao u Minuteman II proizvodnje u 1966, D-17 bio je zamijenjen s novim računalom na kojem je bio prvi high-volume korištenje integrirane krugove.Ovaj program sama smanjila cijene na quad nand vrata ICS 1000/each iz $ u $ 3/each, dozvoljavajući njihovo korištenje u komercijalne proizvode.

Presudnih obilježja dizajna u Minuteman računalo da su njegove smjernice algoritam može biti reprogrammed kasnije u programu, da bi se raketa točniji, i računalo može testirati projektil, spremanje kabela i priključak težinu.

Od ove aplikacije u ranim 1960-ih, gdje se cijene nije objekt, ugrađeni sustavi imaju siđi u cijenu.Tu je i veliki porast u procesorskom snagom i funkcionalnosti.Ovaj trend podržava Moore's zakona.
Intel 4004, prvi mikroprocesor
Uvećaj
Intel 4004, prvi mikroprocesor

Prvi mikroprocesor je bio Intel 4004, koji nađe svoj put u Kalkulatori i drugim malim sustavima.Međutim, još uvijek potrebna vanjska memorija čips i druge vanjske podrške logici.Više moćna mikroprocesora, kao što je Intel 8080 razvijeni su za vojne projekte, ali i za druge svrhe prodao.

Do kraja 1970-ih i 8-bitna mikroprocesora bile su norme, ali obično je potrebna vanjska memorija čips i logika za dekodiranje i ulaz / izlaz.Međutim, cijene rapidno pala i više programa usvojene ugrađeni sustavi u malom mjestu (tada više zajedničkih) prilagođeni logiku dizajna.Neke od aplikacija su još vidljivi u instrumentacije i skuplje uređaje.
A PIC mikro
Uvećaj
A PIC mikro

Do sredine 1980-ih, većina prethodno vanjske komponente sustava su bili integrirani u istom čipu kao i procesor.Rezultat je bila dramatična smanjenja u veličini i troškova ugrađenih sustava.Takav integrirani sklopovi pozvani microcontrollers nego mikroprocesora, i široko korištenje ugrađeni sustavi postala izvediva.

Kao što je trošak od mikro pala ispod sata
na plaću za inženjering, došlo je do eksplozije u oba broja ugrađenih sustava, te u broju dijelova dobivate od različitih proizvođača za upotrebu u embedded sustavima.Na primjer, mnogo novih specijalnih funkcija ICS počela dolaze sa serijskim sučeljem za programiranje, a ne više paralelnih tradicionalnih one, za Razmjena do mikro s manje interkonekcije.I2C bus se također pojavio u ovom trenutku.

Kao što je trošak od mikro pala ispod $ 1, postalo je moguće zamijeniti skupe analogne komponente kao što su potentiometers i promjenjivi kondenzatori sa digitalnom elektronika kontrolira mali sklop.

Do kraja je 80s, ugrađeni sustavi bili su norma a ne iznimka za gotovo sve elektronici uređaja, trend koji je nastavljen od.
[uredi]

Karakteristike

Ugrađeni sustavi su računalni sustavi u najširem smislu.To su sva računala osim onih izričito zamišljene kao opšte namene računala.Primjeri ugrađeni sustavi rasponu od prenosiv glazba igrač za real-time kontrole za podsustava u spejs šatl.

Većina komercijalnih ugrađeni sustavi namijenjeni su za napraviti neki zadatak na niskim troškovima.Većina, ali ne i svi imaju real-time sustav ograničenja koji se moraju ispuniti.Oni svibanj morati biti vrlo brzo za neke funkcije, dok je većina ostalih funkcija će se vjerojatno neće imati vremena stroge zahtjeve.Ovi sustavi se zadovoljile njihove real-time constraints s kombinacijom posebne namjene hardver i softver prilagođen sustav zahtjevima.

Teško je karakterizirati ugrađeni sustavi by brzinu ili cijenu, ali za veliku količinu sistema, minimizirati cijenu je obično primarni dizajn razmatranje.Ugrađeni sustavi često imaju nisku izvedbu zahtjevima.To omogućava da se sistem hardver pojednostavljen se smanjili troškovi.Inženjeri obično odaberite hardvera koji je samo dovoljno dobro kako bi se provele potrebne funkcije.

Na primjer, digitalnih set-top box za satelitsku televiziju ima na desetke megabiti procesu kontinuiranog-podataka u sekundi, ali većinu obrade vrši se po običaju integrirani sklopovi koji parsati, direktna i dekodirana multi-kanalni digitalni video.The embedded CPU "postavlja" taj proces, i prikazuje izbornik grafiku, itd. za set-top-a izgleda i stila.Kao ugrađenih procesora postati brži i jeftiniji, oni mogu preuzeti više od velike brzine obrade podataka.

Za low-volume embedded sustave, osobna računala mogu se koristiti često, ograničavajući programi ili zamijenjujući operacijskog sustava s real-time operacijski sustav.U ovom slučaju posebne namjene hardvera svibanj biti zamijenjen jedan ili više visokih performansi CPU.Ipak, neki ugrađeni sustavi svibanj zahtijevaju visoke performanse CPU, specijalni hardver, i velike uspomene na postigla potrebna zadatak.

U visokoj volumen ugrađeni sustavi, kao što su prijenosni glazbeni player ili mobitela, smanjenje troškova postaje jedan od glavnih interesa.Ovi sustavi se često imaju svega nekoliko integriranih krugova, visoko integrirani procesor koji upravlja svim ostalim funkcijama i jednu memorijsku čip.U tim nacrtima svaku komponentu je odabrana i dizajniran da minimizira ukupni trošak sustava.

Softvera pisanog za mnoge ugrađeni sustavi,
a posebno onih bez diska se ponekad naziva firmware.Firmware je softver koji je ugrađen u hardver uređajima,
npr. u jednoj ili više ROM ili flash memoriju IC čipovima.

Programa na ugrađen sustav često izvoditi s ograničenom hardverskih resursa: često nema diska, operacijski sustav, tipkovnice ili ekrana.Softver svibanj ne imati ništa izdaleka kao datotečni sustav, ili ako je prisutan, flash disk s journaling datotečni sustav svibanj zamijeniti rotirajuće medija.Ako korisničko sučelje je prisutan, on svibanj biti malo tipkovnica i zaslon s tekućim kristalima.

Embedded sistemi stanuju u strojeve za koje se očekuje da radi godinama bez greške.Stoga je softver obično razvijena i testirana više nego pažljivo Software za Osobna računala.Mnogi su ugrađeni sustavi izbjegavati mehanički pokretnih dijelova, kao što su diskovi, preklopnici i gumbi jer to su nepouzdani u odnosu na solidnom stanju dijelova kao što su Flash memorije.

Osim toga, ugrađen sistem svibanj biti izvan dohvata ljudi (dolje jedan nafte bušotina, lansiran u svemir, itd.), tako da je ugrađen sustav mora biti u stanju da ponovo sebi, čak i ako katastrofalne podatke korupcije je preuzeo mjesto.To je obično izveden u standardnom elektronički dio naziva upozoravanje vremena da presloži na računalu, osim softvera periodično presloži vremena.
[uredi]

Projektiranje ugrađenih sustava

Obično se koristi u elektronici ili mikroprocesor ili sklop.Neki veliki ili koristiti stari sustavi opće namjene glavnim računalima ili minicomputers.
[uredi]

Korisničkih sučelja

Korisničkih sučelja za embedded sustave uvelike variraju, i time zaslužuju neki poseban komentar.

Interface dizajneri na PARC, Apple Computer, Boeing i HP otkrio princip da treba smanjiti broj tipova korisnik akcije.U ugrađeni sustavi ovaj princip je često u kombinaciji s pogonom na niže troškove.

Jedan od standardnih sučelja, naširoko koristi u embedded sustavima koristi dvije gumbi za kontrolu izbornik sustav, s jednom gumb koji omogućuje korisniku da pomicanje kroz stavke na izborniku, a drugi za odabir stavke.

Izbornici su široko popularan jer su se dokument sebe, a mogu biti odabrane s vrlo jednostavna korisnik akcije.

Druga osnovna trik je smanjiti i pojednostaviti vrstu izlazom.Dizajni ponekad koriste svjetlo stanja za svako sučelje utikač, ili neuspjeh stanju, da kažu što nije uspjelo.A jeftini Varijacija je da su dva svjetla barova s tiskanim matrica grešaka da odaberete-korisnik može nalijepiti oznake za jezik da govori.Na primjer, većina malih računalnih pisača korištenje svjetla označena sa-staviti na naljepnice koje mogu biti tiskani u bilo kojem jeziku.U nekim tržištima, te se isporučuju s nekoliko kompleta oznake, tako da kupci mogu odabrati najudobniji jeziku.

Drugi trik je da zajedničkim modovi su napravili apsolutno jasno na korisnikovom ekranu.Ako sučelje ima načina, oni su gotovo uvijek mogu obrnuti u očigledan način, ili ih preokrenuti automatski.

Na primjer, Boeing
je standardni test sučelje je na gumb, a neke rasvjetom.Kada pritisnete gumb, sva svjetla, uključite.Kad otpustite tipku, svjetla s boravak na kvarove.Oznake su Temeljne engleski.

Dizajneri koristiti boje.Crveno znači "opasnost", ili da se neka pogreška, uzrokujući cijeli sustav na propast.Žuto označava nešto može biti u krivu.Zelena označava stanje je u redu ili dobra.To je namjerno kao stop-svjetlo, jer većina ljudi shvatiti one.

Većina dizajne dogovoriti za prikaz za promjenu odmah nakon što korisnik akciju.Ako je stroj će učiniti ništa, ona obično počinje u roku od 7 sekundi, ili daje Izvješća o napretku.

Ako se dizajn potrebama screen, mnogi dizajneri koristite običan tekst.It's željene korisnike jer su znakovi za čitanje godina.A GUI je ljepušan i mogu učiniti ništa, ali se obično dodaje godine od dizajna, odobrenje i prevoditelj odgode, i jedan ili dva programera na cijenu projekta, bez dodavanja bilo koju vrijednost.Često pretpostavlja-pametan GUI zapravo zbunjuje korisnika, jer se mogu koristiti nepoznatim simbolima.

Ako se dizajn treba upozoriti na dijelove stroja (kao u copiers), te su često označen s brojevima na samom stroju, koji su vidljivi s vrata zatvorena.

Mrežno sučelje je jednako udaljenog zaslona.To mnogo ponaša kao i svako drugo korisničko sučelje.

Jedan od najuspješnijih malih ekrana-based interfaces se dva gumba i izbornika linije teksta u korisnikovu materinjem jeziku.To se koristi u pagers, srednja cijeni pisači, mrežni prekidači i drugih srednjih cijeni situacijama koje zahtijevaju složene ponašanje od korisnika.

Na većim ekranima je touch-screen zaslon ili naprednoj dugmad i minimiziranja vrste korisničkih akcija, i jednostavno kontrole (s) izbornika.Prednost ovog sistema je da je značenje tipke možete promijeniti s ekrana, i izbor može biti vrlo blizak prirodnom ponašanju upozoravaju na ono što
je željeni.

Kada postoji tekst, dizajner bira jedan ili više jezika.Zadani jezik je obično onaj najčešće razumljiv ciljanoj skupini korisnika.Većina dizajnera pokušati iskoristiti native lik setovi od ciljnih skupina kako bi se bolje zadovoljile njihove potrebe.

Tekst je uglavnom prevedene od strane profesionalnog prevoditelja, izvornih govornika, čak i ako su na osoblje.Marketing osoblje moraju biti u mogućnosti reći da je stranim distributerima prijevode su profesionalni.A stranih proizvođača svibanj pitati najvissi volumen distributer pregledati i ispraviti prijevodi na svom jeziku, u cilju pomoći proizvoda prihvaćanja izvorni prodaje ljudima.

Većina vlasti razmotriti upotrebljivosti testa važnija nego bilo koji broj mišljenja.Dizajneri preporučuju testiranje korisničkog sučelja za upotrebljivost na najraniji mogući trenutak.A često korištenih brza, prljava test se pitati izvršni tajnik za korištenje kartonskih modela markeri nacrtana s magijom i manipulirati od strane inženjera.The videotaped rezultat je vjerojatno da će biti i duhovit i vrlo obrazovna.U kazete, svaki put kad se inženjer razgovora, sučelje nije uspjelo jer bi uzrok uslugu poziva.

U mnogim organizacijama, jedna osoba odobrava korisničko sučelje.Često je to kupac, glavni distributer ili netko direktno odgovorni za prodajom sustava.
[uredi]

Platform

Postoji mnogo različitih CPU arhitekture koriste u embedded dizajne poput ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R itd.

To u kontrastu s desktop računala na tržištu, kao što je ovo pismo (2003) je ograničena na samo nekoliko konkurentnih arhitekture, uglavnom Intel / AMD x86 i Apple / Motorola / IBM PowerPC, koji se koriste u Apple Macintosh.U desktop računala, kao i prihvaćanje Java raste, softver postaje sve manje ovisne o izvršenju određenog okruženja.

Standard PC/104 je tipičan osnovice za male, low-volume ugrađen i sustav ruggedized dizajn.To često koriste DOS, Linux, NetBSD, ili ugrađenih u realnom vremenu kao što je operacijski sustav QNX ili pakao.

Zajedničku konfiguraciju za vrlo-high-volume ugrađenih sustava je sustav na čipu, aplikacija specifičan integrirani sklop, za koji CPU je kupljen kao intelektualnog vlasništva za dodavanje na IC's design.A u svezi zajedničke sheme je korištenje polja programirljiva array vrata, a program sa svim logici, uključujući CPU.Većina modernih FPGAs su napravljeni za tu svrhu.
[uredi]

Alati

Kao tipičan računalni programeri, dizajneri ugrađen sustav koristite kompilatora, assemblers i debuggers razviti sustav ugrađen softver.Međutim, oni također koristiti nekoliko alata koji su nepoznate većini programera.

Software Tools može dolaziti iz nekoliko izvora:

* Software tvrtki koje specijalizirati u embedded tržišta
* Koristiti s GNU alata za razvoj softvera (vidi križ kompilator)
* Ponekad, razvojne alate za osobno računalo se može koristiti ako je ugrađen procesor je zatvoriti u odnosu na zajedničku PC procesora

Ugrađeni sustav dizajneri također koristiti nekoliko softverskih alata rijetko koristi tipični računalni programeri.

* Jedan od uobičajenih alata je u spoj emulator "(ICE), odnosno u više modernog dizajna, jednom ugrađen ispravljanje pogrešaka.Ovaj alat je debugging temeljni trik koji se koriste za razvoj embedded code.Ono zamjenjuje ili utikači u mikroprocesora, te pruža sadržaje za brzo učitavanje i debug eksperimentalnog koda u sustavu.A mali se obično nudi pod posebnim elektronika priključiti u sustav.Često osobno računalo s posebnim softverom pridaje na pod pružiti debugging interface.
* U program je najčešće prilično egzotično.U većini poslovnih programiranje, u program je gotovo zakašnjela misao, a dodijeljene su nikada raznolikiji.Nasuprot tome, to je zajedničko za embedded povezivač imati potpun, često složen, naredba jeziku.Postoji više vrsta često memorije, s posebnim kôd i podaci se nalaze u svakoj.Individualni strukture podataka svibanj biti postavljene na određenoj adresa dati softver prikladan pristup memoriji preslikanog kontrolu registrima.Ugrađeni linkers često imaju prilično egzotično optimizaciji objekata smanjiti broj veličine i izvršenje puta.Na primjer, oni svibanj premjestiti subroutines pozive, tako da na njih mogu koristiti manje potprogram poziva i skakati upute.Oni često imaju značajke za upravljanje podacima nadslojevi i bankovnog prospojni tehnika često se koristi da se protežu na jeftin CPU ugrađenih u softver.
* Drugi alat je zajednička uslužni program (često domaća) za dodavanje ili provjerava CRC za program, tako da je ugrađen sustav može provjeriti svoj program izvršavanja podataka prije njega.
* An embedded programera koja razvija softver za digitalnu obradu signala, često ima matematike, kao što su radni MathCad ili Mathematica da simuliraju matematike.
* Manje su zajedničke uslužni programi za uključivanje u kod podatkovne datoteke, tako da se može uključiti bilo koju vrstu podataka u program.
* Nekoliko projekata korištenja Sinkroni programskih jezika za dodatnu pouzdanost ili obradu digitalnih signala.

Neki programski jezici nude određene ugrađenu podršku za sustave programiranja.

* Za C jeziku, ISO / IEC TR 18037:2005 specificira
o Naimenovan adresa prostora
Nazvan skladištenje o klasama
Osnovno o I / O hardveru adresiranje

[uredi]

Debugging

Debugging se obično izvodi s in-sklop emulator, ili neki tip za pronalaženje pogrešaka koje mogu ometati mikro interne mikrokod.

The mikrokod prekid omogućuje pronalaženje pogrešaka djeluju u hardveru u kojoj samo CPU djela.CPU-based ispravljanje pogrešaka može se koristiti za probu i za debug elektronike na računalu s gledišta CPU.Ova značajka je razvio na PDP-11.

Developers bi trebala insistirati na debugging koja pokazuje visoki jeziku, s breakpoints a single-koračni, zbog tih značajki su široko dostupni.Također, programeri trebali pisati jednostavnim prijavljivanjem i korištenje objekata u debug sekvence u realnom vremenu događanja.

PC ili glavno programera prvi nailazeći ovu vrstu programiranje često postaju zbunjeni oko prioriteta dizajn i prihvatljiva metoda.Mentorstvo, recenzije i broj-egoless programiranje se preporučuje.

Kao složenosti embedded sustavima raste, višu razinu alati i operativni sustavi su u Migrating strojevima gdje ima smisla.Na primjer, cellphones, osobne digitalne pomoćnike i ostale potrošačke računala često je potrebna značajna softver koji je kupljen ili koje je osoba koja nije proizvođač od elektronike.U tim sustavima otvorenog programskog okruženja kao što je Linux, OSGi ili Java Embedded je potreban da bi treća strana softver usluga može prodati do velikog tržišta.

Većina takvih otvorenih okruľenja imati referentni dizajn koji se izvodi na osobnom računalu.Velik dio programa za takve sustave mogu se razviti na konvencionalnu PC.Međutim, porting je otvoren do specijaliziranih okruženja elektronike, kao i razvoj uređaja za vozače elektronike se obično još odgovornost klasiccnom embedded software inženjer.U nekim slučajevima, inženjer radi za integrirani sklop proizvođača, ali još uvijek ima takve osobe negdje.
[uredi]

Operacijski sustav

Embedded sistemi često nemaju operativnog sustava, odnosno specijalizirana embedded operacijski sustav (često u stvarnom vremenu operativnog sustava), ili programer je dodijeljen luka jedan od ovih na novi sustav.
[uredi]

Start-up

Svi ugrađeni sustavi imaju start-up kod.Obično ga onemogućuje prekine, postavlja se elektronike, testovi računala (RAM, CPU i software), a zatim počinje primjena kod.Mnogi su ugrađeni sustavi oporaviti od kratkoročnih nestanka struje koje bez ponovnog nedavnog self-testova.Ponovo puta pod desetinu sekunde su zajedničke.

Mnogi dizajneri su pronašli nekoliko LEDs korisno ukazati na greške (oni pomoći za rješavanje problema).Zajednički plan je da se elektronika uključivanje svih u LED (s) at reset (dokazivanje da je vlast i LEDs rad).Tada je softver mijenja kao LEDs Power-On Self Test izvršava.Nakon toga, softver koristi LED (a) ukazuju na normalan rad ili pogreške.Ovo služi za uvjeravati većina tehničara, inženjera i nekim korisnicima.Zanimljiv izuzetak je da na elektroenergetski metara i druge predmete na ulici, trepćućih svjetla se zna da privuče pažnju i vandalizam.
[uredi]

Izgrađen-in Self-Test

Većina sustava ima ugrađen neki stupanj ili iznos od izgrađen-in self-test.Postoji nekoliko osnovnih tipova:

1.Testiranje računala: CPU, RAM, i program memorije.To često izvoditi u jednom power-up.U sigurnosti kriticari sustave, oni su također pokretati periodički (unutar intervala sigurnosti), ili tijekom vremena.
2.Testovi za periferije: Ove simuliraju ulazima i čitanje leđa ili mjerilo outputa.A iznenađujući broj komunikacija, analogni i kontrolu sustava mogu imati ove testove, često vrlo jeftino.
3.Testovi moci: Ove obično svaku mjeru željeznicom od napajanja, i svibanj provjeru unosa (baterija ili struju) as well.Power supplies su često vrlo je istakao, s niskim marginama i testiranje im je stoga vrijedan.
4.Komunikacija testovi: Ove potvrditi primitak jednostavne poruke od povezan jedinica.Interneta, na primjer, ima u ICMP poruci "ping".
5.Kabliranje testovi: Ove obično trčanje telegram u dogovoru serpentina putem predstavnik kočiće za kablove koji moraju biti u prilogu.Sinkrone komunikacije sustavima, kao što su telefonski medijima često koriste "sync" testove za ovu namjenu.Kabelska testovi su jeftini i veoma korisna kada je jedinica ima utikači.
6.Lažiranje testovi: Često sistem mora biti prilagođen kada je instaliran.Lažiranje testovi pružaju pokazatelji da je osoba koja instalira sustav.
7.Potrošni testovi: Ove mjere što sustav koristi se i upozoriti kada su male količine.Najčešći primjer je fuel gauge of a car.Najsloženije primjeri svibanj biti automatizirani medicinski analizu sustava koji održavaju zaliha kemijskog reagensa.
8.Operativno testovi: Ove mjere stvari koje korisnik bi stalo za upravljanje sustavom.Znakovita je i činjenica da su ovi za pokretanje kada je operativni sustav.To uključuje i navigacijske instrumente na zrakoplov, automobil
je brzinomjer, a disk drive-rasvjetom.
9.Sigurnosna testiranja: Ove pokretati unutar sigurnost interval ', i uvjeravam da je sustav još uvijek je pouzdan.Sigurnost interval vremena je obično manji od minimalnog vremena koje mogu uzrokovati štetu.

[uredi]

Pouzdanost režima

Pouzdanost je različite definicije ovisno o zašto ljudi žele ga.Zanimljivo, postoji relativno mali broj vrsta pouzdanost i slični sustavi s tipovima zapošljavaju slične vrste izgrađen-in self-testove i oporavak metoda:

1.Sustav je suviše nesigurno ili nedostupan popravak.(Space sustavi, podmorski kabeli, navigacijski beacons, bušiti rupu-sustava, a neobično, automobila i masovno proizvedenih proizvoda) Općenito, ugrađen sustav ispitivanja podsustava, preklopnici i rezervni dijelovi blagoglagoljiv na liniju, ili uključuje "šepati moda", da daju parcijalna funkcija .Često masovno proizvodila opremu za potrošače (kao što su automobili, računala i pisači) padne u ovu kategoriju jer su popravci skuplji repairmen i daleko, u odnosu na početne cijene za jedinicu.
2.Sustav se ne može sa sigurnošću isključiti.(Zrakoplovi orijentacija, reaktor kontrolne sisteme, sigurnost-kritične kemijske tvornice kontrole, željezničke signale, motori na single-motor zrakoplova) Kao i gore, ali "šepati moda" su manje podnošljivom.Često je sigurnosne kopije su odabrani od strane operatora.
3.Sustav će izgubiti velike količine novca kada je zatvorena.(Telephone prekidači, tvornice kontrola mosta i kontrola dizala, sredstva za prijenos i tržišnih odluka, automatizirani prodaja i servis) One obično imaju nekoliko go / no-go testove, s on-line ili rezervni dijelovi hramati-alternativnim načinima korištenja opreme i postupaka priručnik .
4.Sustav ne može biti operiran kada je nesigurnom.Isto tako, možda sustav ne može biti operiran kada bi ga izgubiti previše novca.(Medicinska oprema, oprema za zrakoplove s vrućim rezervni dijelovi, kao što su motori, kemijske tvornice kontrole, automatizirani burzama, gaming sistemi) testiranje može biti prilično egzotično, no samo je akciju za zatvaranje cijele jedinice i ukazuju na neuspjeh.

[uredi]

Vrste ugrađenim softverom arhitektura

Postoji nekoliko različitih tipova osnovi programskih arhitektura zajedničko korištenje.
[uredi]

Kontrolne petlje

U ovom dizajnu, softver jednostavno ima petlju.Petlji subroutines pozive.Svaki potprogram upravlja dio hardvera ili softvera.Prekine generalno postavljen zastave, ili ažurirati brojači koji se čitaju ostatak softvera.

A jednostavan API onemogućuje i omogućuje prekine.Done right to ručke ugniježđeni pozive u ugniježđeni subroutines, i vraća se prethodna prekinuti države u najudaljeniji omogućiti.To je jedan od najjednostavnijih načina stvaranja exokernel.

Tipično, ima neku vrstu potprogram u petlji za upravljanje popisom softver vremena, koristeći periodićne realnom vremenu prekinuti.Kada vrijeme istekne, pridružena subrutina je trčao, zastavu ili je postavljena.

Bilo koja očekuje hardvera događaj bi trebao biti iza-up sa softverom vremena.Hardware fail o događajima u jednom trilijuna puta.To
je o jednom godišnje s modernim hardver.Sa milijun masovno proizvodila uređaje, odlaze van programski brojač je poslovna katastrofa.

Ponekad skup softver-temeljen sigurnost vremena svibanj se izvoditi po test softvera koji povremeno presloži softverski upozoravanje provodi u hardver.Ako je softver propusti događaj, sigurnost softvera vremena hvata njega.Ako je sigurnost vremena softver ne uspije, upozoravanje hardvera presloži jedinicu.

Strojevi svibanj biti proveden s funkcije države po-pokazivač rublja (u C , C ili montaže, svejedno).Promjenu državne trgovinama drugu funkciju u pokazivača.Pokazivač Funkcija se izvršava svaki put kad se petlja vožnje.

Mnogi dizajneri preporučuju čitanje svaki uređaj IO jednom petlji, i pohranjivanje rezultata pa je logika djeluje na konzistentan vrijednosti.

Mnogi dizajneri radije design njihova država strojevima za provjeru samo jedna ili dvije stvari po državu.Obično se taj događaj hardvera i softvera vremena.

Dizajneri preporučuju da hijerarhijski strojevi trebali pokrenuti niže razine strojevi pred višim, tako da je veći pokrenuti s točne podatke.

Kompleksne funkcije kao što su interna kontrola izgaranja su često barata sa multi-dimensional tablicama.Umjesto složene izračune, kod izgleda gore vrijednosti.Ovaj softver može interpolirati između unosa, da male i jeftine stolove.

U najmanju microcontrollers (esp. u 8051, koji ima 128 byte stack) a control loop dozvole dobar program za korištenje podataka nadslojevi statički dodeljeno za lokalne varijable.U ovu shemu, varijabli blizu lišća a potprogram poziva stablo dobiti veći memorijske adrese.Kada počne nova grana, njene varijable mogu biti reallocated u prostoru napuštene od prethodne vlasti.

Jedna velika slabost jednostavnu kontrolu petlje je u tome da ne jamči vrijeme odgovoriti na bilo koji određeni hardver događaj.

Oprezno kodiranje lako može uvjeriti da se ništa ne onemogućuje prekine dugo_Ovako kod prekinuti se može izvoditi na vrlo preciznom vrijeme.

Još jedna glavna slabost je kontrola petlje je u tome da mogu postati kompleks za dodavanje novih mogućnosti.Algoritmi koji se dugo vremena za izvođenje mora biti pažljivo razbiti samo tako malo učinjeno djelo dobiva svaki put kroz glavnu petlju.

Ovaj sustav
je jakost je njegova jednostavnost, a na malim komadima softvera petlji je obično tako brzo da nitko ne brine da to nije predvidljiva.

Još jedna prednost je da je ovaj sustav jamči da će se pokrenuti softver.Nema misteriozni operativnog sustava kriv za loše ponašanje.
[uredi]

Nonpreemptive višezadaćnost

A nonpreemptive višezadaćnost sustav je vrlo sličan gore navedenim, osim da je petlja je skriven u API.Jedan definira niz zadataka, a svaki zadatak dobiva vlastitu subrutina stog.Tada, kada je zadatak miruje, ona poziva jedan neprisutan rutinu (obično se naziva "pauzirati", "čekaj", "prinosa", ili sl.).

An arhitektura sličnih svojstava je da se događaj čekanju, i imati petlju da makne događaje i pozivi subroutines temelji se na terenu u red čekanja-ulaz.

Prednosti i nedostaci su vrlo slične kontrolne petlje, osim da dodavanjem novog softvera je lakše.Jedno jednostavno piše novi zadatak, ili dodaje u red čekanja-tumača.
[uredi]

Preemptive vremena

Uzmite bilo koje od gore navedenih sustava, ali dodati vremenski sustav koji pokreće subroutines iz vremena prekinuti.To daje potpuno nove mogućnosti u sustavu.Po prvi put, timer rutina može pojaviti u garantiranim vrijeme.

Također, po prvi put, kôd može stati na svoje vlastite strukture podataka na neočekivanim puta.Vremena rutine moraju se tretirati na isti njege kao prekinuti rutinu (e).
[uredi]

Preemptive zadataka

Krenite gore nonpreemptive zadatak sustava i pokrenite ga iz vremena preemptive ili drugih prekine.

Odjednom sustava je prilično drugačija.

Any piece of task code can damage the data of another task; they must be precisely separated. Access to shared data must be controlled by some synchronization strategy, such as message queues, semaphores or a non-blocking synchronization scheme.

Often, at this stage, the developing organization buys a real-time operating system. This can be a wise decision if the organization lacks people with the skills to write one, or if the port of the operating system to the hardware will be used in several products. It usually adds six to eight weeks to the schedule, and forever after programmers can blame delays on it.
[edit]

Microkernels and Exokernels

These try to organize the system in a way that's more configurable than a big kernel, while providing similar features.

A microkernel is a logical step up from a real-time OS. The usual arrangement is that the operating system kernel allocates memory and switches the CPU to different threads of execution. User mode processes implement major functions such as file systems, network interfaces, etc.

Microkernels were first tried back in the 1950s, and abandoned in favor of monolithic (MULTICS and UNIX style) kernels because the computers switched tasks and transmitted data between the tasks too slowly. In general, microkernels succeed when the task switching and intertask communication is fast, and fail when they are slow.

Exokernels communicate efficiently by normal subroutine calls. The hardware, and all the software in the system are available to, and extensible by application programmers. A resource kernel (which may be part of the library) allocates or multiplexes access to CPU time, memory and other resources. Big-kernel features such as multitasking, networking and file systems are provided by a library of code. The library may be dynamically linked, extensible, and shared. Different applications can even use different libraries, but all resources come from the resource kernel.
[edit]

Virtual machines

Some avionic systems use several merchant computers. Then, further, each of these computers simulate several copies of themselves. Critical programs run on several computers, and vote.

The advantage of a simulated environment is that if one computer fails, the different instances of the software can be migrated to software partitions in working computers without changing the number of votes.

Generally the virtualization software runs programs in the computer's user mode. It traps and simulates hardware access, and instructions that are not executable in the user mode.
[edit]

Checkpointed calculations

Another high-availability scheme has two computers that execute for a bit, then exchange notes about their calculations up to that point. If the one computer's calculations are nuts, it is shut down.
[edit]

Office-style (big-kernel) operating systems

These are popular for embedded projects that have no systems budget. In the opinion of at least one author of this article, they are usually a mistake. Here's the logic:

* Operating systems are specially-packaged libraries of reusable code. If the code does something useful, the designer saves time and money. If not, it's worthless.
* Operating systems for business systems lack interfaces to embedded hardware. For example, if one uses Linux to write a motor controller or telephone switch, most of the real control operations end up as numbered functions in an IOCTL-call. Meanwhile, the normal read, write, and fseek, interface is purposeless. So the operating system actually interferes with development.
* Most embedded systems perform no office work, so most code of office operating systems is wasted. For example, most embedded systems never use a file system or screen, so file system and GUI logic is wasted. Unused code is just a reliability liability.
* Office style operating systems protect the hardware from user programs. That is, they profoundly interfere with embedded systems development.
* Operating systems must invariably be ported to an embedded system. That is, the hardware driver code must always be written anyway. This is the most difficult part of the operating system, so little is saved by using one.
* The genuinely useful, portable features of operating systems are small pieces of code. For example, a basic TCP/IP interface is about 3,000 lines of C code. Another example is that a simple file system is about the same size. If a design needs these, they can be had for less than 10% of the typical embedded system's development budget, without royalty, just by writing them. And, if the needed code is sufficiently generic, the back of embedded systems magazines typically have vendors selling royalty-free C implementations.

Nevertheless many engineers disagree. Embedded Linux is increasing in popularity, especially on the more powerful embedded devices such as Wireless Routers and GPS Navigation Systems. Here are some of the reasons:

* Ports to common embedded chip sets are available.
* They permit re-use of publicly available code for Device Drivers, Web Servers, Firewalls, and other code.
* Development systems can start out with broad feature-sets, and then the distribution can be configured to exclude unneeded functionality, and save the expense of the memory that it would consume.
* Many engineers believe that running application code in user mode is more reliable, easier to debug and that therefore the development process is easier and the code more portable.
* Many embedded systems lack the tight real time requirements of a control system. A system such as Embedded Linux has fast enough response for many applications.
* Features requiring faster response than can be guaranteed can often be placed in hardware.
* Many RTOS systems have a per-unit cost. When used on a product that is or will be come a commodity, that cost is significant.

[edit]

Exotic custom operating systems

Some systems require safe, timely, reliable or efficient behavior unobtainable with the above architectures. There are well-known tricks to construct these systems:

* Hire a real system programmer. They cost a little more, but can save years of debugging, and the associated loss of revenue.
* RMA (rate monotonic analysis), can be used to find whether a set of tasks can run under a defined hardware system. In its simplest form, the designer assures that the quickest-finishing tasks have the highest priorities, and that on average, the CPU has at least 30% of its time free.
* Harmonic tasks optimize CPU efficiency. Basically, designers assure that everything runs from a heartbeat timer. It's hard to do this with a real-time operating system, because these usually switch tasks when they wait for an I/O device.
* Systems with exactly two levels of priority (usually running, and interrupts-disabled) cannot have Priority inversion problems in which a higher priority task waits for a lower priority task to release a semaphore or other resource.
* Systems with monitors can't have deadlocks. A monitor locks a region of code from interrupts or other preemption. If the monitor is only applied to small, fast pieces of code, this can work well. If the monitor API can be proven to run to completion in all cases, (say, if it merely disables interrupts) then no hangs are possible.

This means that systems that use dual priority and monitors are safe and reliable because they lack both deadlocks and priority inversion. If the monitors run to completion, they will never hang. If they use harmonic tasks, they can even be fairly efficient. However, RMA can't characterize these systems, and levels of priority had better not exist anywhere, including in the operating system and hardware.
[edit] Vidi takođerWikibooks
Wikibooks Wikiversity has more about this subject:
Embedded System Engineering
Wikibooks
Wikibooks has more about this subject:
Embedded Systems

* Real-time
* Real-time operating system
* Synchronous programming language
* Microprocessor
* Embedded System Design in an FPGA
* Software engineering
* List of software engineering topics
* Firmware
* Information appliance
* Programming languages for embedded system
o Ada
o C
o C with careful use of language features
o Embedded C
o Forth
o Java
* Operating Systems for embedded system
o eCos
o Embedded Linux
o Embedded Debian
o embOS (Segger)
o FreeRTOS
o JavaOS
o LynxOS
o Nucleus RTOS
o OSGi
o pSOS
o QNX
o Windows CE
o VxWorks
o T2 SDE
* Ubiquitous computing

[edit] Vanjski linkovi* How a real time operating system works
* Embedded Systems Portal
* Windows Embedded Developer Center
* Embedded systems and VLIW processors
* Embedded C Homepage
* QNX Homepage
* LynuxWorks embedded system home page
* Embedded Systems Discussion Groups, Books, Jobs, and More
* Embedded Software Design
* Universities that have Embedded Systems Research groups
* Embedded Systems Institute
* Embedded Systems Programming
* The EE Compendium - Electronic Engineering and Embedded Systems Programming
* DeviceTools - Tools and silicon for embedded device developers
* Embedian
* The Magazine of Record for the Embedded Computing Industry
* Embedded White Papers, Downloads, Companies, News, Articles
* Troubleshooting Embedded Systems - An overview of board bring-up, manufacturing and servicing issues.

Added after 30 seconds:An embedded system is a special-purpose system in which the computer is completely encapsulated by the device it controls. Unlike a general-purpose computer, such as a personal computer, an embedded system performs pre-defined tasks, usually with very specific requirements. Since the system is dedicated to a specific task, design engineers can optimize it, reducing the size and cost of the product. Embedded systems are often mass-produced, so the cost savings may be multipled by millions of items.

The core of any embedded system is formed by one or several microprocessors or microcontrollers, programmed to perform a small number of tasks. In contrast to a general purpose computer which can run any software application the user chooses, the software on an embedded system is semi-permanent; so it is often called "firmware". Sadržaj[hide]

* 1 Examples of embedded systems
* 2 History
* 3 Characteristics
* 4 Design of embedded systems
o 4.1 User interfaces
o 4.2 Platform
o 4.3 Tools
o 4.4 Debugging
o 4.5 Operating system
o 4.6 Start-up
4.6.1 Built-In Self-Test
o 4.7 Reliability regimes
* 5 Types of embedded software architectures
o 5.1 The control loop
o 5.2 Nonpreemptive multitasking
o 5.3 Preemptive timers
o 5.4 Preemptive tasks
o 5.5 Microkernels and Exokernels
o 5.6 Virtual machines
o 5.7 Checkpointed calculations
o 5.8 Office-style (big-kernel) operating systems
o 5.9 Exotic custom operating systems
* 6 See also
* 7 External links

[edit]

Examples of embedded systems

* automatic teller machines (ATMs)
* avionics, such as inertial guidance systems, flight control hardware/software and other integrated systems in aircraft and missiles
* cellular telephones and telephone switches
* computer network equipment, including routers, timeservers and firewalls
* computer printers
* copiers
* disk drives (floppy disk drives and hard disk drives)
* engine controllers and antilock brake controllers for automobiles
* home automation products, like thermostats, air conditioners, sprinklers, and security monitoring systems
* handheld calculators
* household appliances, including microwave ovens, washing machines, television sets, DVD players/recorders
* medical equipment
* measurement equipment such as digital storage oscilloscopes, logic analyzers, and spectrum analyzers
* multifunction wristwatches
* multimedia appliances: Internet radio receivers, TV set top boxes, digital satellite receivers
* Multifunctional printers (MFPs)
* personal digital assistants (PDAs), that is, small handheld computers with PIMs and other applications
* mobile phones with additional capabilities, for example, mobile digital assistants with cellphone and PDA and Java (MIDP)
* programmable logic controllers (PLCs) for industrial automation and monitoring
* stationary videogame consoles and handheld game consoles
* wearable computer

[edit] PovijestThe Apollo Guidance Computer, the first recognizably modern embedded system.source: The Computer History Museum
Enlarge
The Apollo Guidance Computer, the first recognizably modern embedded system.
source: The Computer History Museum

The first recognizably modern embedded system was the Apollo Guidance Computer, developed by Charles Stark Draper at the MIT Instrumentation Laboratory. Each flight to the moon had two. They ran the inertial guidance systems of both the command module and LEM.

At the project's inception, the Apollo guidance computer was considered the riskiest item in the Apollo project. The use of the then new monolithic integrated circuits, to reduce the size and weight, increased this risk. The first mass-produced embedded system was the Autonetics D-17 guidance computer for the Minuteman missile, released in 1961. It was built from discrete transistor logic and had a hard disk for main memory. When the Minuteman II went into production in 1966, the D-17 was replaced with a new computer that was the first high-volume use of integrated circuits. This program alone reduced prices on quad nand gate ICs from $1000/each to $3/each, permitting their use in commercial products.

The crucial design features of the Minuteman computer were that its guidance algorithm could be reprogrammed later in the program, to make the missile more accurate, and the computer could also test the missile, saving cable and connector weight.

Since these early applications in the 1960s, where cost was no object, embedded systems have come down in price. There has also been an enormous rise in processing power and functionality. This trend supports Moore's Law.
The Intel 4004, the first microprocessor
Enlarge
The Intel 4004, the first microprocessor

The first microprocessor was the Intel 4004, which found its way into calculators and other small systems. However, it still required external memory chips and other external support logic. More powerful microprocessors, such as the Intel 8080 were developed for military projects, but also sold for other uses.

By the end of the 1970s, 8-bit microprocessors were the norm, but usually needed external memory chips, and logic for decoding and input/output. However, prices rapidly fell and more applications adopted small embedded systems in place of (then more common) custom logic designs. Some of the more visible applications were in instrumentation and expensive devices.
A PIC microcontroller
Enlarge
A PIC microcontroller

By the mid-1980s, most of the previously external system components had been integrated into the same chip as the processor. The result was a dramatic reduction in the size and cost of embedded systems. Such integrated circuits were called microcontrollers rather than microprocessors, and widespread use of embedded systems became feasible.

As the cost of a microcontroller fell below an hour's wage for an engineer, there was an explosion in both the number of embedded systems, and in the number of parts supplied by different manufacturers for use in embedded systems. For example, many new special function ICs started to come with a serial programming interface rather than the more traditional parallel ones, for interfacing to a microcontroller with fewer interconnections. The I2C bus also appeared at this time.

As the cost of a microcontroller fell below $1, it became feasible to replace expensive analog components such as potentiometers and variable capacitors with digital electronics controlled by a small microcontroller.

By the end of the 80s, embedded systems were the norm rather than the exception for almost all electronics devices, a trend which has continued since.
[edit] KarakteristikeEmbedded systems are computer systems in the widest sense. They include all computers other than those specifically intended as general-purpose computers. Examples of embedded systems range from portable music players to real-time controls for subsystems in the space shuttle.

Most commercial embedded systems are designed to do some task at low cost. Most, but not all have real-time system constraints that must be met. They may need to be very fast for some functions, while most other functions will probably not have strict timing requirements. These systems meet their real-time constraints with a combination of special purpose hardware and software tailored to the system requirements.

It is difficult to characterize embedded systems by speed or cost, but for high volume systems, minimizing cost is usually the primary design consideration. Often embedded systems have low performance requirements. This allows the system hardware to be simplified to reduce costs. Engineers typically select hardware that is just good enough to implement the necessary functions.

For example, a digital set-top box for satellite television has to process tens of megabits of continuous-data per second, but most of the processing is done by custom integrated circuits that parse, direct, and decode the multi-channel digital video. The embedded CPU "sets up" this process, and displays menu graphics, etc. for the set-top's look and feel. As embedded processors become faster and cheaper, they can take over more of the high-speed data processing.

For low-volume embedded systems, personal computers can often be used, by limiting the programs or by replacing the operating system with a real-time operating system. In this case special purpose hardware may be replaced by one or more high performance CPUs. Still, some embedded systems may require high performance CPUs, special hardware, and large memories to accomplish a required task.

In high volume embedded systems such as portable music players or cell phones, reducing cost becomes a major concern. These systems will often have just a few integrated circuits, a highly integrated CPU that controls all other functions and a single memory chip. In these designs each component is selected and designed to minimize overall system cost.

The software written for many embedded systems, especially those without a disk drive is sometimes called firmware. Firmware is software that is embedded in hardware devices, eg in one or more ROM or Flash memory IC chips.

Programs on an embedded system often run with limited hardware resources: often there is no disk drive, operating system, keyboard or screen. The software may not have anything remotely like a file system, or if one is present, a flash drive with a journaling file system may replace rotating media. If a user interface is present, it may be a small keypad and liquid crystal display.

Embedded systems reside in machines that are expected to run continuously for years without errors. Therefore the software is usually developed and tested more carefully than Software for Personal computers. Many embedded systems avoid mechanical moving parts such as Disk drives, switches or buttons because these are unreliable compared to solid-state parts such as Flash memory.

In addition, the embedded system may be outside the reach of humans (down an oil well borehole, launched into outer space, etc.), so the embedded system must be able to restart itself even if catastrophic data corruption has taken place. This is usually accomplished with a standard electronic part called a watchdog timer that resets the computer unless the software periodically resets the timer.
[edit]

Design of embedded systems

The electronics usually uses either a microprocessor or a microcontroller. Some large or old systems use general-purpose mainframe computers or minicomputers.
[edit]

User interfaces

User interfaces for embedded systems vary widely, and thus deserve some special comment.

Interface designers at PARC, Apple Computer, Boeing and HP discovered the principle that one should minimize the number of types of user actions. In embedded systems this principle is often combined with a drive to lower costs.

One standard interface, widely used in embedded systems, uses two buttons to control a menu system, with one button allowing the user to scroll through items on the menu and the other to select an item.

Menus are broadly popular because they document themselves, and can be selected with very simple user actions.

Another basic trick is to minimize and simplify the type of output. Designs sometimes use a status light for each interface plug, or failure condition, to tell what failed. A cheap variation is to have two light bars with a printed matrix of errors that they select- the user can glue on the labels for the language that he speaks. For example, most small computer printers use lights labelled with stick-on labels that can be printed in any language. In some markets, these are delivered with several sets of labels, so customers can pick the most comfortable language.

Another common trick is that modes are made absolutely clear on the user's display. If an interface has modes, they are almost always reversible in an obvious way, or reverse themselves automatically.

For example, Boeing's standard test interface is a button and some lights. When you press the button, all the lights turn on. When you release the button, the lights with failures stay on. The labels are in Basic English.

Designers use colors. Red means "danger" or that some error has occurred, causing the entire system to fail. Yellow means something might be wrong. Green means the status is OK or good. This is intentionally like a stop-light, because most people understand those.

Most designs arrange for a display to change immediately after a user action. If the machine is going to do anything, it usually starts within 7 seconds, or gives progress reports.

If a design needs a screen, many designers use plain text. It's preferred because users have been reading signs for years. A GUI is pretty and can do anything, but typically adds a year from design, approval and translator delays, and one or two programmers to a project's cost, without adding any value. Often, an overly-clever GUI actually confuses users, because it can use unfamiliar symbols.

If a design needs to point to parts of the machine (as in copiers), these are often labelled with numbers on the actual machine, that are visible with the doors closed.

A network interface is just a remote screen. It behaves much like any other user interface.

One of the most successful small screen-based interfaces is the two menu buttons and a line of text in the user's native language. It's used in pagers, medium-priced printers, network switches, and other medium-priced situations that require complex behavior from users.

On larger screens, a touch-screen or screen-edge buttons also minimize the types of user actions, and easily control(s) menus. The advantage of this system is that the meaning of the buttons can change with the screen, and selection can be very close to the natural behavior of pointing at what's desired.

When there's text, the designer chooses one or more languages. The default language is usually the one most widely understood by the targeted group of users. Most designers try to use native character sets of the target group to better meet their needs.

Text is usually translated by professional translators, even if native speakers are on staff. Marketing staff have to be able to tell foreign distributors that the translations are professional. A foreign manufacturer may ask the highest-volume distributor to review and correct translations in their native language, in order to help the product's acceptance by native sales people.

Most authorities consider a usability test more important than any number of opinions. Designers recommend testing the user interface for usability at the earliest possible instant. A commonly-used quick, dirty test is to ask an executive secretary to use cardboard models drawn with magic markers, and manipulated by an engineer. The videotaped result is likely to be both humorous and very educational. In the tapes, every time the engineer talks, the interface has failed because it would cause a service call.

In many organizations, one person approves the user interface. Often this is a customer, the major distributor or someone directly responsible for selling the system.
[edit] PlatformThere are many different CPU architectures used in embedded designs such as ARM, MIPS, Coldfire/68k, PowerPC, X86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R etc.

This in contrast to the desktop computer market, which as of this writing (2003) is limited to just a few competing architectures, mainly the Intel/AMD x86, and the Apple/Motorola/IBM PowerPC, used in the Apple Macintosh. In desktop computers, as acceptance of Java grows, the software is becoming less dependent on a specific execution environment.

Standard PC/104 is a typical base for small, low-volume embedded and ruggedized system design. These often use DOS, Linux, NetBSD, or an embedded real-time operating system such as QNX or Inferno.

A common configuration for very-high-volume embedded systems is the system on a chip, an application-specific integrated circuit, for which the CPU was purchased as intellectual property to add to the IC's design. A related common scheme is to use a field-programmable gate array, and program it with all the logic, including the CPU. Most modern FPGAs are designed for this purpose.
[edit] AlatiLike typical computer programmers, embedded system designers use compilers, assemblers, and debuggers to develop embedded system software. However, they also use a few tools that are unfamiliar to most programmers.

Software tools can come from several sources:

* Software companies that specialize in the embedded market
* Ported from the GNU software development tools (see cross compiler)
* Sometimes, development tools for a personal computer can be used if the embedded processor is a close relative to a common PC processor

Embedded system designers also use a few software tools rarely used by typical computer programmers.

* One common tool is an "in-circuit emulator" (ICE) or, in more modern designs, an embedded debugger. This debugging tool is the fundamental trick used to develop embedded code. It replaces or plugs into the microprocessor, and provides facilities to quickly load and debug experimental code in the system. A small pod usually provides the special electronics to plug into the system. Often a personal computer with special software attaches to the pod to provide the debugging interface.
* The linker is usually quite exotic. In most business-programming, the linker is almost an afterthought, and the defaults are never varied. In contrast, it's common for an embedded linker to have a complete, often complex, command language. There are often multiple types of memory, with particular code and data located in each. Individual data structures may be placed at particular addresses to give the software convenient access to memory-mapped control registers. Embedded linkers often have quite exotic optimization facilities to reduce the code's size and execution times. For example, they may move subroutines so that calls to them can use smaller subroutine call and jump instructions. They often have features to manage data overlays, and bank switching, techniques often used to stretch the inexpensive CPUs in embedded software.
* Another common tool is a utility program (often home-grown) to add a checksum or CRC to a program, so the embedded system can check its program data before executing it.
* An embedded programmer that develops software for digital signal processing, often has a math workbench such as MathCad or Mathematica to simulate the mathematics.
* Less common are utility programs to turn data files into code, so one can include any kind of data in a program.
* A few projects use Synchronous programming languages for extra reliability or digital signal processing.

Some programming languages offer specific support for embedded systems programming.

* For the C language, ISO/IEC TR 18037:2005 specifies
o Named address spaces
o Named storage classes
o Basic I/O hardware addressing

[edit]

Debugging

Debugging is usually performed with an in-circuit emulator, or some type of debugger that can interrupt the microcontroller's internal microcode.

The microcode interrupt lets the debugger operate in hardware in which only the CPU works. The CPU-based debugger can be used to test and debug the electronics of the computer from the viewpoint of the CPU. This feature was pioneered on the PDP-11.

Developers should insist on debugging which shows the high-level language, with breakpoints and single-stepping, because these features are widely available. Also, developers should write and use simple logging facilities to debug sequences of real-time events.

PC or mainframe programmers first encountering this sort of programming often become confused about design priorities and acceptable methods. Mentoring, code-reviews and egoless programming are recommended.

As the complexity of embedded systems grows, higher level tools and operating systems are migrating into machinery where it makes sense. For example, cellphones, personal digital assistants and other consumer computers often need significant software that is purchased or provided by a person other than the manufacturer of the electronics. In these systems, an open programming environment such as Linux, OSGi or Embedded Java is required so that the third-party software provider can sell to a large market.

Most such open environments have a reference design that runs on a personal computer. Much of the software for such systems can be developed on a conventional PC. However, the porting of the open environment to the specialized electronics, and the development of the device drivers for the electronics are usually still the responsibility of a classic embedded software engineer. In some cases, the engineer works for the integrated circuit manufacturer, but there is still such a person somewhere.
[edit]

Operating system

Embedded systems often have no operating system, or a specialized embedded operating system (often a real-time operating system), or the programmer is assigned to port one of these to the new system.
[edit] Start-upAll embedded systems have start-up code. Usually it disables interrupts, sets up the electronics, tests the computer (RAM, CPU and software), and then starts the appl
 

Welcome to EDABoard.com

Sponsor

Back
Top