Site icon Embarcados – Sua fonte de informações sobre Sistemas Embarcados

Gravando imagem customizada Linux na Toradex Colibri i.MX7

Linux na Toradex Colibri i.MX7
Este post faz parte da série Toradex Colibri i.MX7. Leia também os outros posts da série:

Introdução

No artigo Criando uma Distribuição Linux com Yocto Project para Toradex Colibri i.MX7 preparamos o ambiente Host e, utilizando Yocto Project, geramos uma Distribuição Linux customizada. Desta vez iremos abordar uma das formas de gravar a image gerada no SoM Toradex Colibri i.MX7.

Ferramentas

No site da Toradex são fornecidas algumas ferramentas para realizar esta gravação do SO:

Utilizaremos o procedimento descrito em Flashing Embedded Linux to iMX7 Modules, onde é utilizado um microSD ou pendrive formatado no sistema de arquivos FAT32 e, utilizando um script fornecido pela Toradex, update.sh, irá preparar e exibir os detalhes para a migração.

Oficialmente pode-se fazer download de uma das imagens disponibilizadas no site, descompactar e executar o script “update.sh” em uma das imagens a seguir:

Customizando a estrutura

Será utilizado o “update.sh” com algumas alterações, o restante da estrutura Bootloader, Kernel, Device-Tree e RootFS iremos trocar pelo gerado no artigo de customização da distribuição.

Através deste link pode-se fazer download da estrutura alterada e pronta para realizar a gravação, abaixo é o detalhe de como foi criada e alterada.

Acessando o diretório build-trdx-imx7/tmp-glibc/deploy/images/colibri-imx7 serão copiados os seguintes arquivos:

Será criado o diretório Colibri-iMX7_Angstrom_Console-Image e os respectivos diretórios colibri-imx7_bin e imx_flash.

Serão copiados para o diretório colibri-imx7_bin como utilizado pela Toradex e criados os devidos links simbólicos, utilizando informações da imagem Colibri iMX7 LXDE Image 2.8b3 27/06/2018 será copiado o conteúdo do imx_flash para ~/Colibri-iMX7_Angstrom_Console-Image/imx_flash e os arquivos flash_blk.img, flash_blk.scr, flash_eth.img, flash_eth.scr, fwd_blk.img, fwd_blk.scr, fwd_eth.img e fwd_eth.scr de colibri-imx7_bin para ~/Colibri-iMX7_Angstrom_Console-Image/colibri-imx7_bin, ficando com a nossa estrutura como a seguir:

Ao gerar a Distribuição Linux configuramos o IMAGE_FSTYPE para agregar o ubifs, e foi gerado o Angstrom-console-image-glibc-ipk-v2018.06-colibri-imx7.rootfs.ubifs, que renomeamos para ubifs.img conforme está no diretório Colibri-iMX7_Angstrom_Console-Image/colibri-imx7_bin/. Desta forma não será necessário o “update.sh” gerar o ubifs baseado no conteúdo do diretório rootfs que foi omitido. Foi esta alteração realizada no “update.sh”, removemos a geração do ubifs.img.

O script “update.sh” apenas ignora a geração do ubifs.img e utiliza um pronto, e pode ser baixado aqui.

Gravando a image

Nesta etapa será preparado um cartão microSD que será formato em FAT32 e criada a estrutura para a correta atualização.

Ao conectar o microSD pode-se utilizar o comando “lsblk” para identificar o nome do dispositivo de block:

Pronto! Podemos identificar o dispositivo /dev/mmcblk0 como sendo nosso microSD, e a próxima etapa desmontar e formatar a unidade:

Removendo o microSD e conectando novamente temos a nova unidade:

Com a estrutura alterada e preparada, ou após download da imagem e descompactar, acesse o diretório e execute o script “update.sh” conforme o caminho de montagem do dispositivo microSD, neste caso /media/cbueno/TDX_UPGRADE.

senha para cbueno: Successfully copied data to target folder. To flash the Colibri iMX7 module a running U-Boot is required. Boot the module to the U-Boot prompt and insert the SD card, USB flash drive or when using TFTP connect Ethernet only and enter: ‘run setupdate’ then to update all components enter: ‘run update’ Alternatively, to update U-Boot enter: ‘run update_uboot’ to update a component stored in UBI enter: ‘run prepare_ubi’ followed by one of: ‘run update_kernel’ ‘run update_fdt’ ‘run update_rootfs’ If you don’t have a working U-Boot anymore, connect your PC to the module’s USB client port, bring the module into the serial download mode and start the update.sh script with the -d option. This will copy U-Boot into the module’s RAM and execute it. Then use the following command to get U-Boot running: ‘./update.sh -d’ Next, recreate the Boot Configuration Block and the Toradex Config Block: ‘run setupdate’ ‘run update_uboot’ ‘run create_bcb’ ‘cfgblock create’

Uma mensagem com “Successfully copied data to target folder” será exibida no terminal e na sequência as possibilidades e opções de atualização. Neste caso queremos atualizar todos componentes, então será conectado um cabo serial para acesso ao console do Bootloader U-boot e executar os comandos run setupdate e run update.

Conecte o microSD na Toradex BaseBoard suportada, energize a placa, interrompa o bootloader e execute os comandos run setupdate e na sequencia run update.

Foram omitidas algumas mensagens, mas após o “resetting…” é para ter ocorrido com sucesso o upgrade, e um boot completo será realizado.

Pronto! A partir deste momento para qualquer pacote, biblioteca, ferramenta adicionada no Yocto Project troque apenas o ubifs.img e repita o processo. Caso alterações no kernel ou device-tree aconteçam, delete o arquivo e substitua e certifique-se de refazer os link simbólicos corretamente.

Boa diversão e até a próxima!

Saiba mais

Acelerando o Build de Yocto com ajuda da Nuvem

Embarcando ScadaBR com Yocto na Toradex Colibri i.MX6

Yocto Project: Quick Start

Referências

https://developer.toradex.com/software/linux/linux-software#Binary_Images
https://developer.toradex.com/software/toradex-easy-installer#colibri-imx7
https://developer.toradex.com/knowledge-base/flashing-embedded-linux-to-imx7-modules

Outros artigos da série

<< Criando uma distribuição Linux com Yocto Project para Toradex Colibri i.MX7Conectando Toradex Colibri i.MX7 com WiFi >>