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

Effiziente ARM-Container-Builds auf x86-Systemen

Herausforderung

Für eine schnellere Entwicklung wollen wir ARM-basierte Container für AXCF2152 oder AXCF1152 auf x86-Hardware erstellen. Zu diesem Zweck wird eine virtuelle Maschine basierend auf Debian oder Ubuntu 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 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 Host-System zu installieren und den Emulator zu aktivieren.

QEMU für Ubuntu oder Debian installieren:

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
Beispiel für die Verwendung

Um QEMU nun zu verwenden, benötigen wir eine Erweiterung im Container, nämlich das Binary /usr/bin/qemu-arm-static. Es gibt mehrere Möglichkeiten, es im Container zu verwenden.

Wenn die Erweiterung nur vorübergehend benötigt wird und lokal existiert, 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 in eine Shell im Container. Jetzt können alle notwendigen Änderungen vorgenommen werden. Die Änderungen können danach mit einem Commit in die Images übertragen werden.

docker commit ...

Für einen Container-Build muss das Binary im Container vorhanden sein. Es gibt zwei Wege, dies zu tun.

  1. Das Binary ist bereits verfügbar – es gibt vorgefertigte Images auf Docker Hub dafür. https://hub.docker.com/u/multiarch/
  2. Das Binary wird dem Container-Image 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 denselben Container für beide Systeme (x86 und ARM) verwenden. Bezüglich der Performance sollte dies ausführlich getestet werden.

Industrietechnik

  1. Dezimal- vs. Binärsystem: Stellenwert, Effizienz und Umrechnung
  2. Binäre Addition erklärt: Regeln, Beispiele und Rolle in Digitalrechnern
  3. Negative Zahlen im Binärsystem: Vorzeichen-Betrag, Komplement und Zweierkomplement
  4. Binäre Subtraktion mit Zweierkomplement
  5. Binärer Überlauf: Wie Vorzeichenbits die binäre Addition beeinflussen
  6. Wesentliche Boolesche Vereinfachungsregeln für das Logikschaltungsdesign
  7. Arm führt Custom Instruction Support für Cortex-M Kerne ein – Mehr Flexibilität
  8. Robuste PCBs für extreme Bedingungen: Design, Vorteile und Anwendungen
  9. PCB-Fertigung im 5G-Zeitalter: Trends & Herausforderungen
  10. Deployments mit Multi-Stage-Container-Builds optimieren