Skriv ut
Framtidens operativsystem är öppna, eftersom öppen källkod och öppna utvecklingsmiljöer sparar tid och pengar. Det skriver Patrik Lindergren, teknisk chef på Data Respons Sverige.
Under de senaste åren har utvecklingen av nya processor arkitekturer och kretsar gått i rasande tempo och kretstillverkarna har valt att fokusera sin utveckling av drivrutiner och kortutvecklingssatser till de kundgrupper och operativsystem som har högst volym. Detta har lett till att många traditionella operativsystem för inbyggnad har halkat efter när det gäller stöd för nya kretsar och processorer.

Efterfrågan för Linuxstöd från pc- och serversidan har å andra sidan gjort att Linux numera ses som ett allmänt accepterat operativsystem och många kretstillverkare har stöd för Linux framme i samma skede som för andra operativsystem såsom Windows. Vilket förstås är till stor nytta för Embedded Linux.
Linux som operativsystem är mycket flexibelt när det gäller att kunna skala dess storlek efter tilllämpning, vilket lämpar sig mycket bra till både små inbyggda system upp till stora servrar. I grund och botten är det samma källkod mellan de olika tilllämpningarna.

Det som vanligen definerar ett inbyggt system är att det är specifikt för sin uppgift, lätt att underhålla och i vissa fall har begränsad prestanda och minnesutrymme. Det är också vanligt att använda flashminnesteknik för att uppfylla temperaturkrav och livslängd.

Men vad är skillnaden mellan Embedded Linux och Desktop Linux? Det som i grund och botten definerar Linux är själva Linuxkärnan och en Linuxdistribution är en miljö där Linuxkärnan tillsammans med många GNU-mjukvaror har kombinerats till ett komplett operativsystem.

n av de mest populäraste Desktop Linux-distribitionerna är Ubuntu Linux, delvis för att den är lätt att installera för en nybörjare men även för att dess stora mjukvarupaket är baserat på Debian Linux. En standardinstallation av Ubuntu tar ungefär 1 GB, vilket med dagens mått på en kontorsdator med hårddisk inte verkar så stort.

Det är vanligt att ett system med Embeddded Linux består av Linuxkärnan, applikationen Busybox och de specifika applikationerna som behövs för mätning och styrning i tilllämpningen.

Busybox går under smeknamnet ”The Swiss-Army knife of Embedded Linux” och är en universiell applikation som innehåller de flesta kommandon som behövs i ett rootfilsystem. Busybox är en enda binär fil och varje inbyggt kommando är implementerat för att vara prestanda- och minnesoptimerat. Varje inbyggt kommando har en egen symbolisk länk med dessnamn, exempelvis ls, som pekar till själva Busyboxbinären.

För att konfigurera Busybox används ett konfigurationsverktyg som liknar Linuxkärnans egna. Det går att konfigurera varje enskilt kommando och vilka funktioner som de enskilda kommandona skall stödja.

Ett tidigt val i många inbyggnadsprojekt är att kombinera ihop Linuxkärnan med rootfilsystemet till en enda fil. Linux stödjer fler metoder för detta. Den lösning som är att rekommendera och är standard från och med Linuxkärnan version 2.6 kallas initramfs. Fördelen att kombinera ihop rootfilsystemet med Linuxkärnan är att man enbart får en fil att uppdatera på det inbyggda systemet, vilket underlättar mjukvaruhanteringen i fält. Den andra viktiga delen är att unvika ha ett skrivbart rootfilsystem utan enbart eventuellt ha ett extra filsystem för skrivning av loggar och mätdata. Detta medför ett säkrare sätt alltid kunna boota upp systemet och reparera eventuella diskkraschar dynamiskt.

När man tittar på Linuxdistributioner för Embedded Linux, så är dessa mer utvecklingsmiljöer för att bygga målmiljön för det inbyggda systemet. Det vill säga kompilera Linuxkärnan, Busybox, övriga GNU-program och inbyggnadsapplikationerna för målsystemet.

Linuxdistributionen uCLinux började som ett projekt med uppgift att lägga till stöd i standard-Linux för processorarkitekturer som saknade minneshanteringsenhet (MMU, Memory Management Unit). Den första plattformen som uCLinux utvecklades för var processorn Motorola 68328 (Dragonball) och handdatorn PalmPilot.

Sedan dess har utvecklingen kring uCLinux pågått kontinuerligt och idag finns stöd för de flesta processorarkitekturer för inbyggnadsbruk så som Xilinx MicroBlaze, Xscale, Analog Devices Blackfin, Motorola 68xxx/683xx/Coldfire, Atmel ARM, Hitachi SH3/SH4, MIPS, PowerPC, Intel i960 och även traditionella x86-processorer.

Det finns inga hinder att använda uCLinux som distribution och byggmiljö för processorarkitekturer som har MMU. Det vill säga målmiljön kan likaväl vara ett standard Pentium M-baserat ETX-system som en MMU-lös ARM processor.
uCLinux är en komplett distribution som består dels av själva Linuxkärnan, men även byggmiljö för själva rootfilsystemet. Denna miljö innehåller de vanligaste applikationerna som krävs för en inbyggnadsprodukt, såsom Busybox, uClibc, tinylogin, bash, openvpn, mysql, freeswan, dhcp, boa (webserver), ftp, ntp, openssl, python, samba, snmpd, ssh, squid, telnet, tftp, tripwire och zebra.

En typisk tillkämpning baserad på uCLinux kan skalas ner till systemkrav runt 1 MB flashminne och 8 MB RAM primärminne.

Det vanligaste sättet att arbete med uCLinux är att på en värddator ha en uppsättning av korskompilatormiljö baserat på GNU GCC. Denna miljö kan typiskt köras under Linux eller Windows/Cygwin. Denna uppsättning verktyg kan med viss konfiguration integreras med Eclipse-miljön för att få en totalt grafisk IDE för utveckling och debuggning.

OpenEmbedded är en komplett utvecklingsmiljö för att bygga målmiljö för en stor variation av processorplatformar. OpenEmbedded stödjer att bygga flera olika byggen ifrån samma kodbas och hantering av olika releaser och konfigurationer samtidigt. OpenEmbedded härstammar ifrån ett tidigare Linux distributions projekt OpenZaurus vilket var dedikerat till Linux baserade PDA ifrån Sharp vid namn Zaurus.

Buildroot är en utvecklingmiljö som både bygger korskompilatormiljö och målmiljö. Distributionen är baserad på lättviktiga C-bibliotek som libc, uclibc eller dietlibc. Buildroot är helt tänkt för att bygga Embedded Linuxmiljöer för typiska inbyggnadsprocessorer som PowerPC, Mips, Arm eller AVR32, men det går utmärkt att använda buildroot att bygga Embedded Linuxmiljöer även för x86-plattformar. Buildroot har en konfigurationsmiljö som påminner om Linuxkärnans egna konfigurationsverktyg.

uCLinux, OpenEmbedded och buildroot är alla fria Embedded Linuxdistributioner som bedrivs helt som Open Source-projekt, de är gratis att ladda ner och använda oberoende av hur många utvecklare som skall använda byggmiljön samtidigt. Alla dessa miljöer går att anpassa till den egna distributionen baserad på ursprunget och efter egna önskemål.

Eclipse har blivit en de facto-standard inom inbyggnadsbranschen och allt fler verktygstillverkare väljer att gå över och basera sin utvecklingsmiljö på Eclipse-platrformen. Det är inte bara kommersiella Linuxdistributioner som är baserade på Eclipse utan även kretstillverkare som exempelvis Xilinx har valt att basera sitt EDK på Eclipse.

Det som är generellt gemensamt för de olika kommersiella Linuxdistributionerna är att de är kompletta utvecklingsmiljöer med korskompilatorer, editorer och avlusare. Allt är integrerat som egna moduler till Eclipseplatformen med egna konfigurationsgränssnitt integrerat i Eclipsemiljön för Linuxkärnans konfigurationsverktyg och andra komponenter för rootfilsystemet såsom Busybox.

Eftersom många komponenter som används i ett inbyggt system baserat på Linux är fria och går under GPL-licensen behövs ingen körlicens (runtime) för varje instans av system som säljs.

Fördelarna att använda kommersiella utvecklingsmijöer för Linux är möjligheten att få testade och verifierade komponenter för målsystemet. Det ges även möjlighet att få teknisk support och professionell service för framtagning av konstruktionsstöd för nya plattformar.

Licenskostnaden för de olika kommersiella utvecklingsmiljöerna varierar men generellt är kostnaden baserad per utvecklare och enligt någon form av prenumerationsmodell per år.

Linux är ett helt öppet operativsystem och oavsett vilken utvecklingsmiljö som används för Embedded Linux så är oftast slutresultat detsamma och vinsterna med att använda ett öppet operativsystem är lika stora.
Det stora värdet av att använda Linux som operativsystem är inte enbart att det generellt är fritt ifrån royaltykostnad utan även den gemensamma utvecklingen som sker via olika Open Source-projekt. Det finns oftast fler människor som sitter med liknande utmaningar framför sig.

Linux är ett operativsystem som har som huvudfokus att mogna och det gör att man fäster stor vikt vid att behålla externa mjukvarugränssnitt, medan de interna gränssnitten i kärnan kan skrivas om helt. Ett praktiskt exempel är USB-stacken som har skrivits om helt vid tre tillfällen för att stödja nya funktioner eller förbättra prestanda. Detta har gjort att Linux USB-stack numera är den snabbaste på marknaden.

Så om du inte ännu tagit del av fördelarna med Linux, så kanske det är dags så snart du har ett projekt med snäv tidsram och budget!

Kategori: Expertartikel