Linux leren voor embedded systemen
onlangs werd mij gevraagd hoe een persoon met ervaring in embedded systemen programmeren met 8-bit processors, zoals PIC, evenals 32-bit processors, zoals PowerPC, maar zonder Linux ervaring, kan leren hoe Embedded Linux te gebruiken.
wat ik altijd aanraad aan zo ‘ n embedded systems programmer is dit: Kijk naar Embedded Linux als twee delen, het embedded deel en het Linux deel. Laten we eerst eens kijken naar het Linux gedeelte.
de Linux kant
besturingssystemen zijn in overvloed en er zijn veel keuzes voor een embedded systeem, zowel propriëtaire als open source. Linux is een van deze keuzes. Het maakt niet uit wat u gebruikt voor uw ontwikkeling host, of Linux of Windows of Mac, je moet leren hoe je programmeren met behulp van het doel OS. In dit opzicht verschilt het gebruik van Embedded Linux niet veel van het gebruik van VXworks, WindowCE of een ander besturingssysteem. U moet begrijpen hoe het besturingssysteem is ontworpen, hoe u het besturingssysteem kunt configureren en hoe u kunt programmeren met behulp van de application programming interface (API).
een paar factoren maken het leren programmeren van Linux eenvoudiger dan andere embedded besturingssystemen. Je zult veel boeken en tutorials over Linux vinden, evenals Unix waaruit het is afgeleid-veel meer dan voor andere besturingssystemen. Online bronnen voor Linux zijn ruim, terwijl andere besturingssystemen een veel kleinere aanwezigheid hebben, of een die wordt aangedreven door de OS-fabrikant. Linux is open source, en je kunt de code lezen om precies te begrijpen wat het besturingssysteem doet, iets dat vaak onmogelijk is met een eigen besturingssysteem dat wordt gedistribueerd als binaire bestanden. (Ik raad zeker niet aan om Linux source te lezen om te leren hoe Linux te programmeren. Dat is als proberen te leren rijden door te bestuderen hoe de transmissie van een auto werkt.)
de belangrijkste factor die Linux onderscheidt van andere besturingssystemen is dat dezelfde kernel wordt gebruikt voor alle systemen, van de kleinste ingebedde boards tot desktopsystemen en grote serverfarms. Dit betekent dat je een grote hoeveelheid Linux programmeren op je bureaublad kunt leren in een omgeving, die veel flexibeler is dan het gebruik van een target board met alle complexiteit van het verbinden met het target, het downloaden van een test programmeren, en het uitvoeren van de test. Alle basisconcepten en de meeste API ‘ s zijn hetzelfde voor je desktop Linux en je Embedded Linux.
Linux installeren
u kunt een desktop Linux-distributie installeren op uw ontwikkelsysteem, ter vervanging van uw Windows-of Mac-systeem, maar dat kan een vrij groot stuk zijn om in één keer af te bijten, omdat u waarschijnlijk e-mail moet configureren, nieuwe tools moet leren en op snelheid moet komen met een andere desktopinterface. Je zou Linux kunnen installeren in een dual-boot omgeving, waar je de oude omgeving gebruikt voor e-mail, enz., en gebruik het Linux systeem om te leren. Dit kan behoorlijk onhandig zijn, omdat je nodig hebt om de ene omgeving af te sluiten om de andere te brengen. Bovendien kan het doen binnen een bedrijfsomgeving onpraktisch of onmogelijk zijn. Het volk geeft de voorkeur aan het ondersteunen van een bekende omgeving, niet een die u hebt gekozen.
een eenvoudiger manier is om een virtuele machine-omgeving te maken op uw huidige ontwikkelingssysteem. Voor Windows-hosts kunt u VMware Player of VirtualBox installeren en op de Mac kunt u Parallels of VMware Fusion installeren. Het gebruik van een VM biedt u veel meer flexibiliteit. Je kunt een desktop Linux distributie installeren, zoals Ubuntu of Fedora. Je kunt deze distributie gebruiken om vertrouwd te raken met basis Linux Concepten, de command shell te leren en te leren hoe je programma ‘ s moet bouwen en draaien. U kunt de kernel of laadstuurprogramma ‘ s opnieuw configureren, zonder dat u zich zorgen hoeft te maken dat uw desktopsysteem crasht. Je kunt de hele kernel en applicatieomgeving bouwen, vergelijkbaar met wat je zou kunnen doen met een cross-development omgeving voor een Embedded Linux target.
als uw VM met Linux crasht, herstart u de VM gewoon. De crash heeft geen invloed op andere dingen die je zou kunnen doen op uw ontwikkeling systeem, zoals het lezen van een webpagina over het bouwen en installeren van een driver, of dat het schrijven van een e-mail naar een van de vele ondersteuning mailinglijsten.
sommige VM-producten hebben snapshot-functies waarmee u een controlepunt van een bekende werkende configuratie kunt nemen, waarnaar u kunt terugrollen als u een crash niet gemakkelijk kunt corrigeren. Deze snapshot is veel gemakkelijker dan het proberen om een crashende desktop-systeem of een niet-reagerende target board te redden.
een Linux VM die op uw bureaublad draait is geen perfect model voor een Embedded Linux-omgeving. De VM emuleert de hardware van een desktop systeem, met een beperkte set van apparaten die waarschijnlijk niet overeenkomen met een echt embedded doel. Maar ons doel op dit punt is niet het modelleren van een echt doel (iets wat we later zullen bespreken), maar het creëren van een omgeving waar je Linux concepten en programmeren gemakkelijk kunt leren.
dit is de eerste stap: Maak een VM aan en installeer een desktop Linux distributie op de VM. We kiezen hier uit in onze volgende aflevering.Michael Eager is hoofdadviseur bij Eager Consulting in Palo Alto, Calif. Hij heeft meer dan vier decennia ervaring met het ontwikkelen van compilers, debuggers en simulatoren voor een breed scala aan processorarchitecturen die worden gebruikt in embedded systemen. Tot zijn huidige en voormalige klanten behoren grote halfgeleiderbedrijven en systeemontwikkelaars. Michael is lid geweest van de ISO C++ Standard Committee en ABI-commissies voor verschillende processorarchitecturen. Hij is voorzitter van de Debugging Standards Committee for DWARF, een veelgebruikte debug data format. Hij is actief in de open-source-en Linux-gemeenschappen.
Verwante koppelingen:
- het Leren van Linux voor embedded systemen
- Aan de slag met Embedded Linux: Deel Twee
- Aan de slag met Embedded Linux: Deel Drie
- Aan de slag met Embedded Linux: Deel Vier
- Aan de slag met Embedded Linux: Deel Vijf
- Aan de slag met Embedded Linux: Deel Zes
- Aan de slag met Embedded Linux: Deel Zeven