28 Comentários

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?

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 » Embedded Linux Build Systems
Comentários:
Notificações
Notificar
guest
28 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
rogerio suhet de carvalho
rogerio suhet de carvalho
09/09/2018 15:22

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
rogerio suhet de carvalho
Reply to  rogerio suhet de carvalho
09/09/2018 15:28

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]

Diego Sueiro
Diego Sueiro
31/10/2013 09:50

Obrigado Raphael.

O GNU toolchain dá suporte à compilação e debug de aplicações UEFI. Veja aqui um exemplo:
http://wiki.osdev.org/UEFI#Using_GNU_toolchain_for_compiling_and_debugging_EFI_applications

A Toolchain do Linaro também:
https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build

No Yocto existe uma receita para produzir binários efi usando o gnu-efi:
http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/tree/common/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb?h=master

Desenvolvi um projeto com o Yocto para uma plataforma x86 que utilizava o syslinux bootando via UEFI. Não sei te dizer se ele é capaz de fazer para ARM também.

Encontrei esse artigo bem interessante falando sobre UEFI em ARM:
http://allsoftwaresucks.blogspot.com.br/2013/04/uefi-and-arm.html

Consegui responder a tua dúvida? Sinto que não entendi ela muito bem.

Raphael Rodrigues
Raphael Rodrigues
Reply to  Diego Sueiro
06/11/2013 13:16

Obrigado Diego.
É exatamente isso que queria saber. Vou estudar os links que você passou e ver como eu faço para criar imagens para boot seguro.
Valeu!

Raphael Rodrigues
Raphael Rodrigues
31/10/2013 08:19

Excelente artigo.
Pergunta: algum desses Toolchains prepara o kernel para ser executado por um sistema UEFI?

Matheus Quick
Matheus Quick
13/03/2017 00:59

muito bom, excelente artigo

trackback
22/04/2015 21:40

[…] Embedded Linux Build Systems […]

trackback
24/11/2014 05:21

[…] Embedded Linux Build Systems […]

trackback
24/11/2014 05:16

[…] Embedded Linux Build Systems […]

Talvez você goste:

Séries

Menu

WEBINAR
 
RISC-V:
Novidades de 2020

 

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



 
close-link