linux em sistemas embarcados - sacta 2010 - unipampa
DESCRIPTION
Palestra apresentada durante a Semana Acadêmica do Centro de Tecnologia de Alegrete - SACTA 2010 - da Universidade Federal do Pampa - UNIPAMPA, em Alegrete - RS. Resumo: Esta palestra tem como tema o desenvolvimento de Linux para sistemas embarcados. Primeiramente, será apresentada uma visão geral da área. Na sequência, serão abordados os problemas típicos envolvendo o porte do Linux para novas plataformas, a preparação de toolchains para cross-compilação, bootloaders, escolha de sistemas de arquivos, preparação do kernel para trabalhar com os barramentos e dispositivos típicos em sistemas embarcados, depuração do hardware embarcado, entre outros. A palestra terá também uma seção de demonstração utilizando uma placa baseada em PowerPC.TRANSCRIPT
![Page 1: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/1.jpg)
Linux em Sistemas Embarcados
Marcelo Veiga Neves [email protected]
SACTA 2010 Alegrete, 25 de junho de 2010
![Page 2: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/2.jpg)
Roteiro
• Introdução • Projeto de Linux Embarcado • Demonstração
• Referências
1
![Page 3: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/3.jpg)
Roteiro
• Introdução – Sistemas Embarcados
– Linux Embarcado – Exemplos de Sistemas Embarcados com Linux
– Inicialização do Linux em Sistemas Embarcados
• Projeto de Linux Embarcado
• Demonstração • Referências
2
![Page 4: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/4.jpg)
Introdução
• ObjePvos: – Conhecer a área de Linux para Sistemas Embarcados – Compreender o funcionamento de um Sistema de Linux Embarcado
– Quais os componentes de soTware precisam ser preparados para criar um Linux Embarcado completo
• Pré-‐requisitos: – Compreensão do papel e funcionamento do Kernel do Linux
– Familiaridade com ambiente de desenvolvimento Linux
3
![Page 5: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/5.jpg)
Sistemas Embarcados
• Definição de Sistema Embarcado:
• Requisitos/CaracterísPcas de Sistemas Embarcados – Recursos reduzidos (CPU, memória, energia, etc.) – Armazenamento de estado sólido (flash) – Operação “Head less” (sem display) – Etc.
4
“Um sistema embarcado é um computador que é completamente encapsulado ou dedicado ao disposiPvo ou sistema que ele controla.” (Wikipedia)
![Page 6: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/6.jpg)
5
![Page 7: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/7.jpg)
Oportunidades em Linux Embarcado
• Oportunidade para: – Nerds que gostam de Linux e SoTware Livre – Quem quer desenvolver em nível de Kernel
• Porte do Linux para novas plataformas • Criação e adaptação de drivers de disposiPvos • Implementação de protocolos de rede
– Quem prefere programar em C em ambiente Linux (também tem lugar para quem gosta de Java, C++, Python, etc.)
• Mercado está aquecido e não existe profissionais • Oportunidades também para empreendedores
6
![Page 8: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/8.jpg)
Linux Embarcado
• Todo o soTware necessário para o Linux funcionar em um Sistema Embarcado – Aplicações para prover funcionalidades específicas do sistema
– Kernel com configuração específica – Bootloader para configurar o hardware e iniciar o sistema operacional
7
![Page 9: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/9.jpg)
Inicialização do Linux
8
![Page 10: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/10.jpg)
O que precisa ser preparado?
9
![Page 11: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/11.jpg)
O que precisa ser preparado?
10
![Page 12: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/12.jpg)
O que precisa ser preparado?
11
![Page 13: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/13.jpg)
O que precisa ser preparado?
12
![Page 14: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/14.jpg)
O que precisa ser preparado?
13
![Page 15: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/15.jpg)
O que precisa ser preparado?
14
![Page 16: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/16.jpg)
Roteiro
• Introdução • Projeto de Linux Embarcado
– Toolchain – Bootloader – Kernel – Root Filesystem
• Demonstração • Considerações Finais
15
![Page 17: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/17.jpg)
Toolchain
• Conjunto de ferramentas necessárias para compilar (ou cross-‐compilar) um sistema Linux
• Componentes: – BinuPls (as, ld, ar, ramlib, strip, etc.) – Kernel headers (#include <linux/*>, <asm/*>, etc.) – Compilador C (GCC) – Biblioteca C (glibc, uClibc, dietlibc, etc.)
• Opções para geração de toolchain: – Gerar manualmente (compilando cada pacote) – Obter uma cópia pré-‐compilada – UPlizar uma ferramenta de geração (crosstool-‐ng, buildroot, PTXdist,
OpenEmbedded, etc.)
16
![Page 18: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/18.jpg)
Roteiro
• Introdução • Projeto de Linux Embarcado
– Toolchain – Bootloader – Kernel – Root Filesystem
• Demonstração
• Referências
17
![Page 19: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/19.jpg)
Bootloader
• Primeiro soTware que executa quando o hardware é ligado
• Responsável por carregar e transferir o controle para o Kernel
• Para isso: – Configura o hardware – Oferece comandos para
configuração e diagnósPco
18
![Page 20: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/20.jpg)
Bootloaders
19 Fonte: hzp://www.elinux.org/Bootloader, 13/11/09
![Page 21: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/21.jpg)
Bootloaders
20 Fonte: hzp://www.elinux.org/Bootloader, 13/11/09
![Page 22: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/22.jpg)
Roteiro
• Introdução • Projeto de Linux Embarcado – Toolchain – Bootloader – Kernel – Root Filesystem
• Demonstração • Referências
21
![Page 23: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/23.jpg)
Kernel do Linux
22
![Page 24: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/24.jpg)
Exemplo: Linux para PowerPC
• Porte para uma nova plataforma • PowerPC: – Device Tree Blob (DTB)
• Arquivo que descreve o hardware • Também uPlizado pelo bootloader
• Outras arquiteturas: – Modificar o código fonte – Ex: ARM
• Modificar/criar arch/arm/mach-‐[plataforma]/
23
![Page 25: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/25.jpg)
Roteiro
• Introdução • Projeto de Linux Embarcado – Toolchain – Bootloader – Kernel – Root Filesystem
• Demonstração • Referências
24
![Page 26: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/26.jpg)
Root Filesystem
• Árvore de diretórios contendo bibliotecas, scripts, aplicações, etc.
• Opções para geração de roofs: – Manual (compilando e instalando cada pacote) – UPlizando um sistema de build
• Tipos de sistemas de arquivos: – Ext2/3 – Em flash:
• SquashFS (read-‐only, rápido) • JFFS2 (mais uPlizado atualmente) • UBIFS (sucessor do JFFS2, rápido)
– cramfs,initramfs, etc.
25
![Page 27: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/27.jpg)
Root Filesystem
26 Fonte: Embedded building tools BOF, Thomas Petazzoni (ELC 2009)
Ferramentas para geração
![Page 28: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/28.jpg)
Root Filesystem
27 Fonte: Embedded building tools BOF, Thomas Petazzoni (ELC 2009)
Ferramentas para geração
![Page 29: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/29.jpg)
Roteiro
• Introdução • Projeto de Linux Embarcado • Demonstração
• Referências
28
![Page 30: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/30.jpg)
Demonstração na Placa
• Roteador 3G da Digitel – NRX 5100
• Processador PowerPC de 333 MHz
• 64 MB de memória RAM e 32 MB de Flash
29
• Demonstração: • Boot do Linux Embarcado via rede (protocolo TFTP) • Configuração da rede e dos parâmetros de boot do Kernel: • Acesso ao equipamento, servidor Web, sistemas de
arquivos, etc.
![Page 31: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/31.jpg)
Referências
• Embedded Linux Conference – hzp://www.embeddedlinuxconference.com/
– Apresentações (ELC 2009): • It's Alive! -‐ Linux on Embedded PowerPC porPng guide, Grant Likely • Update on filesystems for flash storage, Michael Opdenacker
• Embedded Linux and Mainline Kernel, David Woodhouse
30
![Page 32: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/32.jpg)
Referências
• Livros: – Building Embedded Linux Systems, Karim Yaghmour
– Embedded Linux Primer: A PracPcal Real-‐World Approach, Christopher Hallinan
31
![Page 33: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/33.jpg)
Referências
• Embedded Linux Wiki – hzp://www.elinux.org
• Free Electrons – hzp://free-‐electrons.com/docs/
32
![Page 34: Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA](https://reader034.vdocuments.pub/reader034/viewer/2022042602/557e8420d8b42acf658b4b14/html5/thumbnails/34.jpg)
Linux em Sistemas Embarcados
Marcelo Veiga Neves [email protected]
SACTA 2010 Alegrete, 25 de junho de 2010