www.mikrocontroller.net

Olimex EP9302-Board CS-E9302

Olimex EP9302-Board CS-E9302

CS-EP9301-small.jpg

Inhaltsverzeichnis

[bearbeiten] Aktuellen Linux Kernel Kompilieren

[bearbeiten] Vorraussetzungen

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.

[bearbeiten] 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.

[bearbeiten] 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

[bearbeiten] 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
webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net