Builds de contêiner para arm em x86
Desafio
Para um desenvolvimento mais rápido, queremos criar contêineres baseados em ARM para o AXCF2152 ou AXCF1152 em hardware x86. Para isso, é utilizada uma máquina virtual baseada em Debian ou Ubuntu, que roda em nosso PC normal.
Precisamos de um emulador
Para executar o código binário ARM em um sistema x86, precisamos de um emulador que nos permita fazer isso.
O Qemu é um dos poucos hipervisores que podem emular código binário ARM e compilá-lo para x86. Tudo o que precisamos fazer é instalar o Qemu em nosso sistema host e ativar o emulador. Instale o Qemu para Ubuntu ou 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
Exemplo de uso
Para usar o Qemu agora precisamos de uma extensão no container, ou seja, o binário
/usr/bin/qemu-arm-static
. Existem várias maneiras de usá-lo no recipiente. Se a extensão for necessária apenas temporariamente e se existir localmente, ela pode simplesmente ser passada para o contêiner. Para fazer isso, o binário necessário é montado no contêiner.
docker run -it --restart always \
-v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
arm32v7/debian /bin/sh
Isso inicia o contêiner e salta para um shell no contêiner. Agora todas as alterações necessárias podem ser feitas. As alterações podem ser transferidas para as imagens posteriormente com um commit.
docker commit ...
Para uma compilação de contêiner, o binário deve estar presente no contêiner, existem duas maneiras de fazer isso.
1. O binário já está disponível, existem imagens pré-fabricadas no Dockerhub para este fim. https://hub.docker.com/u/multiarch/
2. O binário é adicionado às imagens do contêiner.Exemplo dockerfile:
From debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....
A linha
COPY
deve aparecer diretamente como segundo comando após FROM
. A coisa toda funciona com todas as ferramentas de construção. Um contêiner para todos
Se você instalar a extensão Qemu em um AXCF3152, poderá usar o mesmo contêiner para ambos os sistemas (x86 e ARM). Em relação ao desempenho, isso deve ser testado extensivamente.
Tecnologia industrial
- Numeração decimal versus binária
- Adição binária
- Números binários negativos
- Subtração binária
- Estouro binário
- Regras booleanas para simplificação
- Arm permite instruções personalizadas para núcleos Cortex-M
- PCBs para ambientes agressivos
- Fabricação de PCB para 5G
- Builds de vários estágios com contêiner