Efficiënte ARM-containerbuilds op x86-systemen
Uitdaging
Voor een snellere ontwikkeling willen we ARM-gebaseerde containers voor de AXCF2152 of AXCF1152 maken op x86-hardware. Hiervoor wordt een virtuele machine gebaseerd op 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 die ons dit toestaat.
Qemu is een van de weinig hypervisors die ARM-binaire code kan emuleren en voor x86 kan compileren. Alles wat we hoeven te doen is Qemu op ons hostsysteem installeren en de emulator activeren. Qemu installeren 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 dit in de container te gebruiken.
Als de extensie alleen tijdelijk nodig is en lokaal bestaat, kan deze simpelweg aan de container worden doorgegeven. Hiervoor wordt de benodigde binaire in de container gemount.
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 benodigde wijzigingen worden aangebracht. De wijzigingen kunnen daarna met een commit naar de images worden overgedragen.
docker commit ...
Voor een container-build moet de binaire in de container aanwezig zijn, er zijn twee manieren om dit te doen.
1. De binaire is al beschikbaar, er zijn kant-en-klare images op Dockerhub voor dit doel. https://hub.docker.com/u/multiarch/
2. De binaire wordt aan de container-images toegevoegd. Voorbeeld Dockerfile:
FROM debian:armhf COPY qemu-arm-static /usr/bin/qemu-arm-static RUN .....
De regel COPY moet direct als tweede commando na FROM verschijnen. Het hele werkt met alle build-tools.
Eén container voor alles
Als u de Qemu-extensie op een AXCF3152 installeert, kunt u dezelfde container voor beide systemen (x86 en ARM) gebruiken. Wat de prestaties betreft, moet dit uitgebreid getest worden.
Industriële technologie
- Decimaal vs. Binair: Plaatsgewicht, Efficiëntie en Conversie
- Binaire Optelling: Regels, Voorbeelden en Rol in Digitale Computers
- Negatieve Getallen in Binair: Sign-Magnitude, Complement en Two's Complement
- Binaire Aftrekken met Two's Complement
- Binaire Overflow: Hoe Sign Bits Binaire Optelling Beïnvloeden
- Essentiële Boolesche Vereenvoudigingsregels voor Logisch Schakelingsontwerp
- Vier-Bit Binaire Tellers Begrijpen
- Robuuste PCB's voor extreme omstandigheden: ontwerp, voordelen en toepassingen
- PCB-productie in het 5G-tijdperk: Trends en uitdagingen
- Implementaties stroomlijnen met multi-stage container builds
- Arm introduceert custom-instructieondersteuning voor Cortex‑M-kernen, vergroot flexibiliteit