200 likes | 315 Views
Embedded Linux Portierung auf mobiles Datenerfassungsterminal. Ole Reinhardt <ole.reinhardt@kernelconcepts.de>. Embedded Linux. Embedded = Eingebettet, Verborgen?. Embedded Linux. Embedded = Eingebettet, Verborgen? Nein!. Embedded Linux.
E N D
Embedded Linux Portierungauf mobiles Datenerfassungsterminal Ole Reinhardt <ole.reinhardt@kernelconcepts.de>
Embedded Linux Embedded = Eingebettet, Verborgen?
Embedded Linux Embedded = Eingebettet, Verborgen? Nein!
Embedded Linux Embedded Linux eignet sich auch für Endbenutzergeräte... z.B. Skeye.Integral von Höft&Wessel
Embedded Linux Vorteile von Linux als Betriebssystem: • Unabhängige Lösung • Einfache Integration • Schnelle / Kundenspezifische Anpassung • Applikationsentwicklung: Gleiche APIs wie auf dem PC • Großer Fundus an bewährter Software und Programmbibliotheken • Plattformunabhängigkeit
Embedded Linux auf Skeye.Integral • Das Ziel: • Vollständiger Ersatz für Windows CE.NET 4.20und den Bootloader • Die Lösung: • ARM Linux Kernel 2.4.25 • Familiar Linux Distribution • GPE Desktop Enviroment
Embedded Linux auf Skeye.Integral • Die Plattform: • StrongARM SA1110 206Mhz, SA1111 Companion • 64MB RAM, 32 NAND Flash, 1 MB NOR Flash • 2x CF Steckplatz, Laserscanner, Tastatur • 240x320 16Bit TFT Display • USB Host und Client • IR und RS232 Schnittstelle, LiIon Akku
Die Baustelle • Arbeitsschritte bei der Portierung: • Entwicklung des Bootloaders • Anpassen des ARM Linux Kernels • Entwicklung eigener Treiber für spezielle Hardware • Erstellen einer eigenen Linux Distribution • Entwicklung / Anpassung des GUI • Integration des Gesamtsystems
Die Baustelle: Bootloader • Wir verwenden den handhelds.org Bootloader • Nötige Anpassungen: • Hardwareinitialisierung (SA1110, SA1111, FPGA, RAM, Flash, Display) • Gerätespezifische Funktionen in der Bootloader Konsole • Kundenspezifische Anpassung der Bedien- oberfläche des Bootloaders
Die Baustelle: Kernel • Grundlage: ARM Linux Kernel 2.4.25 • Nötige Anpassungen: • Eigenen Gerätetyp definieren • Hardwareinitialisierung • Treiber und proc Interface für den FPGA • NAND Flash Treiber ...
Die Baustelle: Kernel • Fortsetzung... • Displayinitialisierung • SA1111 Treiber anpassen (USB Host, PCMCIA) • Barcodescannertreiber • Tastaturtreiber • Treiber für IR Interface (eigenes Protokoll)
Die Baustelle: Kernel • Schwierigkeiten: • Zeitkritische Hardware • Powermanagement • FPGA: PCMCIA, USB, NAND-Flash... • IR-Protokoll
Die Baustelle: Distribution • Familiar Linux Distribution • Linux Distribution für embedded Geräte • Geringer Memory Footprint: • Busybox, Tiny X (X Window System), ... • Ausgewählte Bibliotheken • Ausgewählte Tools • Dennoch: • Umfangreiche Funktionalität und 100% Kompatibilität • Netzwerk- und Systemtools, grafische Benutzerumgebung
Die Baustelle: GUI • GPE: G Palmtop Enviroment • Grafische Benutzeroberfläche basierend auf offenen Standards. • 100% freie Software, GTK+ basiert • Closed source Software möglich • Einfache Applikationsentwicklung • Existierende GTK Software läuft ohne / mit geringen Änderungen • Einfaches aber sehr funktionales User Interface • PIM Applikationen, Programm manager, SQL Datenbank, Barcode Scanner Applikation, Control Panel uvm... • Netzwerktransparenz, Display Migration GPE V2.6
Verwendete Tools • Wofür brauchen wir die Tools? • Bootloader Entwicklung • Kernel Portierung / Anwendungsportierung • Distributionserstellung
Verwendete Tools: Bootloader Compiler: arm-linux-gcc, Booloader Source-Code Windows Bootloader: Programm zum Laden des Linux Kernels aus Windows CE heraus. Z.B.: Linexec, Haret (für Xscale) JTAG Tools: JTAG Tool des OpenWinCE Projektes
Verwendete Tools: Kernel Dokumentation: Schaltpläne, Registerdokumentation, Datenblätter Literatur: Linux Device Drivers, 2nd Editionby Alessandro Rubini, Jonathan Corbet Toolchain: Sammlung von Programmen, Tools und Libraries die zur Entwicklung benötigt werden. z.B. handhelds.org Toolchain/Skiff Toolchain, OE Toolchain
Verwendete Tools: Distribution • Open Embedded Build enviroment • Metadata repository und Build enviroment für embedded Linux Distributionen • Enthält Compiler und Laufzeitbibliotheken • Arbeitet mit Paketbeschreibungen (Metadaten) • Verwaltet Abhängigkeiten • Verwaltet beliebige unabhängige Zielplattformen und Build Tools. Nicht auf eine Plattform spezialisiert
Verwendete Tools: Distribution Open Embedded Build Enviroment OE Core Unabhängig von Zielplattform Shared classes Paket Metadaten Abhängig von Zielplattform Strategie Konfiguration