Posts Tagged ‘embedded conference scandinavia’

Anteckningar från Embedded Conference Scandinavia 2011

oktober 14, 2011

Förra veckan besökte jag Embedded Conference Scandinavia, den bästa konferens rörande inbyggda system i landet. (iallafall som jag känner till, tips mottages gärna)

Det stora i år var multi-core-system och till en mindre del öppen källkod. Bland utställarna fanns i år ett par leverantörer av testsystem, vilka var relativt intressanta.

Could software benefit from migrating to a multicore platform (David Stewart, CriticalBlue)
Enligt undersökningar förväntar sig mer än 50% av utvecklare av inbyggda system att migrera till en fler-kärning plattform under 2012, vilket kan leda till problem eftersom väldigt få saknar kunskaperna som krävs. Anledningen till att byta till en fler-kärnig plattform är att ordentligt skrivna program kan vinna en hel del i prestanda utan allt för mycket arbete. På grund av kunskapsbristen är det viktigt att migreringen planeras noga, nuvarande plattform utvärderas för att avgöra vilka delar som skulle gagnas av en övergång till flera kärnor samt vilka svårigheter som kan uppstå. Dessutom måste personalen utbildas för att kunna bygga och underhålla applikationer som utnyttjar den nya plattformen på ett bra sätt.

Tackling software reliability on Multiprocessor architectures (Gwyn Fisher, Clocwork)
Migreringen till en fler-kärning plattform är kostsam, ett projekt som är tänkt att köra på flera kärnor kan kosta upp till 450% av ett sekventiellt program. Validering utgör en stor del av de ökade kostnaderna. För att komma undan de största utgifterna bör man planera projektet noggrant, utbilda både utvecklare och testare samt investera i verktyg för att underlätta arbetet.

Open source revision control – A usecase approach (Anders Musikka, Prevas)
Anders lade fram en intressant metod när revisionshanteringssystem skall väljas som går ut på att man utvärderar verktygen efter de tänkta arbetsfallen, t.ex. check out, branch, merge, etc.
De exempel som visades använde git och visade bland annat den intressanta funktionen bisect som ger användaren möjlighet att automatiskt söka efter när t.ex regresioner i tidigare revisioner introducerades i kodbasen.
Buildsystemet tup demonstrerades också, och det verkar vara ett litet intressant verktyg. Tup‘s styrka är att det är väldigt snabbt på att kontrollera vilka filer som har uppdaterats.

Beyond Virtulization: A comprehensive approach (Förlorat namn, Montavista)
Montavista presenterade ett antal intressanta lösningar för viritualisering i inbyggda system. Det mest intressanta de presenterade var Containers, som kan ses som minimala lätta virutaliserings gränssnitt. En av fördelarna med detta är ett varje container får tillgång till vissa delar av filsystemet, eget skyddat minne samt kan ha direkt kontakt med I/O-enheter.
En annan intressant teknologi som presenterades var Bare metal engine, ett system som låter applikationer gå förbi linux-kärnan och ha direkt access till hårdvaran. Ifall detta är en bra idé låter jag vara osagt, men det är definitivt imponerande.

Open Embedded – the build framework for embedded linux (Anders Törnquist, SWICO)
För större linux-system behövs ett ramverk för att hantera byggproceduren så som Open Embedded. Andra byggsystem för inbyggda system är t.ex. gentoo och buildroot. Fördelen med Open Embedded är att den stödjer väldigt mycket hårdvara, har en stor paket-databas, har en aktiv utvecklar-krets samt att det är deterministiskt. Nackdelarna med systemet är att det tar lång tid att göra ett en komplett kompilering och märker inte av förändringar inom paket. Systemet påminner väldigt mycket om gentoo’s emberge enligt min åsikt.

Efficient Safety Critical Systems Development, is FLOSS the only answer? (Michaël Freiss)
FLOSS (free libre open source software) innebär mjukvara som är fri att köra, läsa källkoden, modifiera och redistribuera, men som fortfarande är skyddad av Copyright. I applikationer som kräver att källkoden verifieras och säkerhetsklassas på något sätt kan FLOSS vara enklare att använda eftersom man inte är beroende av att tvinga en tredje part att certifiera sin källkod utan kan certifiera den kod man använder. Dessutom kan företag samarbeta för att se till att källkod är kontinuerligt certifierad. Open-do är ett projekt för att åstadkomma detta.

OpenRISC: Open source CPU support in Linux 3.1 (Jonas Bonn, South Pole consulting)
OpenRISC-arkitekturen är en öppen implementation av en RISC-processor (med instruktions-uppsättning kompatibel med RISC, mmu, cache etc.). Dagens implementation stödjer 32-bitars arkitektur men specifikationen innehåller även beskrivning av en 64-bitars variant. Den användbara implementationen heter OR1200 och är implementerad i en FPGA, den här implementationen kan köras i ca. 25 – 50 MHz. ÅAC arbetar med en ASIC-implementation. Från och med linux kernel 3.1 finns det stöd för OpenRISC, tidigare var man tvungen att använda en serie OpenRISC-patchar. I princip är det endast hårdvarugränssnittet som skiljer (startup-kod, memory mangement, avbrott m.m.). Vill man bidra finns det gott om saker att göra, t.ex. skriva periferi-enheter i verilog, test och caching-algoritmer.

Optoelectronics – eyes of the system (Todd Bishop, TAOS)
TAOS presenterade sina intelligenta ljussensorer, och med intelligenta menas digitalt gränssnitt. Fördelen med detta är att kalibreringsarbete undviks samt att inläsning av mätdata är enkelt, nackdelen är att priset är högre och systemet blir en aning mindre flexibelt.
Lite information om optosensorer:

  • Kisel-baserade sensorer kan detektera våglängder upp till 1100 nm
  • photoresistorer svarar på ljus på ungefär samma sätt som det mänskliga ögat men har långsam svarstid och innehåller kadmium.
  • Fotodioder har ett linjärt svar, låg brus-nivå och reagerar snabbt men har en väldigt låg signalstyrka och måste förstärkas.
  • Fototransistorer är väldigt ljuskänsliga och har en relativt snabb svarstid men är temperaturkänslig och icke-linjär.

Wireless sensing (Daniele Rezzonico, Sensirion)
Det här seminariet handlade nästan inte alls om det rubriken sa utan om fuktsensorer .

How to improve model-based development efficiency by reducing test components (Jimmy Adolph, NI)
Istället för att förespråka LabView som National Instruments brukar göra. utan förespråkade istället en modell-baserad utveckling där precessen ser ut som följer
Mjukvaromodell testas mot hårdvarumodell
Verklig mjukvara testas mot hårdvarumodell
Mjukvaromodell testas mot verklig hårdvara
Verklig mjukvara testas mot verklig hårdvara
Denna process har fördelen att testmodeller återanvänds i hela utvecklingsprocessen och ger utvecklare och testare möjlighet att enkelt spåra fel.

Designing advanced DSP applications on Cortex-M4 (Anders Lundgren & Lotta Frimanson, IAR)
Cortex M4 bygger på Cortex M3 men har också en FPU och SIMD-utbyggnader (för kommunikation med FPU-delen som jag förstod det hela). M4 stödjer bl.a mättade instruktioner (dvs funktioner som inte kan generera overflow). Fördelen med att använda Cortex-processorer är att portning mellan olika leverantörer är relativt enkelt tack vare samarbetet CMSIS. Specifika fördelar med M4-varianten är bl.a dess debugging-funktionalitet (set/clear memory samt breakpoints medan processorn kör, trace samt funktions-profiling genom att sampla program-räknaren under körning)

Improving support for modeling and simulation of cyber-physical systems (Walid Taha, Halmstad Universitet)
Acumen är ett språk för att simulera fysiska system som innefattar logik på ett smidigt sätt. Exemplet som gavs under presentationen var en fallande boll (fysiskt system) som när den träffar en yta byter riktning (logik). Idéen var att använda matematik som ett programmeringsspråk och skapa modeller utifrån ekvationer.

Utöver dessa seminarier var det ett par intressanta utställare i mässhallen, mycket var återförsäljare men också ett par processor-tillverkare och verktygsutvecklare visade upp sina varor. ett företag visade upp en bootloader byggd med samma teknik som mikrokärnor.

Det var också roligt att träffa gamla bekanta =)

Embedded Conference Scandinavia 2010

oktober 24, 2010

Tisdagen och onsdagen den 19,20/10 (det vill säga i tisdags och onsdags) gick Embedded Conference Scandinavia av stapeln på stockholmsmässan. Jag hade privilegiet att närvara, lyssna, lära, äta gratis mat och plocka på mig en och annan gratispryl.

Conference innebär i dessa kretsar en uppsättning seminarier av olika karaktär, allt ifrån verktyg för effektiv programmering för inbyggda system till framtidens lösningar för datacentra.

Nedan har jag sammanfattat det som jag tyckte var intressant från de seminarier jag deltog i. (Varning för Buzz-words och facktermer!)

Wireless Embedded on GSM/GPRS modules with RTOS, Petri Loumala, Peter Folkesson (COLMEO AB)
AT-kommandon gäller lika mycket nu som när jag var tonåring och spelade Quake över modem, skillnaden är att idag används de mest för att styra GSM-moduler. Vanligtvis används GSM-modulen tillsammans med en ARM-processor som gör själva applikationsarbetet. En modern GSM-modul innehåller en 100 MHz CPU, 4 MB Flash-minne och 1 MB RAM vilket lämnar mycket utrymme till att utföra arbete utöver att telefonera. Föreläsaren argumenterade för att utnyttja denna processorkraft istället för att ha en extern processor. Fördelarna är att systemet är testat och har standardverktyg tillgängliga. Det som talar emot är att dessa moduler arbetar med OS som varierar från modul till modul och detta kan göra att portabiliteten för applikationen minskar ifall den körs i modulen.

Crypto Key Lengths, when size matters, Joachim Strömbergson (Informasic)
”Krypto” är förenklat en metod för att transformera meddelande till något oläsligt men på ett sätt så att rätt mottagare kan reversera processen. Krypto används för Konfidentialitet, Integritet och Autenticitet (Confidentiality, Integrity, Authenticity – CIA modellen) även om de flesta bara tänker på Konfidentialitetsbiten. Krypto kan delas in i symmetrisk (mottagare och sändare byter en hemlig nyckel innan kommunikationen) och asymmetrisk krypto (en (publik) nyckel för att kryptera och en (privat) för att dekryptera). Asymmetrisk kryptering är generellt säkrare men mycket mer CPU och minnes-krävande (1000x symmetrisk). Kryptering i inbyggda system har ofta problem med prestanda och att ifall systemet knäcks är det svårt att uppgradera.
De största felen utvecklare gör är att välja för korta nyckellängder, lämna hårdvaran övervakningsbar (via t.ex JTAG) väljer egna propertiäära algoritmer istället för öppna verifierade varianter. Man bör också ta hänsyn till hur länge en nyckel skall användas (hinner man knäcka nyckeln medan den fortfarande är i bruk) och vem som skulle ha intresse av att hacka enheten i fråga (konkurrenter, hobby-hackers eller virusmakare).
Inom EU ger organisationen Ecrypt (II) rekommendationer om algoritmer som bör användas. För inbyggda system finns ett par implementationer som är välfungerande t.ex Grain och Trivium.

M2M – What is inside and why, Jacob Norrby (Prevas)
M2M (Machine to Machine) är apparater som är uppkopplade med andra apparater i ett nätverk där mätvärden överförs, bearbetas och sammanställs. Ett vanligt exempel är de moderna elmätarna som periodiskt rapporterar förbrukad el till en central dator.
M2M-tekniken har funnits i testanläggningar sedan tidigt 90-tal men har på senare år spridit sig allt snabbare i och med att uppkopplingsmöjligheterna ökat. Tekniken är inte knuten till något visst medie utan kan använda GSM eller ethernet lika gärna som långvågsradio.

Secure Networking: isolating multiple networks on a single node, Urban Sandertek (Green Hills Software)
Föreläsningen tog upp ”the separation kernel” (SK) ett system som bygger på mikro-kernel-konceptet, dvs. alla drivrutiner ses som normala applikationer. I SK-systemet separeras säkerhets nivåerna i samma maskin genom att ha en drivrutin och en TCP/IP-stack per säkerhetsnivå och på det viset skapas separerade nät. SK kräver en MMU för att kunna garantera att de olika drivrutinerna inte inkräktar på minne som ägs av en annan säkerhetsnivå. Detta åstakomms genom att lägga omappat minne mellan processerna, detta genererar då ett undantag ifall en process skulle skriva utanför slutet på sitt minnesområde. Mikro-kernel-strukturen gör koden så pass moduliserad att varje modul är överskådlig och kan individuellt verifieras och bevisas, och på detta sätt kan hela systemet bevisas.

Keynote: A view of software engineering and a way forward, Anders Caspár (Ericsson)
Ericsson har transformerats till ett företag där 80% av forskningsbudgeten går till mjukvaruforskning. Speciellt framtagen hårdvara byts mot kommersiell dito med specialiserad mjukvara. Mjukvaru-industrin är fortfarande i kraftig förändring och vi kan ännu inte slappna av utan måste utvecklas vidare. Vi måste bli mer produktiva/effektiva för att hänga med. detta kan göras på många olika sätt, t.ex utökade samarbeten med universitet, nya affärsmodeller, användande av öppen källkod, modellbaserade kodgeneratorer samt klassiska koncept som standardiserade gränssnitt.

Intel ATOM Tunnel creek, Robert Hanselius (Data Respons)
Intels utveckling av (kodnamn) Tunnel Creek CPUn tillsammans med Queensbay chipset har pågått ett tag och kommer snart att lanseras. Processorn är designad för en låg effektförbrukning samt för att ha goda möjligheter till viritualisering, den ska inte dra mer än 3.6 W vid 1.6 GHz.

Trends in the evolution of COM module formfactors, Patrik Björklund (Hectronic)
COM står för Computer on Module, vilket innebär ett litet kretskort med samtliga nödvändiga komponenter för att processorn skall kunna arbeta (RAM, nordbrygga etc.) samt gott om I/O-kontakter. Fördelen med dessa moduler är att eftersom de är väldigt integrerade går det snabbt att färdigställa ett projekt, de är lätta att skala (byta ut mot en liknande modul fast med t.ex mer ram), färre design risker, mindre kablage.
COM-korten finns i ett antal olika standarder, de som börjar vara aktuella idag är COM-express-standarden COM.0 som endast använder lågvolts-gränssnitt (SATA, Gbit Ethernet, etc.). Dessa kort har standardiserade värmelösningar, moduler som direkt på kortet eller att kortet monteras så det ligger emot chassi.
En annan aktuell standard är Q7 som är inriktad mot UMPC-applikationer. Det intressanta med denna standard är att CPU:n inte är låst till Intel utan det finns planer för att även kunna använda ARM-processorer.

Consumer Technology in Embedded Systems, Hans Christian Lønstad (Data Respons)
ARM håller på att komma ikapp Intel på CPU-marknaden, ett ARM-baserat system drar i regel inte mer än 2 W och prestandamässigt börjar ARM komma ikapp. I den nära framtiden kommer ARM-baserade servrar och det uppskattas att ca 50% av NetBook-datorerna kommer använda ARM.
Priset på ARM-processorer är mycket lägre än Intels eftersom ARM är en licensierad teknik med många tillverkare.
När man utvecklar ett ARM-baserat system bör man tänka på att komponenterna livscykel inte är längre än 3 år, SoC-system kräver mycket mjukvara eftersom, vissa av varianterna är reserverade för de stora företagen.
Dock finns en del fördelar som balanserar nackdelarna: liten formfaktor, låg effekt, billig, inga fläktar krävs.

Many Core programming models, a case for task-centric programming, Karl-Filip Faxén (SICS)
I framtiden kommer vi arbeta med mer avancerade processor-arkitekturer, med fler kärnor, mer skillnader mellan kärnorna, mer integrerade finesser.
De modeller som finns för parallellisering är egentligen oberoende av programmeringsspråk dock finns inte alla modeller implementerade för samtliga programmeringsspråk.
Task-parallell programmering är en slimmad parallellisering utan allt för mycket special-kommandon. Tasks är ”lätta” (dvs tar inte särskilt många CPU-cykler för att skapa och växla till/från) och synkronisering mellan tasks sker via att två tasks slås samman vid slutet av exekvering. Programstrukturen för detta blir väldigt likt sekventiell programmering.
Wool är ett bibliotek för task-parallell programmering för C skapat av SICS (Swedish Institute of Computer Science). Wool är relativt enkelt och effektivt och finns fritt tillgängligt under GPL för de som är intresserade av att testa.

Interprocess Communication with MCAPI, Collin Walls (Mentor Embedded)
MCAPI står för Multi Core API och är ett gränssnitt för kommunikation mellan processorkärnor med mål att vara kodkompatibel över olika OS. Idagsläget har API:t ett litet foot-print, hög prestanda och kan köras på OS i ett hypervisor eller i en bare-metal-lösning (CPU utan OS). MCAPI hanterar multipla datakanaler, datakanalerna bygger på något som kallas noder som kan vara en processor, OS eller accellerator). När man kommunicerar öppnas i dessa noder Endpoints som beter sig ungefär som Sockets. Standardimplementationen av MCAPI bygger på delat minne men den kan modifieras för vilken kommunikationskanal som helst.