Pular para conteúdo

Construindo utilizando Toradex Build Reference Image

Note

Arquivo localizado em: ~/treinamento/yp

Referência: Build a Reference Image With Yocto Project


Criando uma nova instância do Container para Toradex BSP

Executar no HOST
docker run -it --rm --privileged --cap-add=NET_ADMIN --name treinamento-build-tdx --hostname build-tdx -e DISPLAY=$DISPLAY -v ${HOME}/treinamento-b2open:/home/b2open/treinamento -v /tmp:/tmp -v /dev:/dev -v /var/run/dbus:/var/run/dbus -v /run/udev:/run/udev:ro -v /etc/localtime:/etc/localtime:ro b2open/treinamento-linux-embarcado /bin/bash


Baixando e Configurando via Google Repo

Utilizando o guia oficial da Toradex para preparar e configurar o ambiente para Yocto Project, resumidamente com os seguintes passos:


Branch scarthgap

Executar no HOST
mkdir -p ~/treinamento/yp/oe-core

cd ~/treinamento/yp/oe-core

repo init -u git://git.toradex.com/toradex-manifest.git -b refs/tags/7.5.0 -m tdxref/default.xml

repo sync

Warning

Caso aparecer a mensagem de erro: subprocess.CalledProcessError: Command '['gpg', '--homedir', '.', '--import']' returned non-zero exit status 2.
Apenas repita o comando repo init


Em seguida, executar . export para criar a estrutura do build:

Executar no HOST
. export 


Configurando o local.conf

Com isso temos todo ambiente pronto e um novo diretório chamado build/ com a configuração inicial, que vamos editar o conf/local.conf e adicionar/alterar as configurações a seguir:


Configurando MACHINE colibri-imx8x

MACHINE ?= "colibri-imx8x"


NO final do conf/local.conf adicionar:

# DO NOT SET THE MACHINE AFTER THE ABOVE INCLUDE
ACCEPT_FSL_EULA = "1"


Clonar o repositório meta-b2open-treinamento para ~/treinamento/yp/oe-core/layers:


Branch scarthgap

Executar no HOST
cd ~/treinamento/yp/oe-core/layers

git clone -b scarthgap https://github.com/b2open/meta-b2open-treinamento.git


Adicionar a camada meta-b2open-treinamento com o comando abaixo:

Executar no HOST
cd ~/treinamento/yp/oe-core/build/

bitbake-layers add-layer ../layers/meta-b2open-treinamento/


Gerando a primeira imagem

Toda geração de imagem ou compilação de aplicação deve ser realizada com bitbake.

Antes de executar o comando bitbake é uma boa prática configurar limites no hardware de build para não ocorrer travamentos, Configurando Limites para Build com Bitbake


Receita de imagem referência fornecida pela Toradex:

Executar no HOST
bitbake tdx-reference-minimal-image -k


O arquivo TEZI será gerado em build/deploy/images/, extrair o conteúdo do .tar para dentro do diretório TREINAMENTO no MicroSD utilizado para instalação. O procedimento para gravar o módulo por ser revisto acessando Iniciar instalação no Módulo via Tezi.


Gerando Toolchain


Utilizando a receita meta-toolchain para gerar um toolchain padrão:

Executar no HOST
bitbake meta-toolchain


Utilizando a tarefa populate_sdk para um toolchain baseado na receita da image:

Executar no HOST
bitbake tdx-reference-minimal-image -c populate_sdk


Instalando o Toolchain

Utilizando a receita meta-toolchain ou a tarefa populate_sdk o instalador do toolchain é gerado no diretorio de BUILD em deploy/sdk, o instalador é um arquivo shell script .sh:

Executar no HOST
cd ~/treinamento/yp/oe-core/build/deploy/sdk

ls -l

Saída esperada:

total 138116
-rw-r--r-- 1 b2open b2open     23424 Mar 28 22:10 tdx-xwayland-glibc-x86_64-meta-toolchain-cortexa35-colibri-imx8x-toolchain-6.8.1.host.manifest
-rwxr-xr-x 1 b2open b2open 140424208 Mar 28 22:12 tdx-xwayland-glibc-x86_64-meta-toolchain-cortexa35-colibri-imx8x-toolchain-6.8.1.sh
-rw-r--r-- 1 b2open b2open      1901 Mar 28 22:10 tdx-xwayland-glibc-x86_64-meta-toolchain-cortexa35-colibri-imx8x-toolchain-6.8.1.target.manifest
-rw-r--r-- 1 b2open b2open    969601 Mar 28 22:10 tdx-xwayland-glibc-x86_64-meta-toolchain-cortexa35-colibri-imx8x-toolchain-6.8.1.testdata.json


Instalando Toolchain/SDK no HOST:

Executar no HOST
./tdx-xwayland-glibc-x86_64-meta-toolchain-cortexa35-colibri-imx8x-toolchain-6.8.1.sh 

Saída esperada:

TDX Wayland with XWayland SDK installer version 6.8.1
=====================================================
Enter target directory for SDK (default: /opt/tdx-xwayland/6.8.1): ~/treinamento/sdk/tdx-6.8.1
You are about to install the SDK to "/home/b2open/treinamento/sdk/tdx-6.8.1". Proceed [Y/n]? Y
Extracting SDK..........................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
 $ . /home/b2open/treinamento/sdk/tdx-6.8.1/environment-setup-cortexa35-tdx-linux


Para configurar o Container ou Terminal utilizar o toolchain gerado e configurar as variaveis ambiente é necessario executar o script instalado como abaixo:

Executar no HOST
source /home/b2open/treinamento/sdk/tdx-6.8.1/environment-setup-cortexa35-tdx-linux


Testando:

Executar no HOST
source /home/b2open/treinamento/sdk/tdx-6.8.1/environment-setup-cortexa35-tdx-linux

echo $CC

Resultado esperado:

aarch64-tdx-linux-gcc -mcpu=cortex-a35 -march=armv8-a+crc -mbranch-protection=standard -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/b2open/treinamento/sdk/tdx-6.8.1/sysroots/cortexa35-tdx-linux