Yocto Project

O Yocto Project é é uma iniciativa para englobar e uniformizar vários projetos de desenvolvimento de software embarcado, dentre os quais o OpenEmbedded. Suporta diversas arquiteturas e aparantemente SOs (o default é o Poky, contra o Angstrom do OE). Mais informações em https://www.yoctoproject.org.

Vale a pena também ler esse artigo.

1. Instalação

Nessa página pode ser encontrado um guia Quick Start, no entanto recomendo seguir o guia Gumstix-YoctoProject-Repo, que é direcionado para o caso específico do Gumstix.

Uma terceira variação é apresentada por Scott Ellis no seu site JumpNowTech, mas eu não cheguei a prosseguir com essa.

No Ubuntu 12.04 LTS instalou sem problemas. Para instalar no CentOS 6.3 foi necessário forçar a instalação de uma versão atual (1.7.12) do git, já que o git padrão da distribuição era (quando isso foi escrito) o 1.7.1. Como fazer isso aqui.

1.1 Fonte alternativa

Achei outra versão no GitHub, parece fornecer mais material para o Gumstix.

$ makedir /yocto
$ cd /yocto
$ git clone https://github.com/dirtybit/gumstix-yocto.git

De qualquer forma vale a pena dar uma olhada no guia mencionado acima.

Para atualizar:

$ cd /yocto
$ git pull yocto

1.2 Permissões

Pode ser uma boa ideia mudar o dono do diretório, para não ter problemas com permissões:

$ sudo chwon -R usuario diretorio

2. Compilando uma imagem

Se as instruções do link acima foram seguidas corretamente, deve ser possível compilar uma imagem usando o bitbake:

$ cd /yocto/
$ TEMPLATECONF=meta-gumstix-extras/conf source ./poky/oe-init-build-env
$ bitbake gumstix-console-image

Note que isso poderá demorar algumas horas, dependendo da máquina e da conexão.

No caso de algum pacote dar problema, a solução mais simples é deletar o arquivo .bb referente, caso este seja dispensável, ou retirá-lo do .bb que o referencia, caso esse seja obrigatório (RDEPENDS). Por segurança eu movo-os para uma outra pasta, para poder voltar caso necessário.

Os sistema de arquivos e os arquivos de boot vão ser gerandos na pasta {TOP}/tmp/deploy/images/. Copie-os seguindo as instruções aqui.

2.1 Ferramenta Gráfica

Alternativamente pode-se usar o Hob, interface gráfica para gerenciar as 'layers' do Yocto, configurar e compilar imagens ou pacotes:

$ cd /yocto/
$ TEMPLATECONF=meta-gumstix-extras/conf source ./poky/oe-init-build-env
$ hob

No caso do Yocto ter sido obtido do repositório dirtybit, não há essa variável TEMPLATECONF.

Para ser capaz de compilar para o overo é necessário adicionar as 'layers' correspondentes, que podem ser selecionadas escolhendo-se o diretório que contém um arquivo conf.

Os pacotes selecionados serão compilados primeiro, e somente depois será compilada a imagem. Caso algum pacote dê problema, você pode voltar e desmarcá-lo.

2.2 Imagens personalizadas

É possível utilizar o Hob para criar imagens personalizadas, selecionando graficamente os pacotes que serão instalados dentro outras configurações. Porém às vezes (ou em algumas versões) não é possível salvar a configuração feita.

Por isso convêm criar uma recipe '.bb' na mão utilizando os modelos presentes dos seguintes diretórios:

  • /yocto/poky/meta/recipes-core/images
  • /yocto/poky/meta/recipes-extended/images
  • /yocto/poky/meta-gumstix-extras/recipes-images/gumstix

Configurações de kernel / hardware

A imagem '.bb' contém aparentemente apenas configurações de software, i.e. quais pacotes serão instalados. Para configurações de suporte ao hardware e outras configurações a nível de kernel conferir:

  • yocto-kernel
  • /yocto/poky/meta-gumstix/conf/machine/overo.conf

3 Mantendo-se atualizado

Dentro da pasta raiz (ex.: /yocto/):

$ repo sync

Isso irá baixar as versões mais atuais do repositório.

Caso dê “error: .repo/manifests/: contains uncommitted changes”:

$ cd /yocto/.repo/manifests
$ git reset --hard
$ repo sync 

No caso do repositório baixado do dirtybit, não é usado repo, mas git:

$ cd /yocto/gumstix-yocto
$ git pull
tutoriais/yocto_project.txt · Última modificação: 2014/07/22 20:09 por mathiasfk