Lättare att använda öppen källkod för inbyggnadssystem
Allt fler vill använda öppen källkod och standardiserade gränssnitt för inbyggnadssystem. Samtidigt ökar kraven på kort utvecklingstid. Chris Young från Silica beskriver här hur Yocto-kompatibel Linux, Eclipsebaserad utvecklingsmiljö och färdiga prototypkort kan användas för att snabbt få fram en fungerande produkt.
I takt med att inbyggnadssystem blivit allt mer komplexa har nyckelfaktorn för att förutse utvecklingshastigheten hos ett projekt ändrats. Det har blivit betydligt viktigare att ha tillgänglighet till prisvärda, fullt funktionella utvecklingskort som stöds av ett komplett ekosystem med mjukvaror och kvalitativ teknisk support. För tio år sedan var det möjligt för hårdvaruleverantörer att tillhandahålla enkla utvecklingspaket för mikrokontrollers och inbyggda processorer med endast begränsad tillgång till mjukvarustöd. Vanligtvis var storleken på en kunds applikation inte större än att de kunde utveckla all mjukvara i egen regi.
Mycket måste integreras
Idag gör kraven på kommunikation, användargränssnitt och fjärrhantering i moderna tillämpningar det extremt svårt för utvecklare av inbyggnadssystem att implementera en produkt med endast sin egen mjukvaruexpertis. Mycket måste integreras från olika källor, men det skapar i sin tur merarbete eftersom utvecklarna måste lära sig hur mjukvarukomponenterna passar ihop och hur dessa element ska anpassas för att åstadkomma integrationen. Således ställs det krav på plattformar att tillhandahålla nödvändig infrastruktur i en användarvänlig form.
Användandet av öppen källkod är ett svar på denna utmaning. Det erbjuder en rad möjligheter för utvecklare inom området för inbyggnadssystem, men kommer verkligen till sin rätt då det kombineras med en strategi som är utvecklad för att tätt koppla mjukvaran till ett brett utbud av hårdvarualternativ. Nyckeln till denna integration är utvecklingen av plattformar med öppen källkod runt operativsystemet Linux.
Skalbar Linux
Linux erbjuder en hög grad av skalbarhet tillsammans med en snabbt växande mjukvaruinfrastruktur som produkttillverkare kan utnyttja för konstruktionsutveckling, intrimning och avlusning i syfte att snabbt få ut sina produkter på marknaden. Det finns verktyg baserade på öppen källkod tillgängliga som tillhandahåller stöd inte bara för kodunderhåll och versionshantering utan även för utveckling av grafikgränssnitt för det växande antalet inbyggnadssystem som nu kräver avancerade användargränssnitt baserat på tekniker av typen kapacitiva pekskärmar.
Linux-miljön är dock komplex. Det finns ett stort antal distributioner tillgängliga som inte är fullt kompatibla med varandra även om de erbjuder liknande funktioner och möjligheter. Det gör det svårare att flytta från en plattform till en annan i syfte att dra fördel av andra plattformars användbara funktioner i specifika produkter. Utvecklaren av inbyggnadssystem står också inför utmaningen att försöka konstruera om något som från början var avsett för stationära datorer och serveromgivningar till potentiellt mer begränsande exekveringsplattformar. Att trimma en distribution så att den exempelvis passar för ett displaylöst system, eller för ett minnesbegränsat system som måste rymmas i ett litet flashminne, kan bli en krävande uppgift.
Yocto
Yocto-projektet grundades 2010 av en grupp företag inom branschen för inbyggd hårdvara och mjukvara som en lösning på de problem som orsakats av Linux tilltagande fragmentering inom området för inbyggnadssystem. Istället för att tillhandahålla en enda komplett distribution som kan vara svår att trimma för det breda utbud av plattformskrav som är vanliga för inbyggnadssystem så stöder Yocto anpassningen genom en modulär, skiktad arkitektur som tagits fram för att minimera inkompatibiliteter mellan olika konfigurationer.
Fig 1. Yocto-projektets utvecklingsflöde (klicka för större bild )
Källa: Yocto Project Quick Start Copyright © 2010-2014 Linux Foundation
Nyckeln till Yoctos konfigurerbarhet finns i verktyget BitBake, ett projektbyggnadsverktyg som använder en uppsättning metadata-filer för att konfigurera inte bara Linux-kärnan utan även systemet och tillhörande applikationsmjukvara till en slutlig image-fil för systemet. BitBake hanterar alla byggsteg baserat på definitioner utvecklaren tillhandahåller, vilka definierar de olika konfigurationsalternativen och beroendeförhållandena. Genom noggrann styrning av metadata och genom att dra fördel av den skiktade arkitekturen är det möjligt att flytta från en hårdvaruplattform till en annan med obetydligt mer arbete än en enkel omkompilering. Olika hårdvaruberoende förändringar, som byte från en nätverksadapter till en annan eller byte till en annan sorts processor, tas om hand av kompilatorn och byggnadsverktyg genom att referera till de relevanta hårdvaruberoende meta-lagren.
Andra plattformar tvingar ofta utvecklarna att utföra storskaliga omskrivningar av koden till sina inbyggda produkter vid byte av processorer och hårdvaruplattformar. Med en Yocto-baserad infrastruktur kan övergången vara så enkel som att lägga till en kodrad som specificerar relevant BSP (Board Support Package).
Qt ökar flyttbarheten
Genom att använda applikationsramverk som Qt är det möjligt att utöka flyttbarheten ännu längre. Exempelvis kan en stor del av applikationsutvecklingen utföras på en stationär dator och med minimala kodändringar överföras direkt till ett inbyggnadssystem som kör Qt. Det öppnar för att prototyper av användargränssnittet kan byggas i en stor utsträckning redan innan den slutliga hårdvaran är klar.
Det är dock långt ifrån enkelt att bygga en Yocto-baserad infrastruktur som stöder enkel flyttbarhet och integration. Valmöjligheterna i BitBake är omfattande och Yocto har en brant inlärningskurva för de som vill skapa plattformsdefinitioner. Även om en välkonstruerad kombination av BSP:er och metadata kan minimera arbetet med att flytta mellan hårdvaruplattformar är det ofta svårt och tidskrävande att utveckla en arkitektur som håller vad den lovar, även för utvecklare som är väl insatta i de grundläggande alternativen. Yocto-miljön kräver dessutom att en Linux-värd används för utveckling och korskompilering, vilken kanske inte finns tillgänglig för de som arbetar i en Windows-miljö.
Fig 2. Silicas ArchiTech Tibidado-kort
VirtualBox
Ett alternativ som Silica erbjuder som en del av sin ArchiTech-strategi är att använda en virtuell maskin baserad på VirtualBox-teknologi för att tillhandahålla en förkonfigurerad utvecklingsmiljö för Yocto på en standarddator och på så sätt kan ett stort antal utvecklare av inbyggnadssystem ta del av fördelarna. Ekosystemet inkluderar en uppsättning utvecklingskort som tagits fram i samarbete med leverantörer av processorer, mikrokontrollers, FPGA:er och viktiga periferikretsar för exempelvis analoga in och utsignaler samt trådlös kommunikation.
I motsats till de utvecklingskort för mikrokontrollers avsedda för generellt användande som vanligen erbjuds av halvledartillverkare erbjuder detta tillvägagångssätt speciella kort som är välanpassade till specifika applikationer och löser många av de problem runt konstruktion och integration som kunden möter när mjukvaru- och hårdvaruutveckling framskrider mot den färdiga produkten. Projektexempel sträcker sig från utveckling för RFID- och NFC till tillämpningar för imbyggnadsvideo och industriell anslutning. Övriga radiostandarder som stöds inkluderar WiFi och IEEE802.15.4.
Yocto tillhandahåller en mycket effektiv mjukvaruinfrastruktur för sådana hårdvaruplattformar och klarar enkelt av plattformsförändringar genom de meta-lager som används i Yocto-byggverktygen. Dessutom kan det slutliga inbyggnadssystemets image-fil skräddarsys och trimmas med hjälp av Hob-verktyget, ett grafiskt användargränssnitt som gör det enklare för användaren att välja vilka Linuxpaket som ska byggas in i målfilen.
Utvecklingsmiljö under Eclipse
Yocto är dock inte en komplett utvecklingslösning för inbyggda system eftersom det saknar en integrerad utvecklingsmiljö (IDE, Integrated Design Environment). Här behövs en annan öppen källkodslösning, nämligen Eclipse. Eclipse är en fullt grafisk integrerad utvecklingsmiljö baserad på plugin-lösningar som gör det möjligt för utvecklare att bygga en skräddarsydd plattform för mjukvaruutveckling och test.. Tillsammans förbättrar Eclipse och Yocto konstruktionseffektiviteten och låter ingenjörerna fokusera på en gemensam samling kärnverktyg istället för att behöva lära sig olika aspekter av Linux-distributioner runt deras tillhörande verktyg allteftersom deras behov förändras.
Fig 3. Yocto-plugin för Eclipse-integrerad utvecklingsomgivning (klicka för större bild )
Som en omfattande utvecklingsmiljö innefattande prisvärda hårdvaruplattformar, verktyg och mjukvaror som kan adressera många olika tillämpningar, kan SILICA genom Architech erbjuda en innovativ och högeffektiv modell för att långsiktigt stöda sina kunder. Kombinationen av specialiserad hårdvara utvecklad i samarbete med ledande halvledartillverkare, en känd Linux-distribution som stöds internt av SILICA-ingenjörer, stark teknisk support och omfattande träning för produktutvecklande ingenjörer tar inbyggnadsutveckling till nästa nivå i termer av att snabbt komma igång samt säkerställa ett smidigt och snabbt projektgenomförande.
Chris Young, Software Enablement Engineer SILICA
Filed under: Embedded