Container bouwt voor arm op x86
Uitdaging
Voor een snellere ontwikkeling willen we op ARM gebaseerde containers maken voor de AXCF2152 of AXCF1152 op x86-hardware. Hiervoor wordt een virtuele machine op basis van Debian of Ubuntu gebruikt, die op onze normale pc draait.
We hebben een emulator nodig
Om ARM binaire code op een x86-systeem uit te voeren, hebben we een emulator nodig waarmee we dit kunnen doen.
Qemu is een van de weinige hypervisors die ARM binaire code kan emuleren en compileren voor x86. Het enige wat we hoeven te doen is Qemu op ons hostsysteem installeren en de emulator activeren. Installeer Qemu voor Ubuntu of 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
Voorbeeld voor gebruik
Om Qemu nu te gebruiken hebben we een extensie in de container nodig, namelijk de binaire /usr/bin/qemu-arm-static
. Er zijn verschillende manieren om het in de container te gebruiken.
Als de extensie slechts tijdelijk nodig is en lokaal bestaat, kan deze eenvoudig worden doorgegeven aan de container. Om dit te doen, wordt het benodigde binaire bestand in de container gemonteerd.
docker run -it --restart always \
-v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
arm32v7/debian /bin/sh
Dit start de container en springt naar een shell in de container. Nu kunnen alle noodzakelijke wijzigingen worden aangebracht. De wijzigingen kunnen achteraf met een commit worden overgebracht naar de afbeeldingen.
docker commit ...
Voor een container-build moet het binaire bestand aanwezig zijn in de container, er zijn twee manieren om dit te doen.
1. Het binaire bestand is al beschikbaar, er zijn voor dit doel geprefabriceerde afbeeldingen op Dockerhub. https://hub.docker.com/u/multiarch/
2. Het binaire bestand wordt toegevoegd aan de containerafbeeldingen. Voorbeeld dockerbestand:
From debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....
De regel COPY
moet direct als tweede commando verschijnen na FROM
. Het hele ding werkt met alle build-tools.
Eén container voor allemaal
Als u de Qemu-extensie op een AXCF3152 installeert, kunt u voor beide systemen (x86 en ARM) dezelfde container gebruiken. Wat betreft de prestaties zou dit uitgebreid getest moeten worden.
Industriële technologie
- Decimaal versus binaire nummering
- Binaire toevoeging
- Negatieve binaire getallen
- Binair aftrekken
- Binaire overloop
- Booleaanse regels voor vereenvoudiging
- Binaire telreeks
- Arm maakt aangepaste instructies voor Cortex-M-kernen mogelijk
- PCB's voor ruwe omgevingen
- PCB-productie voor 5G
- Multi-stage builds met container