• Inbyggda system beskrivs ibland lite slarvigt som bordsdatorer fast utan bildskärm. Systemet - eller målsystemet som det ofta kallas - kan vara i princip vad som helst: en brödrost, en mobiltelefon eller en bil. Den gemensamma nämnare är ett de innehåller en styrenhet - allt från en enkel 4- bitars styrkrets till parallella 64-bitars processorer - som styrs av program precis som alla andra datorer. De har även minne och in-och-ut-enheter. Men för programutvecklaren är det en helt annan sak att skriva kod för ett inbyggt system jämfört med en persondator. Det mest påtagliga är att man inte kan använda målsystemet som utvecklingsplattform. En annan skillnad är att målsystemet ofta har realtidskrav, minnet är litet och man måste snåla med effekten.
• Källkoden skrivs i en vanlig redigerare eller med hjälp av ett Caseverktyg, där man beskriver de önskade funktionerna grafiskt. Koden kompileras sedan med en korskompilator som genererar maskinkod för den aktuella processorn eller styrkretsen. De är främst dessa hjälpmedel som påverkar systemets prestanda och minnesbehov. Men prestanda är inte allt - produkten ska nå marknaden i tid också. Och här spelar realtidsoperativsystem och felsökningsverktyg nyckelroller.
• Ett realtidsoperativsystem gör att programmeraren slipper lägga krut på grundläggande funktioner som schemaläggning, minnes- och avbrottshantering, prioritering och synkronisering. Ett väl definierat gränssnitt gör det även enklare att underhålla och vidareutveckla koden.
• Felsökning - debugging - brukar utpekas som den största tidsslukaren i många projekt. Och att hitta fel i programkod som exekveras i en tvättmaskin är av naturliga skäl vanskligare än att felsöka ett traditionellt PC-program. Därför finns det ett antal specialmetoder för att felsöka inbyggda system, exempelvis ROM-monitorer och emulatorer.
• En ROM-monitor är en extra kodsnutt som läggs till tillämpningsprogrammet. Monitorn kommunicerar sedan med ett felsökningshjälpmedel som körs på utvecklingsplattformen - arbetsstationen eller persondatorn. Haken är att man slösar minne och behöver en extra kommunikationskrets. Och om programvaran havererar totalt kan även monitorn krascha.
• Då är en emulator, ICE - In-Circuit Emulator, ett kraftfullare alternativ. Emulatorn är ett instrument som ansluts istället för processorn i det inbyggda systemet och tar över processorns arbetsuppgifter. Programmeraren kan då analysera hur programvaran och maskinvaran fungerar ihop och man har tillgång till ett stort antal felsökningsfinesser. n Vissa processorer innehåller även speciella felsökningskärnor, som gör att emulatorn lättare kan komma åt register och sätta brytpunkter. I andra processorer utnyttjar man JTAG-porten. Fenomenet kallas ibland ICD - In-Circuit Debugger.
• Man ska inte heller förakta de traditionella utvärderingskorten, som man kan komma långt med. Åtminstone om tillämpningen och styrkretsen inte är alltför avancerade.
• Vissa leverantörer erbjuder även ramverk - frameworks - som knyter samman de olika konstruktions- och felsökningsverktygen. Programutvecklaren får på så vis en heltäckande miljö.