15 Comentários

Toradex Colibri iMX6 e Yocto Project Fido (1.8)

Colibri iMX6 e Yocto

Introdução

Utilizando o Yocto Project 1.8, codinome Fido, o módulo Colibri iMX6 e Placa base IRIS da Toradex, iremos preparar o ambiente, clonar os repositórios do Yocto Project, Freescale e Toradex e explorar o básico para se customizar e construir uma distribuição Linux para esse modulo, sem ter que criar meta camadas e realizar muitas modificações.

Em seguida gravar a imagem gerada em um cartão microSD, conectar o console serial e acessar o terminal para visualizar o processo de boot e logar no sistema.

Para conhecer mais sobre este kit, pode acessar o artigo CoM Toradex COLIBRI T20 e Carrier Board Iris escrito por Thiago Lima que explora em detalhes sobre a Placa Base IRIS, e o artigo Toradex – Colibri i.MX6 onde realizo uma abordagem geral sobre o módulo  e seus recursos disponíveis.

Preparando o Host

No Yocto Project Fido as seguintes distribuições Linux são oficialmente suportadas pela ferramenta:

  • Ubuntu 14.04 (LTS)
  • Ubuntu 14.10
  • Fedora release 21
  • CentOS release 6.x
  • CentOS release 7.x
  • Debian GNU/Linux 7.x (Wheezy)
  • Debian GNU/Linux 8.x (Jessie)
  • OpenSUSE 13.2

Para o correto funcionamento do ecossistema Yocto Project algumas ferramentas devem ser instaladas, mais detalhes acesse Required Packages for the Host Development System.

Ubuntu/Debian

Fedora

OpenSuse

CentOS

Pronto. As dependências do host estão instaladas baseado em cada distribuição.

Preparando o ambiente Host

Agora que possuímos todas as dependências instaladas, vamos criar nosso ambiente e clonar os repositórios para o correto funcionamento do Yocto Project e a meta camada da Toradex, para possuir todo suporte e customização na tarefa de construir uma distribuição para o módulo Colibri iMX6.

Criando o diretório yocto no /home do seu usuário e clonando os repositórios.

Vou abrir um parênteses agora, sobre o branch do repositório da camada Toradex, onde não temos o mesmo codinome utilizado por diversas camadas ou pelo próprio OpenEmbedded. Abaixo uma tabela da relação dos nomes utilizados nos branchs da OpenEmbedded (core), Yocto Project e diversas camadas do projeto versus o equivalente para Toradex.

Toradex Version

Ångström Distribution

OpenEmbedded/Yocto Codename

Yocto Project Release

2.1

v2013.06

dylan

1.4

2.2

v2013.12

dora

1.5

2.3

v2014.06

daisy

1.6

2.4

v2014.12

dizzy

1.7

2.5

v2015.06

fido

1.8

Podemos ver na tabela acima de onde surgiu o V2.5 do repositório da Toradex.

Criando os artefatos do nosso projeto, que irei dar o nome de colibri-imx6.

Customizando o projeto

Alterando o arquivo local.conf para dar suporte ao hardware do Colibri iMX6 e algumas personalizações e adaptações para a correta construção da distribuição.

Editando o ~/yocto/poky-toradex/colibri-imx6/conf/local.conf.

O conf/local.conf acima pode ser copiado como exemplo, o importante a ser alterado é:

Seleciona a correta MACHINE para o modulo i.MX6, no caso a Toradex já fornece a descrição para o módulo, chamado colibri-imx6.

MACHINE ??= “colibri-imx6”

Aceitar o EULA para uso da meta camada da Freescale que é dependência.

ACCEPT_FSL_EULA = “1”

Ignorar os alertas para os .bbappend caso não existam as receitas .bb.

BB_DANGLINGAPPENDS_WARNONLY =”1”

Não é obrigatório, mas na linha 21 eu altero o hostname que será gerado na imagem.

hostname_pn-base-files = “colibri-imx6-brasil”

Adicionando suporte a SSH na linha 57, para poder ter acesso via rede.

EXTRA_IMAGE_FEATURES = “debug-tweaks ssh-server-dropbear”

Editando o ~/yocto/poky-toradex/colibri-imx6/conf/bblayers.conf.

Acima apenas adicionamos a meta camada da Toradex na linha 12 e da Freescale na linha 13.

Construindo um distribuição mínina

Abaixo o comando na linha 1 para construir uma imagem mínima e o resumo da build utilizada no processo de construção.

Nesta etapa aconselho ir tomar um café, ou melhor, faça uma pipoca e assista Star Wars – O despertar da força. Brincadeiras a parte, mas esta etapa é demorada pois todos os pacotes para criar a distribuição serão baixados, descompactados, configurados, compilados, além do mesmo processo para o kernel e o bootloader. E no final a criação do rootfs e as imagens configuradas para serem geradas.

Gravando imagem

Vamos gravar a imagem gerada em um cartão microSD, no caso vamos usar a com extensão .sdcard.

Todos os arquivos (U-boot, Kernel, Rootfs e demais) gerados pelo Yocto Project ficam em:

Listando o diretório:

Conecte o microSD/SDCard, identifiquei o device usado pelo cartão (muito importante e tenha cautela nesta etapa).

Para auxiliar em descobrir o device correto podemos usar o dmesg, e em seguida conectar o cartão:

Neste caso é o /dev/sdb, agora o comando para gravar a imagem no cartão.

Remova o cartão, conecte no slot localizado na parte inferior da Placa Base IRIS, mas ainda não alimente a placa!

Primeiro boot

Primeiro você deve se conectar ao Console Serial. Na placa base IRIS pode ser através do conector X13[UARTA] usando um Conversor USB-Serial para DTK/Intel ou através do GPIO com um Conversor USB-Serial TTL 3.3V usando a seguinte pinagem: Pino 2 para GND, Pino 27 para RX e Pino 28 para TX do conversor.

Utilizei ambos os modos para validar e obtive acesso ao console serial com sucesso, conforme pode ser visto na Figura 1.

Figura01
Figura 1 – Toradex Modulo Colibri iMX6 com Placa Base IRIS e conexão serial console

Mais informações sobre todas as conexões e pinagem da Placa Base IRIS, acesse Manual Técnico Placa Base IRIS, caso necessite de mais informações pode baixar o esquemático da placa ou acessar Placa Base IRIS.

Usando o utilitário minicom iremos acessar o console serial pelo device /dev/ttyUSB0.

Caso uma tela como abaixo seja exibida:

Você deu boot pela eMMC do modulo Colibri i.MX6, para usar a imagem do microSD, você deve alimentar a placa e na sequência pressionar qualquer tecla no computador para interromper a contagem do bootloader e entrar no modo-interativo.

Ao energizar a placa eu pressionei “espaço” e paramos na seguinte etapa:

Realizando o procedimento para dar boot pela microSD, executando o comando a seguir.

E no final teremos nossa distribuição Poky iniciada. Para acessar, o usuário é root e a senha em branco.

Por default a rede esta no modo DHCP, então se conectar em algum roteador ou alguma rede com DHCP habilitado a placa já irá atribuir um IP automaticamente e poderá acessar a mesma via SSH, no meu caso foi atribuído o IP 192.168.0.8.

Uma visão geral pela distribuição.

Usando os comando df e free, podemos ver que o rootfs esta ocupando menos de 8M e o Linux usando apenas 74M de memória RAM.

O que vem por aí

Demos o primeiro passo para uma base sólida na preparação, customização e construção de uma distribuição Linux para o módulo Colibri iMX6 da Toradex usando o Yocto Project, onde a partir de agora avançaremos a cada artigo explorando recursos do Placa Base IRIS e do módulo Colibri iMX6 e adicionando novas ferramentas e recursos.

Aguarde, pois veremos muito Shell Script, Python e Qt5 com este kit.

Referências

http://www.yoctoproject.org/docs/1.8/ref-manual/ref-manual.html
https://www.toradex.com/pt_br/products/carrier-boards/iris-carrier-board
http://developer.toradex.com/knowledge-base/flashing-linux-on-imx6-modules#Colibri_iMX6
https://www.toradex.com/pt_br/computer-on-modules/colibri-arm-family/nxp-freescale-imx6
http://developer.toradex.com/software-resources/arm-family/linux/linux-booting
https://en.wikipedia.org/wiki/Secure_Shell
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Linux Embarcado » Toradex Colibri iMX6 e Yocto Project Fido (1.8)
Comentários:
Notificações
Notificar
guest
15 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Ânderson Ignácio da Silva
Ânderson Ignácio da Silva
29/02/2016 15:40

Olá Cleiton, no momento de gerar a imagem o seguinte erro aparece ao utilizar o comando “bitbake core-image-minimal”: ERROR: Error parsing configuration files Traceback (most recent call last): File “/projects/yocto/poky-toradex/bitbake/lib/bb/cookerdata.py”, line 240, in CookerDataBuilder.parseBaseConfiguration(): try: > self.parseConfigurationFiles(self.prefiles, self.postfiles) except SyntaxError: File “/projects/yocto/poky-toradex/bitbake/lib/bb/cookerdata.py”, line 305, in CookerDataBuilder.parseConfigurationFiles(prefiles=[], postfiles=[]): if data.getVar(“BB_WORKERCONTEXT”, False) is None: > bb.fetch.fetcher_init(data) bb.codeparser.parser_cache_init(data) File “/projects/yocto/poky-toradex/bitbake/lib/bb/fetch2/__init__.py”, line 497, in fetcher_init(d=): pass > revs.clear() else: File “/projects/yocto/poky-toradex/bitbake/lib/bb/persist_data.py”, line 147, in SQLTable.clear(): def clear(self): > self._execute(“DELETE FROM %s;” % self.table) File “/projects/yocto/poky-toradex/bitbake/lib/bb/persist_data.py”, line 66, in SQLTable._execute(*query=(‘DELETE FROM BB_URI_HEADREVS;’,)): try: > return self.cursor.execute(*query) except sqlite3.OperationalError as exc: OperationalError: attempt to write a… Leia mais »

Cleiton Bueno
Reply to  Ânderson Ignácio da Silva
02/03/2016 20:58

Olá Anderson, em que momento da construção ocorre isso? Como esta configurado seu ambiente de Yocto?
Tentou executar um bitbake -c cleanall core-image-minimal e depois bitbake core-image-minimal?
Alias, nunca havia visto este erro.

Ânderson Ignácio da Silva
Ânderson Ignácio da Silva
Reply to  Cleiton Bueno
03/03/2016 01:16

Olá Cleiton,

Obrigado pela resposta! Conforme você citou, executei o bitbake -c cleanall … e apresentou o mesmo erro similar, acredito que deva ser algo relacionado a ferramente bitbake. Realmente não entendo o porque disso já que estou com as mesmas versões do branch que você… =/

Diego Sueiro
Diego Sueiro
Reply to  Ânderson Ignácio da Silva
03/03/2016 03:45

Rode o bitbake com o parâmetro -D e veja se ele mostra qual é o arquivo de base de dados que está como leitura e mude-o para aceitar escrita.
Se não resolver, a melhor coisa a fazer é deletar a pasta tmp e começar tudo de novo.

Ânderson Ignácio da Silva
Ânderson Ignácio da Silva
Reply to  Diego Sueiro
04/03/2016 00:36

Olá Diego,

Realizei novamente os procedimentos do tutorial desde o começo em duas máquinas docker uma do debian8.3(jessie) e outra do ubuntu:14.04 e em ambas ocorreram os mesmos problemas citados anteriormente, testando em containers confirmei isto, poderia me passar em que sistema você testou esse tutorial e/ou validá-lo novamente se possível?

Diego Sueiro
Diego Sueiro
Reply to  Ânderson Ignácio da Silva
04/03/2016 05:02

Olá Anderson,

Eu não realizei esse tutorial em específico.

Eu uso Ubuntu 14.04 e nunca tive esse tipo de problema com o Yocto/OE.

Sugiro que dê uma olhada na wiki e fórum da Toradex para suporte:
http://developer.toradex.com
https://www.toradex.com/community

Cleiton Bueno
Reply to  Ânderson Ignácio da Silva
11/03/2016 09:33

Conseguiu solucionar o problema Anderson?

Ânderson Ignácio da Silva
Ânderson Ignácio da Silva
Reply to  Cleiton Bueno
14/03/2016 14:59

Olá Cleiton,

Infelizmente não consegui fazer funcionar mesmo refazendo todos os passos em outra distribuição, também dei uma olhada sobre o bitbake e esse erro e vi outras pessoas com esse mesmo problema. Sinceramente estou investigando outra solução do yocto para esta placa…

Cleiton Bueno
Reply to  Ânderson Ignácio da Silva
14/03/2016 15:02

Certo.
Qual a distribuição que você usa e qual configuração do seu hardware?
Recomendaria você subir uma VM com Virtualbox mesmo utilizando Ubuntu e deixar com pelo menos 2 Cores e no mínimo 4G de RAM e tentar fazer os procedimentos novamente.

Ânderson Ignácio da Silva
Ânderson Ignácio da Silva
Reply to  Cleiton Bueno
14/03/2016 15:16

Utilizo Debian Jessie 8.0, irei instalar uma VM para testar novamente.

Cleiton Bueno
Reply to  Ânderson Ignácio da Silva
14/03/2016 15:26

Ok, reporte aqui qualquer problema.

Cleiton Bueno
Reply to  Ânderson Ignácio da Silva
03/03/2016 08:19

O erro de readonly database é estranho, não havia visto ainda. Se estivesse usando um HD externo ou alguma outra partição e por algum equivoco estivesse como ro, teria sentido, mas por ser o /home é para estar ok.

Quando você fez os procedimentos de clonar e configurar foi com usuário comum certo, não usou o root não né?

Eu também usaria a dica do Diego, remover o conteúdo de colibri_imx6/tmp/ e verificar novamente.

Ânderson Ignácio da Silva
Ânderson Ignácio da Silva
Reply to  Cleiton Bueno
03/03/2016 09:31

Quando clonei realmente não estava como root, vou limpar o colibri_imx6/tmp e tentar o rebuild. Obrigado pelas dicas!

André Curvello
03/02/2016 08:35

Logo eu testo na minha Colibri aqui, viu!

Cleiton Bueno
Reply to  André Curvello
03/02/2016 21:19

Opa, e qualquer problema é só reportar aqui 😉

Talvez você goste:

Séries

Menu

WEBINAR
 

BlueNRG-LP – Bluetooth 5.2 de longo alcance para aplicações industriais

Data: 05/11 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link