Gravando imagem customizada Linux na Toradex Colibri i.MX7

Antes tínhamos preparado o ambiente Host com Yocto para gerar uma distro. Confira agora uma das formas de gravar a imagem no SoM 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 >>

Proprietário da B2Open onde oferecemos consultoria, treinamentos e desenvolvimento em Sistemas Embarcados.
Entusiasta a filosofia open-source, mais de 10 anos de experiências em Linux e FOSS.
Em sistemas embarcado do firmware baremetal ao Linux Embedded, e há aproximadamente 8 anos desenvolvendo em (C, Python, Qt e muito Shell Script), além de profiling, hardening e tuning para targets com Linux Embarcado.
Graduado em Engenharia da Computação pela UNICEP com ênfase em robótica e sistemas embarcados.

Notificações
Notificar
guest
8 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Jonathan Sperb
Jonathan Sperb
14/11/2018 09:50

Olá. Os arquivos para download do artigo estão com link quebrado. Poderia verificar? Obrigado.

Anderson Ferreira Rodriguez
Anderson Ferreira Rodriguez
09/09/2018 14:10

Olá
estou tendo dificuldades na hora de executar o comando “run setupdate”. segue mensagens que apareceram no console:

Colibri iMX7 # run setupdate
reading colibri_imx7/flash_blk.img
** Unable to read file colibri_imx7/flash_blk.img **
** Bad device usb 0 **

me parece que o SD card não está sendo reconhecido pelo Uboot, porque esta mensagem apareceu preparando o SD card tanto com a imagem que gerei como com a imagem do link que foi disponibilizado no artigo.

Rafael Dias
Rafael Dias
18/07/2018 10:36

pergunta: tem que realizar o download da imagem Colibri-iMX7_LXDE-Image_2.8b3.111-20180627?

é o que dá a impressão aqui: “utilizando informações da imagem Colibri iMX7 LXDE Image 2.8b3 27/06/2018”

Rafael Dias
Rafael Dias
Reply to  Cleiton Bueno
18/07/2018 10:55

eu estou seguindo os passos desde o artigo de como construir a imagem com o yocto e reproduzindo aqui no meu ambiente.

Estava imginando que o processo de build era auto-contido, não precisando baixar nada de fora.

WEBINAR

Imagens de Ultrassom: Princípios e Aplicações

DATA: 26/10 ÀS 19:30 H