Embedded Labworks
Desenvolvendo Sistemas Linux Embarcado
Build system
Embedded Labworks
O DESAFIO: INTEGRAR TUDO ISSO Biblioteca
Biblioteca Toolchain
Biblioteca
Biblioteca Biblioteca C Linux kernel Bootloader Hardware
Embedded Labworks
O DESAFIO: INTEGRAR TUDO ISSO (cont.) u-boot.bin
uImage
rootfs.img
Embedded Labworks
INTEGRANDO TUDO ✗
✗
✗
O que vimos até aqui foi um passo-a-passo de como desenvolver um sistema Linux embarcado do zero. Na prática, não precisamos desenvolver um sistema Linux manualmente, ja que é uma atividade trabalhosa, demorada e suscetível à erros. Portanto, temos normalmente duas possíveis soluções para trabalhar no desenvolvimento de sistemas com Linux embarcado: 1. Usar uma distribuição Linux pronta. 2. Usar um sistema de build (build system).
Embedded Labworks
DISTRIBUIÇÃO PRONTA ✗
✗
✗
Existem diversas distribuições comerciais prontas para Linux embarcado: MontaVista, Timesys Linux, Wind River Linux, etc. Existem também diversas soluções abertas, incluindo Android, Emdebian, Ubuntu embedded, Tizen, Angstrom, Meego, etc. Vantagens: ✗
✗
✗
Simplicidade de uso. Facilidade na instalação de novos pacotes. Framework de desenvolvimento pronto e funcional.
Embedded Labworks
DISTRIBUIÇÃO PRONTA (cont.) ✗
Desvantagens: ✗
✗
✗
✗
✗
Falta flexibilidade (compatibilidade com plataforma de hardware, mecanismo de inicialização, framework de desenvolvimento disponível, erros em pacotes da distribuição, etc). Normalmente o rootfs é grande, ocupa muito espaço no dispositivo de armazenamento. Tempo de boot normalmente alto. Requer customização para deixar o sistema mais leve. Difícil de levantar quais pacotes open source são usados.
Embedded Labworks
BUILD SYSTEM ✗
✗
✗
✗
O build system permite gerar um sistema Linux completo do zero. Ele automatiza o processo de geração dos diversos componentes do sistema, incluindo o toolchain, o kernel, o bootloader, as bibliotecas e as aplicações. Normalmente já contém um conjunto grande de pacotes configurados para serem habilitados e utilizados pelo seu sistema. E facilita o trabalho de adicionar novos pacotes se necessário.
Embedded Labworks
BUILD SYSTEM (cont.) ✗
Vantagens: ✗
✗
✗
Flexibilidade. O processo de build torna-se reproduzível, facilitando o trabalho de recompilação, correção de problemas e adição de novas funcionalidades.
Desvantagens: ✗
✗
Tempo extra para configurar a ferramenta. É necessário conhecimento do funcionamento da ferramenta e de mecanismos de compilação para adicionar novos pacotes se necessário e corrigir possíveis erros de compilação.
Embedded Labworks
FERRAMENTAS ✗
✗
✗
Buildroot, desenvolvido pela comunidade: http://www.buildroot.net PTXdist, desenvolvido pela empresa Pengutronix: http://www.pengutronix.de/software/ptxdist/index_en.ht LTIB, desenvolvido principalmente pela Freescale: http://www.ltib.org/
Embedded Labworks
FERRAMENTAS (cont.) ✗
✗
✗
OpenEmbedded, mais flexível (e também mais complexo): http://www.openembedded.org Yocto, evolução do OpenEmbedded: http://www.yoctoproject.org/ Sistemas Timesys).
comerciais
(MontaVista,
WindRiver,
Embedded Labworks
LTIB ✗
✗
✗
✗
LTIB (Linux Target Image Builder) é uma ferramenta usada para desenvolver e liberar BSPs (Board Support Packages). http://ltib.org/ Projeto inicialmente patrocionado pela Freescale, suporta gerar imagens para ARM, PPC e Coldfire. Permite gerar imagens do bootloader, kernel e rootfs. Usa o sistema de pacotes RPM, e possui em torno de 200 aplicações/bibliotecas disponíveis.
Embedded Labworks
BUILDROOT ✗
✗
✗
Desenvolvido pelos mesmos mantenedores da uClibc. Possibilita gerar o toolchain, o bootloader, o kernel e o rootfs com muitas bibliotecas e aplicações disponíveis. Mais de 700 aplicações e bibliotecas integradas, de utilitários básicos à bibliotecas mais elaboradas como X.org, Qt, Gtk, Webkit, Gstreamer, etc.
✗
Ótima solução para projetos pequenos e médios.
✗
Desde a versão 2009.02 um novo release é liberado
Embedded Labworks
CONFIGURANDO O BUILDROOT ✗
Permite configurar, dentre outras opções: ✗
✗
✗
✗
✗
✗
✗
Arquitetura e modelo da CPU. Toolchain. Bootloader. Kernel. Bibliotecas e aplicações. Tipos das imagens do rootfs (ext2, jffs2, etc).
Para configurar: make menuconfig
Embedded Labworks
CONFIGURANDO O BUILDROOT
Embedded Labworks
COMPILANDO O BUILDROOT ✗
✗
Configuração também fica armazenada em um arquivo .config. Para compilar: make
✗
No final do processo de compilação, as imagens estarão disponíveis no diretório abaixo: ls output/images/ rootfs.ext2 rootfs.jffs2
u-boot.bin
uImage
Embedded Labworks
LABORATÓRIO
Gerando um sistema Linux do zero com o Buildroot