Inhalt uclinux als Beispiel für Embedded Linux 2 Hardware für uclinux 3 Die uclinux-distribution



Ähnliche Dokumente
Embedded Linux. Dipl.-Ing. Thomas Brinker Dipl.-Ing. Heiko Degenhardt Dr.-Ing. Gerald Kupris. Praktische Umsetzung mit uclinux.

Treiber Kernel und Module bauen

Das U-Boot Der Bootvorgang von Linux

1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty

Debugging mit uclinux auf ARM-Prozessoren

Embedded So)ware. Einrichten der Arbeitsumgebung

Windows 8/8.1 RecImg-Manager

Initramfs - The initial RAM filesystem

Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1

1 Installation QTrans V2.0 unter Windows NT4

Installationsanleitungen

GameGrid mit BlueJ Seite 1

Hex Datei mit Atmel Studio 6 erstellen

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Anleitung # 4 Wie mache ich ein Update der QBoxHD Deutsche Version

Knoppix Micro-Remastering

I Installation und Erste Schritte 7

Wine - Windows unter Linux

Filesystem in Userspace. Jens Spiekermann

Linux Arbeitsspeicheranalyse

NAS 323 NAS als VPN-Server verwenden

QUALIFIZIERUNG VON SYSTEMBETREUERINNEN UND SYSTEMBETREUERN. BartPE-BUILDER AKADEMIE FÜR LEHRERFORTBILDUNG UND PERSONALFÜHRUNG DILLINGEN

Dateisystem 1, Suchpfad, Befehlstypen

Dateisystem 1, Suchpfad, Befehlstypen

Betriebssystem Windows - SSH Secure Shell Client

Lehrveranstaltung Grundlagen von Datenbanken

Qt-Projekte mit Visual Studio 2005

Installation OMNIKEY 3121 USB

Inbetriebnahme grabbmodul-1 / minimodul-16x bzw. smarteye-1

peer-to-peer Dateisystem Synchronisation

Installation und Inbetriebnahme von Microsoft Visual C Express

Kurs für Linux Online Kurs Verwalter des Linux System

Installation des COM Port Redirectors

NetzWerkSYsteme Debian + VMWare 2013/14

Version 0.3. Installation von MinGW und Eclipse CDT

Eprog Starthilfe. 5. Oktober Einleitung 2

HTW-Aalen. OpenVPN - Anleitung. Eine Installations- und Nutzungsanleitung zu OpenVPN

Einrichten einer Verbindung zwischen Outlook 2010 und Exchange-Postfach per RPC over HTTPS

web: CAD/CAM-Systeme Entwicklung Beratung Vertrieb Kundenbetreuung Service für Werkzeugmaschinen

Ubuntu und DNS-325/-320: Datenzugriff über NFS

Workshop: Eigenes Image ohne VMware-Programme erstellen

Einführung in die Informatik Tools

Verschlüsseln von USB-Sticks durch Installation und Einrichtung von TrueCrypt

Local Control Network Technische Dokumentation

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Die Software "Cherry SmartDevice Setup" unterstützt das Lesen und Schreiben von Chipkarten für folgende Cherry Produkte:

Samsung Large Format Display

SFTP SCP - Synology Wiki

Hinweise zur Installation der USB Treiber für Windows XP 32bit

1. Während der Installation Linux, wenn leere Partition für Betriebsystem vorhanden

Anleitung zur Installation der DataWatch Software auf einem LINUX System ohne grafische Oberfläche

Wireless LAN PCMCIA Adapter Installationsanleitung

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Wissenswertes über LiveUpdate

Embedded Linux. Arthur Baran

Bedienungsanleitung. WebServer. Stand: 25. November Autor: Peter Beck

B4 Viper Connector Service Installationsanleitung Stand:

PC-Schulungen für f r Leute ab 40!

Softwareverteilung. mit. m23

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python.

ATB Ausbildung Technische Berufe Ausbildungszentrum Klybeck

Python SVN-Revision 12

I Installation und ErsteSchritte 7. 1 Allgemeines 8

Informatik I Tutorial

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Installationsanleitung dateiagent Pro

Installation und Aktualisierung der VMware-Tools

AppCenter Handbuch August 2015, Copyright Webland AG 2015

WDS: Windows Deployment Service

METTLER TOLEDO USB-Option Installation der Treiber unter Windows XP

NetSeal Pro. Installations- und Bedienungsanweisung. Printserver L1 USB. Höns-Electronic GmbH & Co KG Bremen

Automatisierte Installation der ESXi Hosts (z.b. für Disaster Recovery).

Voraussetzungen: Eine aktuelle Aros Live CD Ein PC mit bootfähigem CDROM, IDE Festplatte und möglichst VESA fähiger Grafikkarte.

Verwaltung der MSATA-SSD bei HP Envy Ultrabook 4 und Ultrabook 6 mit Intel Smart Response Technologie

IRATuxDown. Installationsanleitung. Shutdown-Demon für Linux

Installationshinweise Linux Kubuntu 9.04 bei Verwendung des PC-Wächter

Anbindung des uvcvideo Treibers für eine CAM-104H

SelfLinux Der Linux-Kernel

Installation LehrerConsole (für Version 6.2)

PHSt VPN Verbindung für Studierende der Berufspädagogik

4D Server v12 64-bit Version BETA VERSION

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

C++ mit Eclipse & GCC unter Windows

Handbuch PCI Treiber-Installation

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

RIS Abbild mit aktuellen Updates

OpenOffice Installation Eckehard Möbius, Böblingen - Oliver Schulz, Stuttgart Stand / Version 1.4

Freier Linux Kernel für den Virtex4 FX12

Vorstellung - "Personal Remote Desktop" für (fast) alle Hardwareplattformen und Betriebssysteme

How-to: VPN mit PPTP und dem Windows VPN-Client. Securepoint Security System Version 2007nx

Integration von SATA / RAID / SCSI Treibern in Windows XP Setup

LabTech RMM. Monitoring von MDaemon. Vertraulich nur für den internen Gebrauch

Archivieren und Komprimieren, SSH

PHSt VPN Verbindung für ZIDA Mitarbeiter/innen

Verteilte Dateisysteme

Modulnummer 305 Betriebssysteme installieren, konfigurieren und administrieren

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Transkript:

Inhalt 1 uclinux als Beispiel für Embedded Linux... 17 1.1 Linux-Grundlagen... 17 1.1.1 Kenndaten und Begriffe... 17 1.1.2 Linux-Hilfe... 18 1.2 uclinux-grundlagen... 19 1.2.1 Linux in Embedded Systemen... 20 1.2.2 Einführung in uclinux... 21 1.2.3 Historie... 22 1.2.4 Besonderheiten eines Systems ohne MMU... 23 1.3 Aufbau einer Entwicklungsumgebung... 24 1.3.1 Enwicklungssystem ( Host )... 25 1.3.2 Zielsystem ( Target )... 27 1.3.3 Beschaffung der Hardware... 28 1.3.4 Beschaffung der Software... 28 2 Hardware für uclinux... 29 2.1 Der Aufbau von Embedded-Linux-Systemen... 29 2.1.1 Allgemeiner Aufbau... 29 2.1.2 Der Prozessor... 30 2.1.3 Der Festwertspeicher... 33 2.1.4 Der flüchtige Speicher... 36 2.1.5 Serielle Schnittstelle (UART)... 37 2.1.6 Das Ethernet-Interface... 38 2.2 Beispiele für verschiedene uclinux-systeme... 40 2.2.1 ucsimm-starterkit von Lineo... 40 2.2.2 ColdFire-Evaluation-Boards von Freescale... 41 2.2.3 µcleopatra-board von Feith... 43 2.2.4 COBRA5272-Modul von sentec Elektronik... 44 2.2.5 DIL/NetPC von SSV Embedded... 46 2.2.6 COBRA5282-Modul... 47 2.2.7 ARMtwister-Board... 49 2.2.8 BF537-STAMP mit BlackFin-DSP... 50 2.2.9 SnapGear-VPN-Router... 51 2.2.10 COBRA5329-Modul von sentec Elektronik... 52 3 Die uclinux-distribution... 55 3.1 Die Verzeichnisstruktur der Distribution... 55 3.1.1 Das Hauptverzeichnis... 56 3.1.2 Die Dateien des Toplevel-Verzeichnisses... 56 9

3.1.3 Das Unterverzeichnis Documentation/... 58 3.1.4 Das Unterverzeichnis vendors/... 58 3.1.5 Das Unterverzeichnis config/... 60 3.1.6 Das Unterverzeichnis lib/... 60 3.1.7 Das Unterverzeichnis uclibc/... 60 3.1.8 Das Unterverzeichnis freeswan/... 61 3.1.9 Das Unterverzeichnis openswan/... 61 3.1.10 Das Unterverzeichnis tools/... 61 3.1.11 Das Unterverzeichnis bin/... 61 3.1.12 Die Unterverzeichnisse images/ und romfs/... 61 3.2 Umgang mit der uclinux-distribution... 62 3.2.1 Konfigurationsoptionen des uclinux-images... 62 3.2.2 Arbeiten mit uclinux... 65 3.2.3 Ein erstes uclinux-image... 66 3.3 Einpflegen einer eigenen Hardwareplattform... 67 3.3.1 Herangehensweise... 68 3.3.2 Einpflegen der Plattform unter vendors/... 69 3.3.3 Änderungen an den Dateien des Kernels 2.4... 70 3.3.4 Änderungen an den Dateien des Kernels 2.6... 72 3.4 Die Erstellung eines uclinux-images im Detail... 73 3.4.1 Voraussetzungen... 74 3.4.2 Umgebungsvariablen... 74 3.4.3 Konfiguration mit make menuconfig... 77 3.4.4 Erzeugung des Images... 87 3.4.5 Das Compiler-Front-End ucfront... 89 4 Die Cross-Tools... 91 4.1 Der Compiler m68k-elf-gcc... 91 4.1.1 Installation des Compilers... 91 4.1.2 Aufruf des Compilers... 93 4.1.3 Die gebräuchlichsten Optionen... 94 4.2 Nützliche Funktionen der Binutils... 97 4.2.1 Das Programm m68k-elf-nm... 98 4.2.2 Der Archiver m68k-elf-ar... 99 4.2.3 Das Programm m68k-elf-objdump... 101 4.2.4 Das Programm m68k-elf-objcopy... 101 4.3 Der Linker und die Linker-Scripte... 102 4.3.1 Der m68k-elf-ld... 102 4.3.2 Linker-Scripte... 103 4.4 Server-Tools... 103 4.4.1 Terminalprogramm... 103 4.4.2 NFS-Server... 105 10

4.4.3 TFTP-Server... 106 4.4.4 Weitere Utilities... 107 4.5 Flash-Tools... 107 4.5.1 CF-Flasher... 108 4.5.2 BDM-Tools... 109 5 Der uclinux-kernel... 111 5.1 Aufbau des Kernels... 111 5.1.1 Einleitung... 111 5.1.2 Kernel-Komponenten... 112 5.2 Start des Kernels... 113 5.2.1 Initialisierung... 113 5.2.2 Vorbereitung des Starts... 114 5.3 Der Start des Linux 2.4-Kernels... 119 5.4 Der Start des Linux 2.6-Kernels... 127 5.5 Aufbau der Kernel-Quellen... 132 5.5.1 Das Toplevel-Verzeichnis... 132 5.5.2 Das Verzeichnis Documentation/... 133 5.5.3 Das Verzeichnis arch/ für die unterstützten Architekturen... 134 5.5.4 Kernel - Unterstützung für Verschlüsselung unter crypto/... 134 5.5.5 Die Gerätetreiber in drivers/... 134 5.5.6 Unterstützung von Dateisystemen unter fs/... 135 5.5.7 Die Include-Dateien für den Kernel-Bau unter include/... 135 5.5.8 Die Initialisierung des Kernels in init/... 136 5.5.9 Interprozess-Kommunikation in ipc/... 136 5.5.10 Kernel-Code unter kernel/... 136 5.5.11 Libraries unter lib/... 136 5.5.12 Netzwerk-Code in net/... 136 5.5.13 Code für das Speicher-Management in mm/ und mmnommu/... 136 5.5.14 Scripte für den Kernel-Bau unter scripts/... 137 5.5.15 Erweiterte Sicherheitsfunktionen unter security/... 137 5.5.16 alsa-sound unter sound/... 137 5.5.17 Informationen aus Kconfig... 137 5.6 OpenSource... 138 6 Kernel-Treiber... 139 6.1 Einleitung... 139 6.2 Hardware-Zugriffe aus dem User-Mode... 139 6.3 Treiber unter Linux... 142 6.4 Geräteklassen... 143 6.5 Gerätedateien... 144 6.6 Hilfe zur Treiberprogrammierung... 146 11

6.7 Statische oder ladbare Gerätetreiber... 146 6.8 Ein Beispiel-Treiber... 147 6.8.1 Ein erstes Beispiel... 148 6.8.2 Die C-Bibliothek des Kernels... 150 6.8.3 Hilfsfunktionen des Treibers für das Laden und Entladen... 151 6.9 Einfache Interaktion mit dem Treiber... 151 6.9.1 Das Userland-Programm steuert... 154 6.10 Interrupts... 155 6.11 Hardware-Zugriff... 156 6.11.1 Zugriff mit Funktionen... 156 6.11.2 Direkter Zugriff... 157 6.12 Fazit... 157 7 Userland-Programmierung... 159 7.1 Besonderheiten durch das Fehlen einer MMU... 160 7.1.1 vfork( ) statt fork( )... 160 7.1.2 Besonderheiten bei der Reservierung von Speicher... 162 7.1.3 Speicherschutz... 163 7.1.4 Direkter Hardwarezugriff... 164 7.1.5 Swapping... 164 7.1.6 Binary File Format... 164 7.1.7 Beschränkung des Stacks... 165 7.1.8 Systemaufruf mmap... 166 7.2 Fehlende Floating Point Unit... 166 7.3 uclibc als libc... 167 7.4 Beispielhafte Kompilation und Integration in uclinux... 168 7.4.1 Applikation in uclinux integriert... 168 7.4.2 Beispielhafte Kompilation außerhalb uclinux... 171 7.4.3 Automatisches Starten der Applikation... 172 7.5 Echtzeitverhalten... 172 7.6 BusyBox das Schweizermesser eines Embedded Linux... 174 8 Debugging von Applikationen und Kernel... 175 8.1 Übersicht über die Debug-Möglichkeiten... 175 8.1.1 Verifizierung des Programmablaufs... 175 8.1.2 printf/printk... 175 8.1.3 GDB auf der Kommandozeile... 176 8.2 Beispiel für Kernel-Debugging... 177 8.3 Beispiel für Applikations-Debugging über Ethernet... 179 8.4 Networked Filesystem (NFS)... 182 8.4.1 Einrichten eines NFS-mounts... 182 12

9 Bootloader... 187 9.1 CoLiLo... 189 9.2 Miniloader... 189 9.2.1 Quellcode... 189 9.2.2 Benutzung... 196 9.3 U-Boot Universal Bootloader... 196 9.3.1 U-Boot-Befehle... 197 9.3.2 Environment... 198 9.3.3 U-Boot-Images... 199 9.3.4 U-Boot bei der Entwicklung... 201 9.3.4 U-Boot in der Produktion... 202 9.4 dbug... 203 9.5 Fazit... 204 10 Beispiel einer grafischen Benutzeroberfläche... 205 10.1 NanoX... 205 10.1.1 Eigenschaften von NanoX... 205 10.1.2 Das NanoX-Design... 207 10.1.3 Hardware-Lösung mit externem Grafik-Controller... 208 10.1.4 COBRA5329 mit integriertem Grafik-Controller... 210 10.2 Das Framebuffer-Device... 211 10.2.1 Einleitung zum Framebuffer... 211 10.2.2 Gerätedateien Anwendersicht... 211 10.2.3 Gerätedateien Programmiersicht... 212 10.2.4 Datenstrukturen im User-Space... 212 10.2.5 Datenstrukturen im Kernel-Space... 214 10.3 Erfahrungen mit NanoX auf uclinux... 215 10.3.1 Motivation... 215 10.3.2 Vorgehensweise in der Praxis... 216 10.3.3 NanoX kompilieren... 216 10.3.4 Verifizierung und Tests... 217 10.3.5 Weiterführende Hilfe zu NanoX... 218 11 Nützliche Tipps auf dem Linux-Host... 219 11.1 Kleine Helfer... 219 11.1.1 Der Befehl find... 219 11.1.2 Das Programm sed... 220 11.1.3 Das Programm wget... 221 11.1.4 Die Programme diff und patch... 222 11.1.5 Das Programm file... 222 11.1.6 Die recode -Bibliothek... 223 11.1.7 Tipps zu tar... 224 13

11.1.8 Das Programm script... 224 11.1.9 Packen mit gzip... 225 11.1.10 Das Programm dd... 225 11.2 Die Shell als Arbeitserleichterung... 226 11.2.1 Grundaufgaben mit der Shell... 226 11.2.2 Arbeiten mit der Befehls-History der bash... 227 11.2.3 Shell-Aliase... 228 11.2.4 Eingabevervollständigung in der bash... 228 11.3 Beschaffung von Systeminformationen... 229 11.3.1 Logfiles... 229 11.3.2 Umgebungsvariablen... 229 11.3.3 Benutzer... 230 11.4 Weitere Tricks... 231 11.4.1 Finden von Hilfe (lokal)... 231 11.4.2 Zusätzliche IP-Adresse mit ifconfig... 232 11.4.3 Verwendung eines Sniffers... 232 11.4.4 Systeminformationen auf dem Target... 234 11.4.5 Versionskontrolle... 235 11.4.6 ISO-Images mit mkisofs erstellen... 235 11.4.7 Fortune... 235 12 colinux... 237 12.1 Was ist colinux?... 238 12.2 Installation von colinux... 239 12.3 Bestandteile oder: Was habe ich da installiert?... 242 12.4 colinux starten... 244 12.5 Schnittstellen zwischen colinux und Windows... 246 12.5.1 Konsole/Terminal... 246 12.5.2 COFS... 246 12.5.3 Netzwerk... 247 12.5.4 colinux im Internet... 253 12.6 Möglicher Arbeitsablauf... 256 12.7 Beispielhafte Entwicklung einer Applikation... 258 12.8 Debugging der Applikation... 262 13 Hinweise zum Umgang mit der beiliegenden CD... 263 13.1 Die beiliegende CD... 263 13.2 ucknoppix starten... 264 13.2.1 Von der CD booten... 264 13.2.2 Bootoptionen am ersten Prompt eingeben... 264 13.2.3 Start der (grafischen) Oberfläche... 265 13.3 Das uclinux-image ablegen... 266 14

13.3.1 Root-Konsole öffnen... 266 13.3.2 Passende Partition finden... 267 13.3.3 Partition mounten... 268 13.3.4 Image-Datei kopieren... 268 13.3.5 Verzeichnis anlegen... 268 13.3.6 Image einbinden... 269 13.4 Arbeiten mit uclinux... 269 13.5 Der ColdFire-Simulator... 270 13.6 Arbeiten mit echter Hardware... 271 13.6.1 Einstellungen für NFS-Export... 272 13.6.2 Einrichtung von tftp... 273 13.7 Was verbleibt auf dem Rechner?... 274 14 Anhang... 275 14.1 Literatur- und Linkverzeichnis... 275 14.2 Verzeichnis der Abkürzungen... 277 14.3 Stichwortverzeichnis... 279 15