2
D e Linux-kernel die gebruikt wordt is gebaseerd op versie 2.6.18, met daarin kritische fixes en features uit wat latere kernels. Er wordt een lange lijst van embedded processorbor- den ondersteund, met daarop niet alleen ARM en x86, maar ook MIPS, Xscale en PPC. De ontwikkelomgeving wordt dan ook gele- verd met een cross compiler voor je embed- ded omgeving. Verder is er een groot aantal voorgeconfigureerde en geteste applicaties beschikbaar. Deze applicaties zorgen ervoor dat je een complete embedded omgeving tot je beschikking hebt, met alleen die applica- ties die voor jou van belang zijn. De gebruikte compiler is gcc 4.2. Installatie We hebben MontaVista Pro 5.0 geïnstalleerd op onze Macbook met OpenSuse 10.2. MacOS X wordt niet ondersteund, maar Windows of Solaris had dan weer wel gemogen. MontaVista maakt gebruik van een web-based installer. Suse werd overigens niet correct geïden- tificeerd, maar dat was snel verholpen. Er werd 3 tot 4 GB aan software geïnstalleerd, waaronder een Eclipse IDE ‘DevRocket’, alle ontwikkeltools, voor zowel de pc als voor het processorbord, en een hoeveelheid bibliotheken en dergelijke voor op het processorbord. Met behulp van apt-get- rpm kunnen na installatie updates gedownload worden. Hiervoor heb je overigens een licentie nodig en een MontaVista support account. Softwareontwikkeling met DevRocket MontaVista Pro biedt ondersteuning voor het hele traject van kernel (driver) ontwik- keling, via het schrijven van applicaties tot systeemintegratie en iets wat in het Engels deployment wordt genoemd - hoe je in de fabriek de software in de apparaatjes krijgt. MontaVista DevRocket is een standaard Eclipse, met een aantal extra plugins, die samen zorgen voor een geïntegreerde infra- structuur en tools voor de ontwikkeling van embedded oplossingen. Er worden meer- dere versies en edities van MontaVista Linux ondersteund. DevRocket kan door ontwik- kelaars gebruikt worden om C/C++ applicaties en systemen te bouwen en te debuggen. Het bevat verschillende onderdelen. Als eerste zien we het MontaVista Linux Edition Management. Daarmee kun je kiezen tussen MontaVista Linux 3.x, 4.x en 5.x. Zelfs als je de laatste versie aanschaft kun je ook de oudere versies downloaden en gebruiken. DevRocket ondersteunt zoveel mogelijk ook de oudere versies, zelfs de nog veel gebruikte 2.4 kernels. Dan hebben we Target Management, dat gebruik maakt van een standaard ssh-verbin- ding voor Remote System Explorer services op MontaVista Linux targets. Met deze verbin- ding kun je onder andere het filesysteem op je target beheren en processen managen. Ook wordt dit gebruikt voor het starten van alle debug- en analysetools op het proces- sorbord. Op de CDT (Eclipse C/C++ ontwikkel tools) heeft MontaVista zelf uitbreidingen gemaakt voor debugging op de target. Dan is er geheugenlek-detectie, waarvoor gebruikt wordt gemaakt van de mpatrol tool. De Performance analyse tools zijn gebaseerd op de open source Oprofile. Verder zien we ge- heugengebruik-analyse, trace analyse en een Platform Image Builder, waarmee een runtime bestandssysteem voor een target gemaakt kan worden. Tot slot zijn er natuurlijk ontwik- keltools voor het ontwikkelen, configureren en bouwen van een kernel. Kernel ontwikkeling Voor elke processorarchitectuur is er een MontaVista Linux Support Package (LSP). Hierin zit onder andere een kernel die speciaal is gebouwd voor de processorarchitectuur. De kernel is gebaseerd op Linux kernel versie 2.6.18, met extra patches voor onder andere het gebruik in een embedded omgeving. Het LSP is volledig getest en gesupport. Via tftp- boot en NFS kun je het processorbord meteen booten en direct aan de slag. Bij embedded projecten is de kernel vaak zeer belangrijk - voor vrijwel alle ontwikkelin- gen zul je later toch andere modules of opties geactiveerd willen hebben. Daarvoor kan dan een kernelproject in DevRocket worden aangemaakt. Er is extra aandacht besteed aan realtime features, zoals hoge resolutie timers, de O(1) scheduler (welk proces komt wanneer aan de beurt), scheduling prioriteit en een zogenaamd full pre-emptible kernel (hoge prioriteit processen kunnen sneller weer de processor krijgen). Kernel ontwikkel tools Met behulp van de ontwikkeltools voor de kernel kun je een kernel voor een embedded systeem configureren, debuggen en instal- leren. Met de wizard kun je de kernelsource voor een specifieke architectuur kopiëren in een kernelproject in je workspace. In dit kernelproject kun je de kernel aanpassen aan je project. Omdat alle wijzigingen gedaan worden in een kopie van de kernelsource, kun je altijd terug naar de oorspronkelijke versie. Verder is er een export editor (default.exp), waarmee je de bestanden, directories, device nodes (char of block) en symbolische links die worden geëxporteerd vanuit het huidige project kunt aangeven. Deze zijn dan beschik- baar om te gebruiken in een ander project. Eigendoms- en toegangsrechten kunnen ook in de export editor aangegeven worden. KGDB, de Linux kernel debugger die gebruikt kan worden met de gdb command line debugger, wordt ook meegeleverd. KGDB staat standaard echter uit. Om het te gebruiken moet je de configuratie van de kernel aanpassen. Om contact te krijgen met de KGDB op de target kan een seriële of een ethernet verbinding worden gebruikt. Ook het debuggen van kernelmodules kan met KGDB. Dit wordt gesimuleerd als het laden van libraries. Applicatie ontwikkeling De ontwikkelomgeving die aangeboden wordt, is gericht op applicatieontwikkeling in de programmeertalen C en C++. Deze talen worden veel toegepast in embedded syste- men, onder andere vanwege efficiency en een laag geheugengebruik. De applicaties kunnen worden ontwikkeld met behulp van Monta- Vista DevRocket. Daarnaast kun je gebruik maken van command line tools als je daar de voorkeur aan geeft. Nadat je een applicatie hebt ontwikkeld, kun je met behulp van de ingebouwde grafische multithreaded debug- ger de fouten in je code gaan zoeken. Geheugenanalyse Embedded systemen hebben vaak veel minder geheugen dan een pc. Omdat RAM schaars is, moet een ontwikkelaar goed in de gaten houden waar het geheugen gebruikt wordt. De analysetools voor het geheugen (MUA) kunnen een ontwikkelaar helpen om probleemgebieden voor het geheugengebruik snel en precies te vinden. Het werkt door te kijken naar een grafische representatie van het geheugengebruik door het gehele systeem, dus niet alleen je eigen applicatie. De analyse begint met een diagram van het geheugen in het hele systeem. Daarna kun je inzoomen op de kernel of specifieke applicaties. Natuurlijk is deze informatie ook binnen Linux te vinden, de diverse bestanden in de /proc map geven al deze informatie al - als je weet waar je moet zoeken in bestanden als /proc/meminfo/, /proc/slabinfo en de diverse files (status, smaps) per proces. De kracht van de DevRocket plugin is dat alles tegelijk wordt be- keken en daarna grafisch wordt weergegeven. Als je meerdere kiekjes maakt, kun je daarna ver- gelijken waar je geheugen heen is verdwenen. Embedded ontwikkeling MontaVista Linux Professional Edition 5.0 MontaVista is al een oudgediende op het gebied van embedded Linux. Dit jaar kwam Pro 5.0 uit, een complete, op Linux gebaseerde softwareontwikkelomgeving voor embedded systemen. Welbekende voorbeelden van embedded systemen zijn mobiele telefoons, dvd- spelers en digitale camera’s. Een embedded systeem is altijd een combinatie van hardware en software. We installeerden MontaVista Linux Pro 5.0 en bekeken hoe het werkt. Aschwin Marsman RSS feed met de meest recente info Geheugen gebruik analyse: totale geheugen Geheugen gebruik analyse: kernel modules Geheugen gebruik analyse: 1 applicatie SOFTWARE

SoftwarE Embedded

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SoftwarE Embedded

� �

D e Linux-kernel die gebruikt wordt is gebaseerd op versie 2.6.18, met daarin kritische fixes

en features uit wat latere kernels. Er wordt een lange lijst van embedded processorbor-den ondersteund, met daarop niet alleen ARM en x86, maar ook MIPS, Xscale en PPC. De ontwikkelomgeving wordt dan ook gele-verd met een cross compiler voor je embed-ded omgeving. Verder is er een groot aantal voorgeconfigureerde en geteste applicaties beschikbaar. Deze applicaties zorgen ervoor dat je een complete embedded omgeving tot je beschikking hebt, met alleen die applica-ties die voor jou van belang zijn. De gebruikte compiler is gcc 4.2.

InstallatieWe hebben MontaVista Pro 5.0 geïnstalleerd

op onze Macbook met OpenSuse 10.2. MacOS X wordt niet ondersteund, maar Windows of Solaris had dan weer wel gemogen.

MontaVista maakt gebruik van een web-based installer. Suse werd overigens niet correct geïden-tificeerd, maar dat was snel verholpen. Er werd 3 tot 4 GB aan software geïnstalleerd, waaronder een Eclipse IDE ‘DevRocket’, alle ontwikkeltools, voor zowel de pc als voor het processorbord, en een hoeveelheid bibliotheken en dergelijke voor op het processorbord. Met behulp van apt-get-rpm kunnen na installatie updates gedownload worden. Hiervoor heb je overigens een licentie nodig en een MontaVista support account.

Softwareontwikkeling met DevRocket

MontaVista Pro biedt ondersteuning voor het hele traject van kernel (driver) ontwik-keling, via het schrijven van applicaties tot systeemintegratie en iets wat in het Engels deployment wordt genoemd - hoe je in de fabriek de software in de apparaatjes krijgt.

MontaVista DevRocket is een standaard Eclipse, met een aantal extra plugins, die samen zorgen voor een geïntegreerde infra-structuur en tools voor de ontwikkeling van embedded oplossingen. Er worden meer-dere versies en edities van MontaVista Linux ondersteund. DevRocket kan door ontwik-kelaars gebruikt worden om C/C++ applicaties en systemen te bouwen en te debuggen. Het bevat verschillende onderdelen. Als eerste zien we het MontaVista Linux Edition Management. Daarmee kun je kiezen tussen MontaVista Linux 3.x, 4.x en 5.x. Zelfs als je de laatste versie aanschaft kun je ook de oudere versies downloaden en gebruiken. DevRocket ondersteunt zoveel mogelijk ook de oudere versies, zelfs de nog veel gebruikte 2.4 kernels. Dan hebben we Target Management, dat gebruik maakt van een standaard ssh-verbin-ding voor Remote System Explorer services op MontaVista Linux targets. Met deze verbin-

ding kun je onder andere het filesysteem op je target beheren en processen managen. Ook wordt dit gebruikt voor het starten van alle debug- en analysetools op het proces-sorbord. Op de CDT (Eclipse C/C++ ontwikkel tools) heeft MontaVista zelf uitbreidingen gemaakt voor debugging op de target. Dan is er geheugenlek-detectie, waarvoor gebruikt wordt gemaakt van de mpatrol tool. De Performance analyse tools zijn gebaseerd op de open source Oprofile. Verder zien we ge-heugengebruik-analyse, trace analyse en een Platform Image Builder, waarmee een runtime bestandssysteem voor een target gemaakt kan worden. Tot slot zijn er natuurlijk ontwik-keltools voor het ontwikkelen, configureren en bouwen van een kernel.

Kernel ontwikkelingVoor elke processorarchitectuur is er een

MontaVista Linux Support Package (LSP). Hierin zit onder andere een kernel die speciaal is gebouwd voor de processorarchitectuur. De kernel is gebaseerd op Linux kernel versie 2.6.18, met extra patches voor onder andere het gebruik in een embedded omgeving. Het LSP is volledig getest en gesupport. Via tftp-boot en NFS kun je het processorbord meteen booten en direct aan de slag.

Bij embedded projecten is de kernel vaak zeer belangrijk - voor vrijwel alle ontwikkelin-gen zul je later toch andere modules of opties geactiveerd willen hebben. Daarvoor kan dan een kernelproject in DevRocket worden aangemaakt. Er is extra aandacht besteed aan realtime features, zoals hoge resolutie timers, de O(1) scheduler (welk proces komt wanneer aan de beurt), scheduling prioriteit en een zogenaamd full pre-emptible kernel (hoge prioriteit processen kunnen sneller weer de processor krijgen).

Kernel ontwikkel toolsMet behulp van de ontwikkeltools voor de

kernel kun je een kernel voor een embedded systeem configureren, debuggen en instal-leren. Met de wizard kun je de kernelsource voor een specifieke architectuur kopiëren in een kernelproject in je workspace. In dit

kernelproject kun je de kernel aanpassen aan

je project. Omdat alle wijzigingen gedaan worden in een kopie van de kernelsource, kun je altijd terug naar de oorspronkelijke versie. Verder is er een export editor (default.exp), waarmee je de bestanden, directories, device nodes (char of block) en symbolische links die worden geëxporteerd vanuit het huidige project kunt aangeven. Deze zijn dan beschik-baar om te gebruiken in een ander project. Eigendoms- en toegangsrechten kunnen ook in de export editor aangegeven worden.

KGDB, de Linux kernel debugger die gebruikt kan worden met de gdb command line debugger, wordt ook meegeleverd. KGDB staat standaard echter uit. Om het te gebruiken moet je de configuratie van de kernel aanpassen. Om contact te krijgen met de KGDB op de target kan een seriële of een ethernet verbinding worden gebruikt. Ook het debuggen van kernelmodules kan met KGDB. Dit wordt gesimuleerd als het laden van libraries.

Applicatie ontwikkelingDe ontwikkelomgeving die aangeboden

wordt, is gericht op applicatieontwikkeling in de programmeertalen C en C++. Deze talen

worden veel toegepast in embedded syste-men, onder andere vanwege efficiency en een laag geheugengebruik. De applicaties kunnen worden ontwikkeld met behulp van Monta-Vista DevRocket. Daarnaast kun je gebruik maken van command line tools als je daar de voorkeur aan geeft. Nadat je een applicatie hebt ontwikkeld, kun je met behulp van de ingebouwde grafische multithreaded debug-ger de fouten in je code gaan zoeken.

GeheugenanalyseEmbedded systemen hebben vaak veel

minder geheugen dan een pc. Omdat RAM schaars is, moet een ontwikkelaar goed in de gaten houden waar het geheugen gebruikt wordt. De analysetools voor het geheugen (MUA) kunnen een ontwikkelaar helpen om probleemgebieden voor het geheugengebruik snel en precies te vinden. Het werkt door te kijken naar een grafische representatie van het geheugengebruik door het gehele systeem, dus niet alleen je eigen applicatie. De analyse begint met een diagram van het geheugen in het hele systeem. Daarna kun je inzoomen op de kernel of specifieke applicaties.

Natuurlijk is deze informatie ook binnen Linux te vinden, de diverse bestanden in de /proc map geven al deze informatie al - als je weet waar je moet zoeken in bestanden als /proc/meminfo/, /proc/slabinfo en de diverse files (status, smaps) per proces. De kracht van de DevRocket plugin is dat alles tegelijk wordt be-keken en daarna grafisch wordt weergegeven. Als je meerdere kiekjes maakt, kun je daarna ver-gelijken waar je geheugen heen is verdwenen.

Embedded ontwikkelingMontaVista Linux Professional Edition 5.0MontaVista is al een oudgediende op het gebied van embedded Linux. Dit jaar kwam Pro 5.0 uit, een complete, op Linux gebaseerde softwareontwikkelomgeving voor embedded systemen. Welbekende voorbeelden van embedded systemen zijn mobiele telefoons, dvd-spelers en digitale camera’s. Een embedded systeem is altijd een combinatie van hardware en software. We installeerden MontaVista Linux Pro 5.0 en bekeken hoe het werkt.

Aschwin MarsmanRSS feed met de

meest recente info

Geheugen gebruik analyse: totale geheugen

Geheugen gebruik analyse: kernel modules

Geheugen gebruik analyse: 1 applicatie

SoftwarE

Page 2: SoftwarE Embedded

Geheugen debugging toolsDaarmee kom je bij een probleem dat

bekend is van bijvoorbeeld Firefox: hoe langer het programma draait, hoe meer geheugen het gebruikt. Dan is er sprake van geheugen-lekkage - geheugen wordt wel geclaimd, maar nooit meer vrijgegeven. Voor een pc is dat meestal alleen lastig, maar voor een elektro-nenmicroscoop is het gevaarlijk. Embedded systemen moeten dus lekvrij zijn. Om dit te testen wordt gebruik gemaakt van de mpatrol libraries en utilities. Deze controleren ge-heugenaanvraag en -vrijgave, voor zowel de functie als zijn kinderen. Daarnaast wordt na-tuurlijk bijgehouden hoeveel geheugen niet wordt vrijgegeven en welke functies daarvoor verantwoordelijk zijn. mpatrol op zich is een command-line tool die snel heel veel tekst-data oplevert. De DevRocket plugin verwerkt deze verzamelde data en presenteert deze als een call grafiek in boom-vorm. Voor elke functie in de call-grafiek kan een trace detail tabel geopend worden, waarin aanvraag/vrij-gave-functies zijn gegroepeerd. Ook is er back trace data die gelinkt is naar de correcte plek in de source code, waardoor je gelijk naar de oorzaak van een probleem kunt springen.

Statistische profiling toolsMet de statistische profiling tools kun je

als ontwikkelaar inzicht krijgen in de proces-sen waar een applicatie de meeste tijd mee bezig is, zodat je kunt optimaliseren op de juiste plek. Onze eigen ervaring leert dat je vaak niet het echte probleem aanpakt als je dit op gevoel doet. Maar als je weet waar een applicatie de meeste tijd aan besteed, kun je hiermee performanceproblemen probe-ren op te lossen. Er wordt gebruikt gemaakt

van de OProfile kernel modules en tools om data te verzamelen op de target. Daarna worden rap-porten gemaakt die helpen om te identificeren welke applicaties of functies het meeste tijd op de cpu in beslag

nemen. Hierdoor kun je je concentreren op de functies met de hoogste kans op een betere performance. Nadat je een configu-ratie voor profiling hebt aangemaakt, kun je deze uitvoeren op de target. Daarbij kun je de sessie ook pauzeren, herstarten en stoppen. Ten slotte kun je de data analyseren in het profiling report.

Open sourceDe MontaVista Linux Trace Tools zijn

gebouwd bovenop de functionaliteit van de open source projecten LTTng (Linux Trace Tools Next Generation) en TimeDoctor. Het eerste programma houdt met een daemon bij welke processen draaien, wat er op het systeem gebeurt en hoe dat het systeem beinvloedt. TimeDoctor is de Eclipse-plugin die de verkregen resultaten van een trace kan visualiseren. Bij MontaVista wordt het alleen gebruikt om de LTTng-data weer te geven.

Vrijwel alle software die MontaVista levert is overigens open source. Daarmee kom je au-tomatisch aan bij de vraag of het wel de vele duizenden euro’s waard is: je kunt het ten-slotte ook downloaden. Maar zoals hierboven al is aangetoond, ligt de meerwaarde in het gemak. Grafische tools die taken versimpe-len, alles van te voren geconfigureerd en een helpdesk die niet alleen verstand heeft van de allerlaatste kernel. Dat is het geld zeker waard, want daardoor kun je je concentreren op de applicatie die de meerwaarde moet opleve-ren. Ook een gevorderde programmeur kan door de tools sneller en beter zijn werk doen.

ConclusieMontaVista Linux Professional Edition

5.0 is een zeer complete omgeving, waar-

door de embedded softwareontwikkelaar zich kan richten op het onderscheidende vermogen van de applicatie die ontwik-keld moet worden. Er is een zeer grote keus in ondersteunde processoren en embedded bordjes waardoor ook bij een switch van processor(bord) verder gewerkt kan worden in een vertrouwde omgeving. Nadat we alle documentatie gevonden hadden bleek deze van een goed niveau te zijn. Zelf gebruiken we voornamelijk command line tools en geen geïntegreerde ontwikkelomgeving, maar we hebben nu gezien dat DevRocket zeker een meer-waarde oplevert door de integratie van een groot aantal tools, die onder andere door bestaande data grafisch te representeren snel tot goede inzichten kunnen leiden. Een aanrader als je je wilt richten op embedded softwareontwikkeling. Voor meer informatie kun je terecht op de MontaVista website: http://www.mvista.com/. «

Montavista Test DriveAls toekomstige klanten MontaVista wil-len uitproberen, loopt men tegen de GPL licentie aan. Als MontaVista geïnteresseerde klanten een volledige versie zou geven voor evaluatie, dan zouden klanten daarna niet meer hoeven te betalen... Dat was commer-cieel niet zo handig.Dankzij virtualisatie is daar nu wat op gevonden. Men heeft bij Amazon WebSer-vices een dikke server gehuurd waarop je met je webbrowser kunt inloggen. Via het NX-protocol wordt dan een desktop met alle tools weergegeven. Alle MontaVista tools zijn al voorgeïnstalleerd op Fedora 7. Zo kun je op afstand alles bekijken. Ze hebben zelfs diverse bordjes die geëmuleerd worden, zodat je de tools kunt testen zoals je in de praktijk zou doen.Jammer genoeg heeft TestDrive een paar nadelen. Allereerst kun je er maar heel kort gebruik van maken: zeven dagen is het maximum. Daarna wordt alles automatisch gewist. Verder levert men geen demopro-jecten mee en de firewall rond de server is zodanig ingericht dat je er niets naartoe kunt zenden.Bovendien is vanwege de virtualisatie de snelheid natuurlijk niet goed in te schatten. De applicaties voelen allemaal levensecht, maar wat voor een machine zit er onder? En hoeveel mensen moeten die machine delen? Je weet het gewoon niet.Hoe dan ook: het idee werkt. Wil je ook een proefritje maken? Inschrijven via de website.

Geheugen gebruik analyse:

fysieke device mapping