Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Container-Builds für Arm auf x86

Herausforderung

Für eine schnellere Entwicklung wollen wir ARM-basierte Container für den AXCF2152 oder AXCF1152 auf x86-Hardware erstellen. Dazu wird eine auf Debian oder Ubuntu basierende virtuelle Maschine verwendet, die auf unserem normalen PC läuft.

Wir brauchen einen Emulator

Um ARM-Binärcode auf einem x86-System auszuführen, benötigen wir einen Emulator, der uns dies ermöglicht.

Qemu ist einer der wenigen Hypervisoren, die ARM-Binärcode emulieren und für x86 kompilieren können. Alles, was wir tun müssen, ist Qemu auf unserem Hostsystem zu installieren und den Emulator zu aktivieren. Installieren Sie Qemu für Ubuntu oder Debian:

apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
update-binfmts --enable qemu-arm
update-binfmts --display qemu-arm
Anwendungsbeispiel

Um Qemu jetzt verwenden zu können, benötigen wir eine Erweiterung im Container, nämlich die Binärdatei /usr/bin/qemu-arm-static . Es gibt mehrere Möglichkeiten, es im Container zu verwenden.

Wird die Erweiterung nur temporär benötigt und ist sie lokal vorhanden, kann sie einfach an den Container übergeben werden. Dazu wird das notwendige Binary in den Container gemountet.

docker run -it --restart always \
    -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
    arm32v7/debian /bin/sh

Dies startet den Container und springt zu einer Shell im Container. Nun können alle notwendigen Änderungen vorgenommen werden. Die Änderungen können nachträglich mit einem Commit auf die Bilder übertragen werden.

docker commit ...

Für einen Container-Build muss die Binärdatei im Container vorhanden sein, dazu gibt es zwei Möglichkeiten.

1. Das Binary ist bereits vorhanden, dazu gibt es vorgefertigte Images auf Dockerhub. https://hub.docker.com/u/multiarch/

2. Die Binärdatei wird den Container-Images hinzugefügt. Beispiel Dockerfile:

From debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....

Die Zeile COPY muss direkt als zweiter Befehl nach FROM erscheinen . Das Ganze funktioniert mit allen Build-Tools.

Ein Container für alle

Wenn Sie die Qemu-Erweiterung auf einem AXCF3152 installieren, können Sie für beide Systeme (x86 und ARM) denselben Container verwenden. Hinsichtlich der Performance sollte dies ausgiebig getestet werden.


Industrietechnik

  1. Dezimal versus binäre Numerierung
  2. Binäre Addition
  3. Negative Binärzahlen
  4. Binäre Subtraktion
  5. Binärüberlauf
  6. Boolesche Regeln zur Vereinfachung
  7. Arm ermöglicht benutzerdefinierte Anweisungen für Cortex-M-Kerne
  8. Leiterplatten für raue Umgebungen
  9. Leiterplattenfertigung für 5G
  10. Mehrstufige Builds mit Container