2 Comentários

Yocto Project: Introdução

yocto project introdução
Este post faz parte da série Yocto Project. Leia também os outros posts da série:

O uso do Linux como sistema operacional presente em equipamentos eletrônicos vem crescendo de maneira mais acentuada nos últimos anos. Além do fato de possuir licença open source, a evolução constante do sistema vem acompanhada com a evolução da tecnologia em si.

O Yocto Project é um sistema de build composto por diversas ferramentas para criação de distribuições Linux embarcado customizadas e tem suporte dos principais fabricantes de semicondutores.

O que é um Sistema Linux Embarcado?

Um sistema Linux Embarcado não se difere conceitualmente de um sistema Linux usado em computadores desktop. A principal diferença está na customização e adaptações necessárias para que o Linux seja "acoplado" ao hardware específico e satisfaça, principalmente, os requisitos de desempenho, armazenamento e consumo de energia.

Podemos ilustrar um sistema Linux Embarcado como apresentado na figura 1.

Componente de um Sistema Linux Embarcado.
Figura 1 - Componente de um Sistema Linux Embarcado.

Basicamente, para um sistema Linux Embarcado desempenhar suas funções temos que agregar seus diversos artefatos de software - Bootloader, Linux Kernel, Bibliotecas, Serviços e Aplicações - para serem executados no Hardware alvo. Ao conjunto desses artefatos de software chamamos de Distribuição.

Temos um artigo específico tratando sobre a Anatomia de um Sistema Linux Embarcado.

Opções para uso de Linux em produtos

Quando desenvolvemos produtos temos basicamente duas opções: utilizar uma Distribuição Linux Pronta ou Customizada. Veremos abaixo quais os Prós e Contras de cada solução:

Distribuição Pronta: Prós

  • Maioria dos problemas de compatibilidade resolvidos em plataformas de referência (Rpi, BBB, Udoo etc);
  • Suporte da comunidade;
  • Diversas opções dependendo do hardware (Ubuntu, Debian, Arch etc), inclusive com suporte comercial;
  • Amplo Repositório de pacotes “prontos” à disposição;
  • Ótima opção para um “Proof of Concept”.

Distribuição Pronta: Contras

  • Pacotes desnecessários aumentando tempo de boot, uso de memória, processamento e consumo de energia;
  • Difícil customização quando se precisa “enxugar” e baixa flexibilidade;
  • Dificuldade no controle de mudanças e updates;
  • Problemas com licenças.

Distribuição Customizada: Prós

  • Total controle do que existe “debaixo do capô” e das licenças;
  • Alta Flexibilidade;
  • Fácil Escalabilidade;
  • Facilidade no controle de mudanças e updates;
  • Otimizado de acordo com os requisitos de projeto e hardware;
  • Ótimo para etapas de Bring-up, Testes e Validação.

Distribuição Customizada: Contras

  • Ramp up pode ser demorado;
  • Nem todos os pacotes necessários podem estar disponíveis para cross compilação;
  • Suporte e mão de obra especializada;
  • Necessidade de infra-estrutura para geração das imagens.

Ferramentas de Desenvolvimento

Para gerarmos os artefatos de software necessários devemos ter à disposição um conjunto de ferramentas de desenvolvimento que são ilustradas na figura 2.

Ferramentas de Desenvolvimento para Sistemas Linux Embarcado
Figura 2 - Ferramentas de Desenvolvimento para Sistemas Linux Embarcado

Das quais podemos definir brevemente:

  • IDE: Integrated Development Environment é utilizado para edição de códigos fonte e debug (ex.: Eclipse);
  • Sistema de Build: Responsável por gerar e agregar os artefatos de software (ex.: Yocto e Buildroot);
  • SDK: Software Development Kit é um conjunto de ferramentas, bibliotecas e códigos fonte para desenvolvimento de software;
  • JTAG: equipamento com in-circuit emulator para debug de código on-chip;
  • Toolchain: conjunto de ferramentas para construção de artefatos binários (compilador, assembler e linker);
  • GDB: GNU Debugger é uma ferramenta de auxílio no debug de software;
  • Conexões Físicas: Serial, Paralela, Ethernet, USB etc.
  • Target: placa eletrônica composta com ao menos processador, memórias e interfaces de comunicação.

O que se espera de um Sistema de Build?

Devido à complexidade inerente de um Sistema Linux Embarcado, espera-se que um Sistema de Build:

  • Forneça Toolchain para cross-compiling e debug;
  • Construção dos artefatos de software;
  • Gerenciar cadeias de dependências entre os pacotes;
  • Construção da imagem (bootloader + kernel + rootfs);
  • Geração de SDK (+);
  • Integração com IDEs (+);
  • Gerenciador de Pacotes a ser utilizado no target (+);
  • Automação de Testes (+);
  • Emulador do HW (+).

Atualmente temos disponíveis os seguintes Sistemas de Build:

Yocto Project - Overview

O Yocto Project, além de ser um Sistema de Build, ele endereça questões críticas no desenvolvimento de produtos como: redução do time-to-market, redução de custos de desenvolvimento e manutenção.

O que é o Yocto Project?

  • Sistema de Build mais completo disponível atualmente;
  • Liderado pela The Linux Foundation: yoctoproject.org;
  • Comunidade ativa e bem receptiva;
  • Suporte dos principais fabricantes de semicondutores.

O que NÃO é o Yocto Project?

It's not an embedded Linux distribution
– it creates a custom one for you

Características

  • Coleção de ferramentas e métodos que possibilitam rápida validação e desenvolvimento: git.yoctoproject.org;
  • Suporta arquiteturas x86, ARM, MIPS e PowerPC;
  • Baseado no Openembedded: openembedded.org;
  • Estruturado em camadas que facilita o reuso e extensão;
  • Releases a cada 6 meses;
  • SDK com integração com Eclipse e Qt Creator;
  • Histórico de Build registrado em repositório git;
  • Filtro de licenças;
  • Suporte às últimas versões estáveis de software;
  • Suporta os mais populares formatos de pacotes: rpm, deb e ipk;
  • Total isolamento do Host e ambiente de Build;
  • Interface gráfica via web para controle de Build (Toaster);
  • Extensa documentação: yoctoproject.org/documentation.

Versões:

Nome

Revisão

Poky

Data

Bernard

1.0

5.0

Abril de 2011

Edison

1.1

6.0

Outubro de 2011

Denzil

1.2

7.0

Abril de 2012

Danny

1.3

8.0

Outubro de 2012

Dylan

1.4

9.0

Abril de 2013

Dora

1.5

10.0

Outubro de 2013

Daisy

1.6

11.0

Abril de 2014

Dizzy

1.7

12.0

Outubro de 2014

Fido

1.8

13.0

Abril de 2015

Jethro

2.0

14.0

Outubro de 2015

Krogoth

2.1

15.0

Abril de 2016

Openembedded - Estrutura Simplificada

O Yocto Project é baseado no Openembedded, que se caracteriza como sendo um conjunto de metadados para execução de build e suas dependências através do Bitbake, e pode ser representado  simplificadamente de acordo com a figura 3.

Estrutura Simplificada do Yocto Project Introdução
Figura 3 - Estrutura Simplificada do Yocto Project

Onde:

  • Bitbake: Ferramenta para execução de tarefas e gerenciamento de metadados escrita em python;

  • Metadados: Coleção estruturada de “receitas” e arquivos que “dizem” ao Bitbake o que e como construir os artefatos de software.

Poky

O Poky é uma Distribuição e um Sistema de Build de Referência do Yocto Project. É considerado como sendo o seu alicerce com os seguintes componentes principais:

  • Coleção de Receitas de Pacotes Base (oe-core);
  • Bitbake;
  • Scripts de Build;
  • BSPs de referência;
  • Distribuição de Referência;
  • Documentação do Yocto.

Toolchains e Cross Compilers

C Libraries

Diversidade de Pacotes

Apenas no core estão disponíveis mais de 900 receitas de pacotes. Podemos destacar alguns:

  • U-boot, Redboot, GRUB, Syslinux
  • SysVinit, Systemd, Upstart
  • Busybox, util-linux
  • Java (oracle e openjdk)
  • Python, Perl, Ruby, Lua, Node.js
  • Pulseaudio
  • Chromium
  • Apache, Nginx
  • OpenGL, DirectFB, X11, Wayland
  • Qt4 e Qt5
  • EFL, GTK+, FLTK, wxWidgets, Mono
  • MariaDB, PostgreSQL, MongoDB, SQLite

Documentação e Grupos de discussão

No site do projeto é disponibilizado um set completo de documentação do Yocto e também separado por categorias de conteúdo.  Além disso, existem diversos grupos de e-mail de discussão para envio de patches, resolução de problemas, novas implementações etc.

Conclusão

O Yocto Project é a solução atual mais completa eficiente para desenvolvimento de produtos eletrônicos baseados  em Linux. Com a liderança da Linux Foundation e o suporte de grandes empresas do setor tem se tornado um padrão na indústria.

No próximo post da série vamos apresentar a arquitetura detalhada bem como os conceitos e definições. 

Outros artigos da série

Yocto Project: Definições e Conceitos >>
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 » Yocto Project: Introdução
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Christian Schultz
Xultz
10/08/2016 14:43

Diego, uma pergunta tola, mas que não achei resposta até agora: você sabe de onde vêm os nomes dos releases do Yocto, o que eles significam?

Diego Sueiro
Diego Sueiro
Reply to  Xultz
10/08/2016 15:54

Sabe que eu também não sei.
Sempre me perguntei isso mas nunca fui atrás.

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Debugging
em Linux embarcado

 

Data: 30/09 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link