Introdução
Com o objetivo de auxiliar no desenvolvimento de produtos que façam uso de multicores assimétricos, baseado no computador em módulo Colibri VF61 (Freescale® Vybrid), esta série de artigos apresenta diversas instruções para guiar o leitor a construir uma imagem Linux para esse CoM, apresentando, no seu final, exemplos práticos.
Linux Embarcado com multicores assimétricos
Nossos computadores em módulo possuem imagens Linux embarcado para suportar o desenvolvimento dos nossos clientes. Você pode encontrar todas estas informações, bem como nosso repositório de software, aqui.
Imagens pré-compiladas para os módulos Toradex
A primeira opção para instalar um Linux em um computador em módulo Toradex é realizar o download de uma imagem pré-compilada. Tais imagens contêm uma série de programas de demonstração e para garantir a melhor experiência para os clientes, portanto, trata-se de uma imagem bem completa. Portanto, dependendo da sua aplicação, existem diversos programas desnecessários. O ideal é que no desenvolvimento de seu produto você compile uma imagem específica com os componentes que você irá utilizar. As imagens de demonstração podem ser encontradas neste site.
Compilando sua própria imagem
Para gerar uma imagem Linux customizada para os módulos da Toradex, recomendados buscar as informações mais recentes no site de desenvolvimento da Toradex.
Atualmente as imagens são baseadas no OpenEmbedded, portanto, instale os softwares necessários:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm
Conforme o site de desenvolvimento da Toradex, é necessário instalar alguns outros programas:
sudo apt-get install curl gcc-multilib ia32-libs lib32z1-dev liblzo2-dev:i386 uuid-dev:i386
Para facilitar o download dos “metas” necessários, utilizamos uma ferramenta chamada “repo”. Ela é responsável por sincronizar cada repositório com uma TAG específica possibilitando, assim, realizar a compilação com os repositórios corretos. Execute em seu host de desenvolvimento:
$ mkdir ~/bin $ export PATH=~/bin:$PATH $ curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
Com o “repo” instalado, crie a pasta onde será gerado o seu Build e comece o processo de sincronia:
$ mkdir oe-core $ cd oe-core $ repo init -u https://git.toradex.com/toradex-bsp-platform.git -b LinuxImageV2.3 $ repo sync
Ao terminar o processo, é hora de gerar o Linux. O primeiro passo é executar o script para exportar todas as variáveis de ambiente:
$ . export
Repare que após executar o script você será encaminhado para pasta build. Basicamente a estrutura de pastas geradas será:
Oe-core/ +-- build ¦ +-- conf ¦ +-- downloads ¦ +-- out-eglibc ¦ +-- sstate-cache +-- stuff +-- meta-angstrom +-- meta-browser (... other layers) +-- openembedded-core
Altere o arquivo build/conf/local.conf para selecionar sua “machine”. No nosso caso, “colibri-vf”:
MACHINE ?= "colibri-vf"
Agora é a hora de compilar sua imagem. O processo de build deverá fazer o download de todos os códigos fontes, aplicar patch e compilar. Todo esse processo pode levar horas.
$ bitbake -k console-trdx-image
No final da compilação, as imagens finais serão encontradas no diretório:
$ ls -l out-eglibc/deploy/images/colibri-vf/
O arquivo utilizado para atualização completa do módulo é:
Colibri_VF_LinuxConsoleImageV2.3_20150225.tar.bz2
Gerando o Cartão SD
Para instalar a imagem no módulo é necessário descompactar o arquivo gerado no tópico anterior com permissão “sudo”. Dentro da pasta extraída temos o script “update.sh”. Esse script irá gerar os arquivos no formato certo e irá copiá-los para um cartão SD FAT.
Entre no diretório extraído:
$ cd Colibri_VF_LinuxConsoleImageV2.3
Execute o script update.sh com o caminho onde foi montado seu cartão SD:
$ sudo ./update.sh -o /run/media/raul/data
Instalando na placa
Ligue a placa, utilizando o terminal serial, pressione alguma tecla durante os primeiros 3 segundos de boot para parar o UBoot.
Com acesso ao terminal de comandos do uBoot, coloque o cartão SD na placa e execute os seguintes comandos. Em seguida aguarde a atualização que ao finalizar reiniciará a placa.
# run setupdate # run update
Compilando e Instalando a “ToolChain”
Para utilizar a ToolChain, existem dois métodos: gerar sua própria “toolchain” ou instalar o arquivo de uma toolchain já gerada para sua imagem de Linux.
Para gerar sua própria “toolchain”, execute o comando na pasta build:
$ bitbake meta-toolchain-qte
Ao terminar, o arquivo responsável por instalar a “toolchain” será encontrado em:
$ cd out-eglibc/deploy/sdk/
Execute o Script:
$ ./angstrom-eglibc-x86_64-armv7at2hf-vfp-neon-toolchain-qte-v2014.06.sh
Aceite o path pedido e aguarde finalizar.
Enter target directory for SDK (default: /usr/local/oecore-x86_64): You are about to install the SDK to "/usr/local/oecore-x86_64". Procees[Y/n]? Y
A “toolchain” estará no seguinte diretório:
$ cd /usr/local/oecore-x86_64/ $ find . -name "arm-angstrom-linux-gnueabi-*" ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gcc-nm ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-nm ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gcc-ranlib ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-g++ ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ar ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gcc ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ranlib ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-dwp ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-addr2line ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-as ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-readelf ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-size ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-objdump ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-strings ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gcc-ar ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-c++filt ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-cpp ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gprof ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-elfedit ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gdb ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gcov ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-strip ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-objcopy ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold ./sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.bfd
Anote esse caminho, ele será usado diversas vezes para configurar o Eclipse:
/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/








