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:03] – 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 / |
</ | </ | ||
- | Nun dasselbe File für das Zoom-Board crosskompilieren, | + | <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. | ||
+ | </ | ||
+ | \\ Nun dasselbe File für das Zoom-Board crosskompilieren, | ||
< | < | ||
- | / | + | $ / |
- | scp hello root@< | + | $ scp hello root@< |
- | ssh root@< | + | $ ssh root@< |
</ | </ | ||
Passwort: **toor** | Passwort: **toor** | ||
Zeile 71: | 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 82: | 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 99: | 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 113: | 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 124: | 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 135: | 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 151: | 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 163: | 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 179: | Zeile 193: | ||
Speichern und Editor verlassen. | Speichern und Editor verlassen. | ||
< | < | ||
- | nano Makefile | + | $ nano Makefile |
</ | </ | ||
Folgenden Inhalt einfügen: | Folgenden Inhalt einfügen: | ||
Zeile 198: | Zeile 212: | ||
Speichern und Editor verlassen. | Speichern und Editor verlassen. | ||
< | < | ||
- | make modules | + | $ make modules |
</ | </ | ||
<box 90% | Hinweis> | <box 90% | Hinweis> | ||
Zeile 204: | 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 213: | 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 220: | 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 |