Olimex EP9302-Board CS-E9302

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Olimex EP9302-Board CS-E9302

CS-E9302-01.jpg

Aktuellen Linux Kernel Kompilieren

Voraussetzungen

Um einen aktuellen Linux Kernel zu Kompilieren benötigt man einen geeigneten ARM Crosscompiler. In diesem Beispiel wird das Linux-Binary des CodeSourcery G++ Lite GCCs für ARM GNU/Linux genutzt. Zusätzlich wird ein nativer Compiler und die ncurses-Bibliothek benötigt (Unter debian lassen sich alle zusätzlich benötigten Packete mit apt-get install gcc libc6-dev ncurses-dev installieren). Es ist darauf zu achten, dass sich der Crosscompiler im Pfad befindet, allerdings gcc ohne Platform-Prefix den nativen GCC aufruft. Jedes vorkommen von <compiler-prefix> ist duch das Prefix (alles vor dem gcc bei dem entsprechenden GCC) des Compilers zu ersetzen. Es empfiehlt sich allgemein das Kompilieren des Kernels unter Linux durchzuführen. Will man den Kernel auf einem anderen System kompilieren muss sichergestellt werden, dass alle benötigten Header-Dateien und Bibliotheken vorhanden sind.

Konfiguration

Der aktuelle 2.6er Kernel (2.6.22.3 zum Zeitpunkt des Schreiben dieses Artikels) unterstützt fast alle Funktionen die auch der mitgelieferte gepatchte Kernel unterstützt, hat aber den Vorteil, dass er öfter aktualisiert wird als der gepatchte Kernel. Für Verwirrung sorgen kann der vorinstallierte Bootloader, der auf der seriellen Konsole das Board als EDB9302 Rev. A bezeichnet, aber dem Kernel die Machine-ID des EDB9302 übergibt. Stimmen die Machine-ID des Bootloaders und die des Kernels nicht überein bootet der Kernel nicht. Da es sich bei dem Board weder um das EDB9302A noch um das EDB9302 handelt ist die einfachste Lösung den Bootloader nicht zu modifizieren, da dies gewisse Risiken mit sich bringt, sondern einen Kernel für das EDB9302 zu kompilieren. Dafür einfach die Kernel Konfiguration downloaden, entpacken und in .config umbenennen. Es handelt sich um die auf der CD beigelegten Konfiguration mit zusätzlich EABI aktiviert (Ermöglicht bessere Floating-Point Performance, noch nicht ohne EABI getestet) für Features die zusätzlich hinzugekommen sind wurden die Standard-Einstellungen gewählt. Ist die Kernel-Version neuer als 2.6.22.3 ist es notwendig vorher ein

make ARCH=arm CROSS_COMPILE=<compiler-prefix> oldconfig

auszuführen. Weitere Anpassungen der Konfiguration lassen sich mit

make ARCH=arm CROSS_COMPILE=<compiler-prefix> menuconfig

durchführen.

Kompilieren

Ist die Konfiguration fertig, kann man den Kernel einfach mit

make ARCH=arm CROSS_COMPILE=<compiler-prefix> zImage

kompilieren. Das fertige Kernel-Image findet man dann unter arch/arm/boot/zImage

Fehlende Funktionen

Kompiliert man den Kernel auf diese Art, ohne Anpassungen am Kernel-Source oder an der Kernel-Konfiguration vorzunehmen, werden folgende Funktionen nicht unterstützt:

  • Ethernet
  • I2S Audio
  • SD/MMC-Karten (auch beim mitgelieferten Kernel nicht vorhanden) - Mittlerweile existiert eine SD/MMC Patch HOWTO für 2.6.24 Kernel