Embedded Linux Build Systems

Embedded Linux Build Systems

O uso do Linux como sistema operacional em dispositivos eletrônicos embarcados vem crescendo cada vez mais. Porém, um sistema baseado em linux possui diversos artefatos de software que devem ser, de alguma maneira, integrados entre si para compor a solução completa.

 

De uma maneira geral e simplista, um sistema linux embarcado possui três pilares principais:

  1. Bootloader: responsável por realizar configurações básicas do processador e carregar e executar o kernel linux;

  2. Kernel linux: núcleo do sistema operacional responsável por configurar o processador, gerenciar recursos de hardware, escalonar tarefas e montar o sistema de arquivos raiz (rootfs);

  3. Sistema de Arquivos raiz: responsável por inicializar o sistema, carregar bibliotecas e executar aplicações.

 

 

Um sistema de construção para linux embarcado deve ser capaz de coletar os códigos-fonte, compilar e entregar os artefatos de software gerados. O sistema de construção, na maioria das vezes, é executado em um ambiente (host) que é diferente da plataforma alvo (target). Sendo assim, é necessário o uso de uma toolchain, onde o código objeto gerado possui o set de instruções do target.

 

Existem diversas opções open-source de Embedded Linux Build System com características diversas e nesse artigo tentaremos listar as principais ferramentas utilizadas atualmente.

 

 

Buildroot

 

Provavelmente esta é a ferramenta mais popular para construção de sistemas linux embarcado.

Criado em 1999 por Erik Andersen e atualmente mantido por Peter Korsgaard, é licenciado sob a GPLv2.

Releases estáveis são liberadas a cada três meses.

O Buildroot é baseado em uma cadeia de Makefiles e possui suporte a diferentes arquiteturas de microprocessadores (x86, ARM, MIPS, PowerPC, etc.) e construção de uma vasta lista de pacotes e bibliotecas. Possui uma interface simples e intuitiva de configuração. Além de construir bootloader, kernel e rootfs, ele também é capaz de construir a toolchain do zero baseado na uClibc, ou incorporar toolchains pré instalados no seu host.

Adicionar suporte a novas placas, novos pacotes e aplicações é uma tarefa relativamente tranquila.

A versão 2013.08.1 possui suporte as seguintes placas e arquiteturas:

calao-usb-a9g20-lpw
cubieboard
ea3250
fdi3250
freescale-mpc8315erdb
freescale-p1010rdb
gnublin
integrator926
kb9202
mini2440
mx53loco
nitrogen6x
olimex-imx233-olinuxino
openblocks-a6
pandaboard
phy3250
qemu-arm-nuri
qemu-arm-versatile
qemu-arm-vexpress
qemu-microblazebe-mmu
qemu-microblazeel-mmu
qemu-mips64-malta
qemu-mips-malta
qemu-mipsel-malta
qemu-ppc-g3beige
qemu-ppc-mpc8544ds
qemu-ppc-virtex-ml507
qemu-sh4-r2d
qemu-sparc-ss10
qemu-x86-64
qemu-x86
Raspberry Pi
s6lx9-microboard
sheevaplug
telit-evk-pro3

 

Site: www.buildroot.org
Documentação: www.buildroot.org/downloads/manual/manual.html
Download: www.buildroot.org/downloads
Código fonte: git.buildroot.net
Mailing list: www.buildroot.org/lists.html
Canal IRC:  irc://freenode.net/#buildroot
Bugtracker: bugs.uclibc.org

 

 

PTXdist

 

Criado e mantido pela empresa Pengutronix é licenciado sob a GPL e é baseado em uma cadeia de Makefiles.
É utilizado juntamente com o projeto OSELAS.Toolchain() e dá suporte as arquiteturas: arm, x86, avr, mips e PowerPC.
Através do OSELAS.BSP() é possível compilar bootloader e kernel para as placas:

Energy Micro Giant Gecko
Chumby One
CuBox
Mini2440
Mini6410
BeagleBone (white/black)
Raspberry Pi
Versatilepb
Vexpress

 

Site: www.ptxdist.org
Documentação: www.pengutronix.de/software/ptxdist/documentation_en.html
Download: www.pengutronix.de/software/ptxdist/download/
Código fonte: git.pengutronix.de/?p=ptxdist.git;a=summary
Mailing list: www.pengutronix.de/mailinglists/index_en.html

 

 

LTIB - Linux Target Image Builder

 

Criado por Stuart Hughes, da Freescale, está licenciado sob a GPLv2 e é baseado em uma cadeia de Makefiles, rpm e scripts perl.
Possui uma lista de toolchains que podem ser utilizadas, além de uso de uma toolchain pré instalada no host.
Provê suporte para arquiteuras de processadores PPC, ARM e Coldfire e as seguintes placas:

arm9dimm3250
cobra5475
ea3131
ea3152
ea3250
ep93xx
imx21ads
imx27ads
imx31ads
lpd7a404
m520xevb
m5253evb
m532xevb
m537xevb
mcf5445x
mcf547x_8x
mpc5121ads
mpc5200
mpc7448hpcii
mpc82xx
mpc8349emds
mpc8349itx
mpc8349mds
mpc8360epb
mpc837xemds
mpc8536ds
mpc8548cds
mpc8555cds
mpc8560ads
mpc860fads
mpc8641hpcn
phy3250
qs875s
rigoletto
rpi
tqm823l
ucdimm_dbvz

 

Site: savannah.nongnu.org/projects/ltib/
Download: download.savannah.gnu.org/releases/ltib/
Código fonte: cvs.savannah.gnu.org/viewvc/?root=ltib
Mailing list: savannah.nongnu.org/mail/?group=ltib

 

 

Open Bricks

 

Criado por Benjamin Zores, está sob a licença GPL e é baseado em uma cadeia de Makefiles e shell scripts.
É o projeto utilizado para a construção da distribuição GeeXboX.
Como toolchains pode ser utilizado o GNU/gcc e o CodeSourcery.
Provê suporte as arquiteturas arm, i386, x86_64, mips e ppc e as seguintes placas:

PandaBoard
BeagleBoard
Nokia N900
OmapZoom 2
ISEE IGEPv2
AlwaysInnovating TouchBook
nVidia Harmony
Snowball
CuBox
Raspberry Pi

 

Site: www.openbricks.org
Documentação: www.openbricks.org/introduction
Download: www.openbricks.org/download
Código fonte: git.openbricks.org/?p=openbricks.git
Mailing list: www.openbricks.org/mailing-lists
Fórum: www.openbricks.org/forums

 

 

Yocto Project

 

Desenvolvido em conjunto com o Openembedded é uma coleção de ferramentas para criação de distribuições de Linux embarcado de alta complexidade e está sob as licenças MIT e GPLv2. É baseado no bitbake e um conjunto de scripts python.
O projeto é amparado pela The Linux Foundation e recebe contribuições dos principais players do mercado (Intel, Texas Instruments, Freescale, Windriver, Mentor Graphics, Linaro etc).
Pode ser utilizado com diversas toochains, e além de gerar SDK possui integração com Eclipse e Anjuta para o desenvolvimento de aplicações.

Provê suporte para as arquiteturas x86, arm, mips, ppc, zynq, microblaze e uma infinidade de placas e a lista de pacotes é bastante extensa.

Possui uma organização em camadas onde a adição de novos BSPs, pacotes e distribuições é bastante facilitada.

 

Site: www.yoctoproject.org
Documentação: www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html
Download: www.yoctoproject.org/downloads
Código fonte: git.yoctoproject.org/cgit/cgit.cgi/poky
Mailing list: lists.yoctoproject.org
Canal IRC: www.yoctoproject.org/tools-resources/community/irc
Bugtracker: bugzilla.yoctoproject.org

 

 

Para aprender mais

 

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

BeagleBone Black + Yocto

 

Qual desses sistemas de build você utiliza para a construção do Linux embarcado do teu produto?

NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Diego Sueiro
Formado em Engenharia de Controle e Automação pela UNIFEI e CEO do Embarcados, atualmente trabalho na Inglaterra com Desenvolvimento de Sistemas Linux Embarcado Real Time. Sou consultor e desenvolvedor de software para Sistemas Embarcados com vasta experiência em projetos com processadores de 8bits a 32bits, sistemas bare metal, RTOS, Linux Embarcado e Android Embarcado. Um apaixonado por Pink Floyd e Empreendedorismo.

28
Deixe um comentário

avatar
 
26 Comment threads
2 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
rogerio suhet de carvalhoDiego SueiroRaphael RodriguesMatheus Quick Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
rogerio suhet de carvalho
Visitante
rogerio suhet de carvalho

Boa tarde !!! Sou Professor da rede Pública Estadual em Matemática e Física. Diretor Executivo do Instituto de Educação Superior IesbaSchool. Estou estudando Sistemas Operacionais, Arquiteturas de Computadores, Sistemas Embarcados ARM e muito C, Assembly e muito mais. Estou desejando criar nosso próprio Clone do Raspberry para servir como parte de uma Plataforma de Desenvolvimento conectado com o nosso Arduino para ser utilizado no Ensino da Matemática e Física em Escolas Públicas. Esse nosso Clone do Raspberry servirá como Mini Computador de baixo custo para formação de Laboratórios em Escolas Públicas para Ensino da Programação de Computadores em C, C++… Leia mais »

rogerio suhet de carvalho
Visitante
rogerio suhet de carvalho

Estou buscando pessoas que tenha competências para construção de um Clone do Raspberry. Conseguimos um investidor que está interessado em investir mas todo investidor deseja o ROI (Retorno do Investimento). Por isso que temos um Projeto que torna-o viável para o investidor e para nós que temos onde utilizar. Desejamos ter o nosso Clone do Raspberry com nossa marca para encima dele startarmos outros projetos.
Contato: (27) 995764987 WhatSaap
Email: [email protected]

Matheus Quick
Visitante
Matheus Quick

muito bom, excelente artigo

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]

trackback

[…] Embedded Linux Build Systems […]