Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| software:linux:buildroot:zoom:dev [2020-09-24 09:10] – ditaranto | software:linux:buildroot:zoom:dev [2022-09-07 14:07] (aktuell) – fabian.ditaranto | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Cross-Compilieren für das Zoom-Board =================== | ====== Cross-Compilieren für das Zoom-Board =================== | ||
| - | Hier wird gezeigt, wie auf dem Host Applikationen und Kernel-Module für das Zoom-Board übersetzt werden können. | + | Hier wird gezeigt, wie auf dem Host Applikationen und Kernel-Module für das [[https:// |
| <box 97% | Buildroot-Toolchain> | <box 97% | Buildroot-Toolchain> | ||
| Zeile 9: | Zeile 9: | ||
| <box 95% | Buildroot-Toolchain installieren> | <box 95% | Buildroot-Toolchain installieren> | ||
| < | < | ||
| - | sudo mkdir -p /opt/zoom | + | $ sudo mkdir -p /opt/zoom |
| - | cd /opt/zoom | + | $ cd /opt/zoom |
| - | sudo wget -c ftp:// | + | $ sudo wget -c ftp:// |
| - | sudo tar xjf buildroot-toolchain.tar.bz2 | + | $ sudo tar xjf buildroot-toolchain.tar.bz2 |
| - | sudo rm -rf ./ | + | $ sudo rm -rf ./ |
| - | ./ | + | $ ./ |
| </ | </ | ||
| Der letzte Befehl sollte folgende Version ausgeben: | Der letzte Befehl sollte folgende Version ausgeben: | ||
| Zeile 22: | Zeile 22: | ||
| <box 95% | Wichtige Pfade für die Bash-Kommandozeile global verfügbar machen> | <box 95% | Wichtige Pfade für die Bash-Kommandozeile global verfügbar machen> | ||
| < | < | ||
| - | sudo nano ~/.bashrc | + | $ sudo nano ~/.bashrc |
| </ | </ | ||
| Am Ende der Datei folgenden Inhalt einfügen: | Am Ende der Datei folgenden Inhalt einfügen: | ||
| Zeile 31: | Zeile 31: | ||
| export PATH=$PATH:/ | export PATH=$PATH:/ | ||
| </ | </ | ||
| - | Speichern, Editor verlassen und Terminal schliessen. | + | Speichern, Editor verlassen und **Terminal schliessen(!)**. |
| <box 95% | Zum Testen der Buildroot-Toolchain (Lokaler Compiler & Cross-Compiler):> | <box 95% | Zum Testen der Buildroot-Toolchain (Lokaler Compiler & Cross-Compiler):> | ||
| < | < | ||
| - | mkdir -p ~/ | + | $ mkdir -p ~/ |
| - | cd ~/ | + | $ cd ~/ |
| - | nano hello.c | + | $ nano hello.c |
| </ | </ | ||
| Folgenden Inhalt einfügen: | Folgenden Inhalt einfügen: | ||
| Zeile 50: | Zeile 50: | ||
| Nun das File für den lokalen Rechner kompilieren: | Nun das File für den lokalen Rechner kompilieren: | ||
| < | < | ||
| - | gcc hello.c -o hello | + | $ gcc hello.c -o hello |
| - | ./hello | + | $ ./hello |
| </ | </ | ||
| Der letzte Befehl sollte nun auf der Kommandozeile des lokalen Rechners ein | Der letzte Befehl sollte nun auf der Kommandozeile des lokalen Rechners ein | ||
| Zeile 59: | Zeile 59: | ||
| \\ Jetzt noch einen symbolischen Link erstellen, um eine Fehlermeldung zu vermeiden: | \\ Jetzt noch einen symbolischen Link erstellen, um eine Fehlermeldung zu vermeiden: | ||
| < | < | ||
| - | sudo ln -s / | + | $ sudo ln -s / |
| </ | </ | ||
| <box 97% | Hinweis> | <box 97% | Hinweis> | ||
| - | **Falls der letzte Befehl folgende Fehlermeldung ausgibt...** | + | Falls der letzte Befehl folgende Fehlermeldung ausgibt... |
| - | \\ '' | + | \\ \\ '' |
| - | \\ **..., dann wurde der symbolische Link bereits erstellt. Die Fehlermeldung kann somit ignoriert und weitergemacht werden.** | + | \\ \\ ..., dann wurde der symbolische Link bereits erstellt. Die Fehlermeldung kann somit ignoriert und es kann weitergemacht werden. |
| </ | </ | ||
| \\ Nun dasselbe File für das Zoom-Board crosskompilieren, | \\ Nun dasselbe File für das Zoom-Board crosskompilieren, | ||
| < | < | ||
| - | / | + | $ / |
| - | scp hello root@< | + | $ scp hello root@< |
| - | ssh root@< | + | $ ssh root@< |
| </ | </ | ||
| Passwort: **toor** | Passwort: **toor** | ||
| Zeile 76: | Zeile 76: | ||
| \\ Wir befinden uns nun auf dem Zoom-Board und führen folgende Befehle aus: | \\ Wir befinden uns nun auf dem Zoom-Board und führen folgende Befehle aus: | ||
| < | < | ||
| - | cd / | + | $ cd / |
| - | ./hello | + | $ ./hello |
| </ | </ | ||
| Der letzte Befehl sollte nun auf der Kommandozeile des Zoom-Boards ein | Der letzte Befehl sollte nun auf der Kommandozeile des Zoom-Boards ein | ||
| Zeile 87: | Zeile 87: | ||
| <box 97% | Userspace Anwendungen mit CMake> | <box 97% | Userspace Anwendungen mit CMake> | ||
| < | < | ||
| - | mkdir -p ~/ | + | $ mkdir -p ~/ |
| - | cd ~/ | + | $ cd ~/ |
| - | nano hello.c | + | $ nano hello.c |
| </ | </ | ||
| Folgenden Inhalt einfügen: | Folgenden Inhalt einfügen: | ||
| Zeile 104: | Zeile 104: | ||
| </ | </ | ||
| Speichern und Editor verlassen. | Speichern und Editor verlassen. | ||
| + | \\ | ||
| + | \\ | ||
| + | Folgendes File erstellen: | ||
| < | < | ||
| - | nano CMakeLists.txt | + | $ nano CMakeLists.txt |
| </ | </ | ||
| Folgenden Inhalt einfügen: | Folgenden Inhalt einfügen: | ||
| Zeile 118: | Zeile 120: | ||
| < | < | ||
| - | mkdir -p ~/ | + | $ mkdir -p ~/ |
| - | cd ~/ | + | $ cd ~/ |
| - | cmake -DCMAKE_TOOLCHAIN_FILE=/ | + | $ cmake -DCMAKE_TOOLCHAIN_FILE=/ |
| - | make | + | $ make |
| - | scp hello root@< | + | $ scp hello root@< |
| - | ssh root@< | + | $ ssh root@< |
| </ | </ | ||
| Passwort: **toor** | Passwort: **toor** | ||
| Zeile 129: | Zeile 131: | ||
| \\ Wir befinden uns nun auf dem Zoom-Board und führen folgende Befehle aus: | \\ Wir befinden uns nun auf dem Zoom-Board und führen folgende Befehle aus: | ||
| < | < | ||
| - | cd / | + | $ cd / |
| - | ./hello | + | $ ./hello |
| </ | </ | ||
| Der letzte Befehl sollte nun auf der Kommandozeile des Zoom-Boards ein | Der letzte Befehl sollte nun auf der Kommandozeile des Zoom-Boards ein | ||
| Zeile 140: | Zeile 142: | ||
| <box 95% | Linux Kernel Quellcode herunterladen und vorbereiten> | <box 95% | Linux Kernel Quellcode herunterladen und vorbereiten> | ||
| < | < | ||
| - | cd /opt/zoom | + | $ cd /opt/zoom |
| - | sudo wget -c ftp:// | + | $ sudo wget -c ftp:// |
| - | sudo tar xzf linux.tar.gz | + | $ sudo tar xzf linux.tar.gz |
| - | sudo rm -rf linux.tar.gz | + | $ sudo rm -rf linux.tar.gz |
| - | cd linux | + | $ cd linux |
| - | export ARCH=arm | + | $ export ARCH=arm |
| - | export CROSS_COMPILE=arm-buildroot-linux-gnueabi- | + | $ export CROSS_COMPILE=arm-buildroot-linux-gnueabi- |
| - | make da850_omapl138_defconfig | + | $ make da850_omapl138_defconfig |
| - | sudo ln -s / | + | $ sudo ln -s / |
| - | make modules_prepare | + | </ |
| + | <box 97% | Hinweis> | ||
| + | Falls der letzte Befehl folgende Fehlermeldung ausgibt... | ||
| + | \\ \\ '' | ||
| + | \\ \\ ..., dann wurde der symbolische Link bereits erstellt. Die Fehlermeldung kann somit ignoriert und es kann weitergemacht werden. | ||
| + | </ | ||
| + | < | ||
| + | $ make modules_prepare | ||
| </ | </ | ||
| </ | </ | ||
| Zeile 156: | Zeile 165: | ||
| <box 95% | Kernelmodul erstellen> | <box 95% | Kernelmodul erstellen> | ||
| < | < | ||
| - | mkdir -p ~/ | + | $ mkdir -p ~/ |
| - | cd ~/ | + | $ cd ~/ |
| - | nano helloMod.c | + | $ nano helloMod.c |
| </ | </ | ||
| Folgenden Inhalt einfügen: | Folgenden Inhalt einfügen: | ||
| Zeile 168: | Zeile 177: | ||
| MODULE_SUPPORTED_DEVICE(" | MODULE_SUPPORTED_DEVICE(" | ||
| MODULE_LICENSE(" | MODULE_LICENSE(" | ||
| - | MODULE_AUTHOR(" | + | MODULE_AUTHOR(" |
| static int hello_init(void) { | static int hello_init(void) { | ||
| Zeile 184: | Zeile 193: | ||
| Speichern und Editor verlassen. | Speichern und Editor verlassen. | ||
| < | < | ||
| - | nano Makefile | + | $ nano Makefile |
| </ | </ | ||
| Folgenden Inhalt einfügen: | Folgenden Inhalt einfügen: | ||
| Zeile 203: | Zeile 212: | ||
| Speichern und Editor verlassen. | Speichern und Editor verlassen. | ||
| < | < | ||
| - | make modules | + | $ make modules |
| </ | </ | ||
| <box 90% | Hinweis> | <box 90% | Hinweis> | ||
| Zeile 209: | Zeile 218: | ||
| \\ '' | \\ '' | ||
| \\ Falls dies der Fall ist, das **Makefile** nochmals editieren und in der entsprechenden Zeilen-Nr. die entsprechenden Abstände durch einen Tabulator (TAB) ersetzen, danach speichern und Editor verlassen und dann den Befehl | \\ Falls dies der Fall ist, das **Makefile** nochmals editieren und in der entsprechenden Zeilen-Nr. die entsprechenden Abstände durch einen Tabulator (TAB) ersetzen, danach speichern und Editor verlassen und dann den Befehl | ||
| - | < | + | < |
| </ | </ | ||
| < | < | ||
| - | ls | + | $ ls |
| </ | </ | ||
| Es sollte nun -nebst diversen anderen Files- ein File mit der Bezeichnung | Es sollte nun -nebst diversen anderen Files- ein File mit der Bezeichnung | ||
| Zeile 218: | Zeile 227: | ||
| \\ aufgelistet werden. Falls ja, hat das Erstellen des Kernelmoduls für das Zoom-Board geklappt. Nun wird dieses Modul auf das Zoom-Board kopiert und dort getestet: | \\ aufgelistet werden. Falls ja, hat das Erstellen des Kernelmoduls für das Zoom-Board geklappt. Nun wird dieses Modul auf das Zoom-Board kopiert und dort getestet: | ||
| < | < | ||
| - | scp helloMod.ko root@< | + | $ scp helloMod.ko root@< |
| - | ssh root@< | + | $ ssh root@< |
| </ | </ | ||
| Passwort: **toor** | Passwort: **toor** | ||
| Zeile 225: | Zeile 234: | ||
| \\ Wir befinden uns nun auf dem Zoom-Board und führen folgende Befehle aus (Kernelmodul laden, wieder entladen und Ausgaben anzeigen): | \\ Wir befinden uns nun auf dem Zoom-Board und führen folgende Befehle aus (Kernelmodul laden, wieder entladen und Ausgaben anzeigen): | ||
| < | < | ||
| - | cd / | + | $ cd / |
| - | sudo insmod helloMod.ko | + | $ sudo insmod helloMod.ko |
| - | sudo rmmod helloMod.ko | + | $ sudo rmmod helloMod.ko |
| - | dmesg | tail | + | $ dmesg | tail |
| </ | </ | ||
| Der letzte Befehl sollte nun auf der Kommandozeile des Zoom-Boards ein | Der letzte Befehl sollte nun auf der Kommandozeile des Zoom-Boards ein | ||