Indlejret system
Et indlejret system er en computer, der er bygget til at løse nogle få meget specifikke problemer og ikke er let at ændre. Ordet "indlejret" betyder, at den er indbygget i systemet. Den er en permanent del af et større system. Det ligner normalt ikke en computer, ofte uden tastatur, skærm eller mus. Men som enhver anden computer har den en processor og software, input og output.
F.eks. fortæller controlleren i en elevator motoren, at den skal flytte elevatoren til forskellige etager på baggrund af knapper, der trykkes på. En dekoder er indbygget i en satellit-tv-set-top-boks (kaldet STB) for at læse et signal fra parabolen og sende noget, som et tv forstår. Ofte skal denne type system udføre sit arbejde inden for en bestemt tidsperiode. Dette kaldes realtidsdatabehandling. Hvis en set-top-boks blev afbrudt for at udføre en anden opgave, ville du f.eks. se et dårligt billede på tv'et. En computer til generelle formål vil ofte have korte pauser, mens den laver noget andet, det er ikke realtid.
Indlejrede systemer styrer mange af de almindelige enheder, der anvendes i dag, f.eks. kortlæsere i hoteldørlåse eller flere ting i en bil. De kan styre små ting som en MP3-afspiller eller et digitalkamera og store ting som trafiklysanlæg, flyvemaskiner eller samlebånd på en fabrik.
Billede af det indre af et ADSL-modem/router. Et moderne eksempel på et indlejret system. De markerede dele omfatter en mikroprocessor (4), RAM (6) og flash-hukommelse (7).
Eksempler på indlejrede systemer
Indlejrede systemer anvendes i mange former for elektrisk udstyr, herunder:
- Telekommunikationssystemer bruger dem til telefoner, mobiltelefonnetværk og wi-fi-routere.
- Forbrugerelektronik omfatter radio- og tv-modtagere, MP3-afspillere, mobiltelefoner, videospilkonsoller, digitalkameraer, DVD-afspillere, GPS-modtagere, sikkerhedssystemer til hjemmet og printere.
- Husholdningsapparater som f.eks. mikrobølgeovne, vaskemaskiner, tyverialarmer og opvaskemaskiner har indbyggede systemer.
- Transportsektoren bruger indlejrede systemer til alt fra lokomotiver til tog, fly og biler.
- Industrien anvender elmotorer med elektroniske styringer, kortlæsere og CNC-maskiner, der automatisk fremstiller metaldele.
- Medicinsk udstyr som defibrillatorer, automatiserede blodtryksmålere og automatiserede insulinpumper.
- Militært udstyr, som walkie-talkies, satellitter og styresystemer til missiler.
Fælles træk
- Indlejrede systemer er designet til at udføre en specifik opgave, i modsætning til computere til generelle formål.
- Den ligner ikke en computer - der er måske ikke en fuld skærm eller et tastatur.
- Mange indlejrede systemer skal kunne gøre ting i realtid - på kort tid (næsten øjeblikkeligt set fra et menneskes synspunkt).
- Mange indlejrede systemer skal være meget sikre og pålidelige, især i forbindelse med medicinsk udstyr eller flyelektronik til styring af fly.
- Starter meget hurtigt. Folk ønsker ikke at vente et minut eller to på, at deres bil starter eller at deres nødudstyr starter.
- Den kan bruge et særligt operativsystem (eller nogle gange et meget lille hjemmelavet operativsystem), som hjælper med at opfylde disse krav, kaldet et realtidsoperativsystem eller RTOS.
- De programinstruktioner, der er skrevet til indlejrede systemer, kaldes firmware og lagres i skrivebeskyttet hukommelse eller flash-hukommelseschips. De kører med begrænsede computerhardwareressourcer: lidt hukommelse, lille eller ikke-eksisterende tastatur og/eller skærm.
Indlejrede systemer er ikke altid selvstændige enheder. Nogle gange er de bygget som et sæt, som f.eks. de forskellige dele i en bil - radioen, gashåndtaget, forureningskontrollen osv. Nogle gange kan de kommunikere med internettet eller et mobiltelefonnetværk, og de kan have en USB-læser eller andre tilslutninger.
Brugergrænseflader
Indlejrede systemer spænder fra ingen brugergrænseflade overhovedet - kun afsendelse og modtagelse af elektriske signaler - til en fuld grafisk brugergrænseflade som på en moderne computer. Ofte har de nogle få trykknapper og et lille display og nogle lysdioder. Et mere komplekst system kan have en berøringsskærm, så knappernes betydning kan ændres med hver skærm, som det er tilfældet i smartphones.
Et eksempel på en brugergrænseflade med knapper og et simpelt LCD-display.
Hardware
Hardware omfatter chips, ledninger, printplader, knapper og displays.
CPU'er
Den vigtigste chip er den centrale procesenhed (CPU). Denne kører softwareinstruktionerne. Det kan være en standardmikroprocessor eller en mikrocontroller. Mikrocontrollere omfatter mikroprocessoren samt simpelt periferiudstyr, så systemet kan blive mindre og billigere. De har mindre fleksibilitet, fordi disse dele ikke kan ændres. Normalt omfatter disse dele Flash-hukommelse og understøttelse af serielle porte, USB osv.
I modsætning til en mikroprocessor til en universalcomputer er det ikke altid bedre at være større og hurtigere. Mange indlejrede processorer er meget små. Nogle gange er det for at bruge mindre plads eller mindre strøm, andre gange er det for at være billigere. Almindelige computere anvender mikroprocessorer, der læser 32-bit eller 64-bit ord og kører med hastigheder målt i GHz, men indlejrede processorer har normalt 4 til 32 bits og kører med hastigheder, der normalt måles i titusindvis af MHz (hundrede gange langsommere). (Men programmerne er også mindre og kontrollerer ikke ting, der ikke bruges).
Færdige computerkort
Der findes "færdige" computerkort, som kan bruges i nogle indlejrede systemer. Disse bruger ofte Windows CE, Linux, NetBSD eller et indlejret realtidsoperativsystem.
Nogle gange kan det være nemmere at bruge et printkort, der allerede er fremstillet. Disse har normalt mange komponenter til fælles med almindelige computere, men er mindre end et printkort i en almindelig computer. Kort som f.eks. VIA EPIA kan køre Microsoft Windows. Fordelen er, at man sparer noget tid til elektroteknik og kan bruge de samme softwareudviklingsværktøjer, som anvendes til softwareudvikling af pc-typen. Eksempler på sådanne indlejrede enheder er pengeautomater eller skærme i kasinoer. Dette fungerer godt, hvis realtidskravene ikke er særlig strenge (det betyder ikke så meget, om et job f.eks. tager otte sekunder i stedet for fem).
ASIC- og FPGA-løsninger
Hvis enheden skal være meget lille eller skal sælges i meget store mængder ("high-volume"), giver det mening at lave en specialfremstillet eller specialiseret chip, der gør præcis det, der er brug for. Der er tale om et system på en chip (SoC), som indeholder et komplet system - processor, floating point-enhed, hukommelsescache og grænseflader på et enkelt integreret kredsløb. SoC'er kan fremstilles som et applikationsspecifikt integreret kredsløb (ASIC) eller ved hjælp af en FPGA (field-programmable gate array), som programmeres af de personer, der bygger det indlejrede system.
Perifere enheder
Indlejrede systemer taler med omverdenen eller andre komponenter ved hjælp af periferiudstyr som f.eks:
- Serielle porte: RS-232, RS-422, RS-485. Dette var tidligere ret almindeligt med 9-pin (eller større) stik.
- Synkron seriel kommunikationsgrænseflade: I²C Inter-integreret kredsløb, I²S Inter-integreret lyd, SPI, MIcrowire, ...
- Universal Serial Bus (USB).
- Netværk: Ethernet, Controller Area Network, LonWorks, ...
- Diskret indgang/udgang: Ind- og udgange til generelle formål (GPIO). Dette kan være en enkelt ledning med et on/off-signal. Den kan bruges til et lille tastatur eller til at tænde en LED.
- Analog til digital/digital til analog konverter (ADC/DAC). Dette måler noget, der ændrer styrke, som f.eks. en lyssensor eller en motorstyring.
- Fejlfinding: JTAG, ICSP-port, til softwareingeniører.
Soekris net4801, et indlejret system, der er rettet mod netværksapplikationer.
Software
Operativsystemer
Indlejrede systemer har ofte ikke brug for et komplet styresystem. Nogle bruger specielt udviklede små og enkle operativsystemer, der starter meget hurtigt, mens andre slet ikke har brug for et operativsystem. Indlejrede systemer tilpasses ikke så let, men de er bygget til at udføre deres opgaver meget mere pålideligt. Fordi hardwaren er enklere, er den også ofte billigere at bygge og kører hurtigere.
I modsætning hertil skal en computer til generelle formål være klar til at modtage nye enhedsdrivere og software til at køre hardware, som den endnu ikke kender, f.eks. nye printere eller harddiske. Den skal kunne køre forskellige applikationsprogrammer.
Efterhånden som indlejrede systemer bliver større, bliver ting, som tidligere kun fandtes på almindelige computere eller endog mainframes, nu almindelige på indlejrede systemer. Det gælder bl.a. beskyttet hukommelsesplads og åbne programmeringsmiljøer, herunder Linux, NetBSD osv.
Nogle eksempler på styresystemer, fra enkle til komplekse:
- Simpel kontrolsløjfe - En timer og en sløjfe bruges til at kalde forskellige underprogrammer gentagne gange. Dette laves ofte af én person til mindre systemer.
- afbrydelsesstyret - Opgaverne startes af forskellige slags begivenheder. Hændelsen kan være tidsbestemt (f.eks. hvert tiende sekund) eller et tryk på en knap eller modtagne data.
- nonpreemptive multitasking - Hver opgave får sin tur til at køre, og når den er færdig, kalder den en scheduler i operativsystemet for at køre den næste opgave.
- præemptiv multitasking eller multi-threading - En opgave kan stoppes efter et vist tidsrum for at lade en anden opgave køre i et stykke tid. Ingen opgave kan beslaglægge systemet. På dette niveau anses systemet for at have en "operativsystem"-kerne og kan køre opgaver parallelt. Denne type operativsystem købes normalt fra et firma, der kun arbejder med indlejrede operativsystemer.
Realtidsoperativsystemer omfatter produkter som MicroC/OS-II, Green Hills INTEGRITY, QNX eller VxWorks. I modsætning til MacOS eller Windows 7 er disse styresystemer ikke særlig kendt af de fleste mennesker. Men de anvendes mange steder, hvor tid og sikkerhed er meget vigtige. Folk bruger dem hver dag og er ikke klar over det.
Almindelige eksempler på større kerner er Embedded Linux og Windows CE. Selv om disse kerner ikke har de stramme tidsgrænser, der er nødvendige for et strengt realtidssystem, bliver de mere og mere almindelige, især i forbindelse med mere kraftfulde enheder som f.eks. trådløse routere og GPS'er. De giver mulighed for at genbruge kode i det offentlige domæne til enhedsdrivere, webservere, firewalls og anden kode. Softwareudviklere, der er mere fortrolige med at skrive programmer til pc'er, vil også finde dette mere velkendt. Om nødvendigt kan der anvendes en FPGA eller anden specialhardware til ting, der kræver stramme tidsgrænser.
Værktøj
Ligesom anden software bruger designere af indlejrede systemer compilere, assemblere og debuggere til at udvikle software til indlejrede systemer. De kan dog også bruge nogle mere specifikke værktøjer:
- For systemer, der anvender digital signalbehandling, kan udviklerne bruge matematiske værktøjer som MATLAB, MathCad eller Mathematica.
- Der kan anvendes tilpassede kompilatorer og linkere for at forbedre optimeringen til den pågældende hardware.
- Et indlejret system kan have sit eget specielle sprog eller designværktøj eller tilføje forbedringer til et eksisterende sprog som det, der anvendes af Basic Stamp.
Debugging-værktøjer:
- En in-circuit debugger (ICD), en hardwareenhed, der forbindes til mikroprocessoren via en JTAG-grænseflade. Den starter og stopper mikroprocessoren udefra, mens den kører softwaren. Den gør det også muligt at læse hukommelse og registre og at lagre softwareprogrammet i hukommelsen.
- Ekstern fejlfinding ved hjælp af logning eller seriel portudgang til at spore driften ved hjælp af enten en blinkende monitor (printfs).
- Interaktiv resident debugging - hvis operativsystemet understøtter det, er dette en shell på den indbyggede processor, der kører kommandoer, som udvikleren skriver (f.eks. Linux).
- En in-circuit-emulator erstatter mikroprocessoren på kortet og giver fuld kontrol over alt det, som mikroprocessoren kunne gøre.
- En komplet emulator simulerer alle hardwarens funktioner og gør det muligt at kontrollere og ændre alt. Hardwaren eksisterer ikke i virkeligheden, men en foregivende version af den (en "virtuel" maskine) findes på en normal pc.
- Kontrol af eksterne linjer med en logikanalysator eller et multimeter.
Medmindre det er begrænset til ekstern fejlfinding, kan programmøren typisk indlæse og køre software via værktøjerne, se den kode, der kører i processoren, og starte eller stoppe dens drift. Visningen af koden kan være som samlekode eller kildekode. Nogle integrerede systemer (som VxWorks eller Green Hills) har særlige funktioner, f.eks. at holde styr på, hvor meget plads softwaren tager, mens den kører, hvilke opgaver der kører, og hvornår tingene sker.
Afhængigt af hvilken slags indlejret system der laves, vil det påvirke, hvordan det kan debugges. F.eks. er fejlsøgning af et system med en enkelt mikroprocessor anderledes end fejlsøgning af et system, hvor behandlingen også foregår på en perifer (DSP, FPGA, co-processor).
Sikkerhed og pålidelighed
Indlejrede systemer er ofte indbygget i maskiner, der forventes at køre i årevis uden fejl og i nogle tilfælde at genoprette sig selv, hvis der opstår en fejl. Det betyder, at softwaren normalt udvikles og testes mere omhyggeligt end softwaren til pc'er, og at upålidelige mekaniske bevægelige dele som f.eks. diskdrev og ventilatorer undgås.
Steder, hvor sikkerhed og pålidelighed er vigtige:
- Nogle systemer kan ikke uden risiko lukkes ned for reparation, eller det er for vanskeligt at reparere dem. Det gælder f.eks. rumfartssystemer (satellitter, rovere), kabler under havet og styring af kernekraftværker.
- Systemet kan dræbe mennesker, hvis det svigter, som f.eks. flykontrol, kontrol af kemiske fabrikker, togsignaler og hjertedefibrillatorer.
- Systemet vil miste store beløb, hvis det lukkes ned, eller hvis der sker en fejl: Telefonkontakter, fabriksstyringer, kasseapparater, pengeautomater.
Måder at genoprette fejl - både softwarefejl som f.eks. hukommelseslækager og bløde fejl i hardwaren:
- Watchdog-timer, der genstarter det indlejrede system, hvis noget holder op med at fungere.
- Dobbeltdele, hvor et system kan tage over, hvis et andet holder op med at fungere.
- Software "limp modes", der giver delvis funktion.
- Immunitetsbevidst programmering
Relaterede sider
- Mikroprocessor
- Programmeringssprog
- Firmware
- Realtidsoperativsystem
Spørgsmål og svar
Spørgsmål: Hvad er et indlejret system?
A: Et indlejret system er en computer, der er bygget til at løse specifikke problemer og ikke er let at ændre.
Q: Hvordan adskiller et indlejret system sig fra en computer til generelle formål?
A: Et indlejret system har normalt ikke noget tastatur, skærm eller mus og har specialiserede funktioner. En computer til generelle formål kan udføre en lang række opgaver.
Spørgsmål: Hvad er nogle eksempler på indlejrede systemer?
A: Eksempler på indlejrede systemer er elevatorstyringer, set-top bokse, kortlæsere i hoteldørlåse, trafiklysanlæg, flyvemaskiner og samlebånd i fabrikker.
Spørgsmål: Hvad er realtidsdatabehandling?
A: Realtidsberegning er, når et indlejret system skal udføre sit arbejde inden for et bestemt tidsrum. Hvis det bliver afbrudt, kan det medføre problemer som f.eks. dårlig billedkvalitet på et tv.
Spørgsmål: Hvad er komponenterne i et indlejret system?
Svar: Som enhver computer har et indlejret system en processor, software, input og output.
Spørgsmål: Hvilke opgaver kan et indlejret system kontrollere?
Svar: Et indlejret system kan styre små enheder som MP3-afspillere eller digitalkameraer eller større systemer som trafiklys eller flyvemaskiner.
Spørgsmål: Hvad betyder udtrykket "indlejret" i forbindelse med indlejrede systemer?
A: Udtrykket "indlejret" betyder, at computeren er indbygget i et større system og ikke er let at ændre.