1º iot day - o que é linux embarcado
DESCRIPTION
Apresentação "O que é Linux Embarcado" realizada no 1º IoT Day.TRANSCRIPT
![Page 1: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/1.jpg)
Linux Embarcado
![Page 2: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/2.jpg)
IoT Hackday - Telefônica
O que é Linux Embarcado?
Diego Sueiro
@diegosueiro
br.linkedin.com/in/diegosueiro
Administrador do Embarcados
Proprietário da ESD Tecnologia
![Page 3: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/3.jpg)
SOBRE ESTE DOCUMENTO
● Esta apresentação é baseada na Wikipedia, no material de Treinamento da Embedded Labworks (e-labworks.com/treinamentos/linux/source) e no material de treinamento disponibilizado pela Free Electrons:http://free-electrons.com/doc/training/embedded-linux
● Este documento é disponibilizado sob a Licença Creative Commons BY-SA 3.0.http://creativecommons.org/licenses/by-sa/3.0/legalcode
![Page 4: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/4.jpg)
SOBRE O PALESTRANTE
● Formado em 2006 em Eng. de Controle e Automação pela UNIFEI.
● É proprietário da ESD Tecnologia, onde atua com consultoria, desenvolvimento de software para sistemas embarcados: http://esdtec.net
● Administrador do Embarcados.com.br
![Page 5: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/5.jpg)
Introdução à Linux embarcado
![Page 6: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/6.jpg)
OS 3 MARCOS
● 1970: Engenheiros da Bell Labs, liderados por Ken Thompson e Dennis Ritchie, criam o sistema operacional UNIX.
● 1983: Richard Stallman, projeto GNU e o conceito de software livre. Começa o desenvolvimento do gcc, gdb, glibc e outras ferramentas importantes.
● 1991: Linus Torvalds, projeto do kernel Linux, um sistema operacional UNIX-like. Em conjunto com o projeto GNU, nasce o sistema operacional GNU/Linux.
![Page 7: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/7.jpg)
Em 1991...
”I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things.”
![Page 8: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/8.jpg)
20 ANOS DEPOIS
![Page 9: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/9.jpg)
VÍDEOS
✗ Os 20 anos do Linux : linuxfoundation.org/20thvimeo.com/22030635
✗ How Linux is Built:vimeo.com/39711916
![Page 10: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/10.jpg)
O KERNEL
● Linux é o kernel!http://www.kernel.org
● As distribuições Linux (Ubuntu, Fedora, Debian, Slackware, etc) integram o kernel Linux, bibliotecas e aplicações.
● O correto é chamar estas distribuições de sistemas operacionais GNU/Linux.
● Linux embarcado é o uso do kernel Linux e de diversos componentes open-source em sistemas embarcados.
![Page 11: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/11.jpg)
PRINCIPAIS CARACTERÍSTICAS
● Distribuições GNU/Linux seguem o LSB (Linux Standard Base) que é baseado na especificação POSIX (Portable Operating System Interface) do IEEE.
● Portabilidade para mais de 20 arquiteturas!● Escalabilidade: o mesmo kernel roda em relógios,
em celulares e em servidores da bolsa de valores!● Livre de royalties.● Roda em dispositivos com pouquíssimos recursos.
![Page 12: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/12.jpg)
PRINCIPAIS CARACTERÍSTICAS (cont.)
● Qualidade: Milhares de pessoas olhando e testando o código.
● Estabilidade: capaz de rodar por muito tempo sem precisar de um único reboot.
● Modularidade: capaz de rodar apenas o que é necessário para seu projeto.
● Multicore: suporta múltiplas CPU.● Reuso de Componentes.● Controle total sobre o código-fonte do teu produto.
![Page 13: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/13.jpg)
PRINCIPAIS CARACTERÍSTICAS (cont.)
● Suporte da Comunidade.
● Recursos ”infinitos” disponíveis na internet.
![Page 14: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/14.jpg)
MITOS
● Mito 1: ”Linux is Free”.– Linux não é grátis, Linux é livre! Do 2o.
parágrafo da GPL: ”When we speak of free software, we are refering to freedom, not price”.
● Mito 2: ”Não consigo proteger a propriedade intelectual do meu produto”.
– Consegue sim, basta tomar alguns cuidados com licenças de software!
![Page 15: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/15.jpg)
Arquitetura básica
![Page 16: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/16.jpg)
ARQUITETURA BÁSICA
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 17: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/17.jpg)
COMPONENTES DO SISTEMA
● Hardware: seu produto!● Bootloader: iniciado pelo hardware, responsável pela
inicialização básica, carregamento e execução do kernel Linux.● Kernel Linux: Núcleo do sistema operacional. Gerencia CPU,
memória e I/O, exportando serviços para as aplicações do usuário.
● Rootfs: sistema de arquivos principal.– Biblioteca C: interface entre o kernel e as aplicações do usuário.
– Bibliotecas e aplicações do usuário.
● Toolchain: conjunto de ferramentas para gerar os binários do sistema.
![Page 18: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/18.jpg)
HARDWARE
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 19: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/19.jpg)
HARDWARE
![Page 20: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/20.jpg)
CPU
● Suporta mais de 25 arquiteturas diferentes (x86, ia64, ARM, PPC, MIPS, SuperH, Blackfin, Coldfire, etc).
● 32/64 bits: não foi feito para microcontroladores!● Originalmente projetado para CPUs com MMU (Memory
Management Unit).● O projeto uClinux foi criado para que o Linux pudesse ser
usado em CPUs sem MMU.http://www.uclinux.org/
● Mas boa parte do uClinux já foi integrado à árvore oficial do kernel, possibilitando o uso do Linux em diversas CPUs sem MMU (m68k e arm sem MMU, H8/300 da Hitachi, ADI Blackfin, etc).
![Page 21: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/21.jpg)
MEMÓRIA RAM
● Um sistema bem básico pode funcionar com até 8MB de RAM.
![Page 22: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/22.jpg)
DISPOSITIVOS DE ARMAZENAMENTO
● Suporta armazenamento em memória flash NAND ou NOR.
● Suporta dispositivos de armazenamento em bloco, incluindo discos e cartões SD/MMC.
● Um sistema bem básico pode funcionar com 2M de armazenamento (ou até menos!).
![Page 23: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/23.jpg)
COMUNICAÇÃO
● O Linux suporta muitos barramentos comuns em sistemas embarcados: I2C, SPI, CAN, 1-wire, SDIO, USB, etc.
● E também os principais protocolos de rede: Ethernet, Wi-Fi, Bluetooth, CAN, IPv4, IPv6, TCP, UDP, etc.
● Se o barramento ou protocolo não possuir restrições de licença, é bem provável que esteja implementado no kernel.
● Já protocolos ou barramentos com restrições de licença tem dificuldade para entrar na árvore oficial do kernel (Ex: Zigbee).
![Page 24: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/24.jpg)
CRITÉRIOS PARA SELEÇÃO
● Certifique-se de que o hardware já é suportado pelo Linux e por um bootloader open-source.
● Suporte nas versões oficiais dos projetos (kernel e bootloader) é bem melhor: maior qualidade e novas versões disponíveis.
![Page 25: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/25.jpg)
TOOLCHAIN
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 26: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/26.jpg)
TOOLCHAIN
● Conjunto de ferramentas de programação usadas para gerar determinado produto, seja um software ou mesmo um sistema completo.
● Quando a plataforma de desenvolvimento (host) é diferente da plataforma alvo (target), chamamos o toolchain de cross-compiling toolchain.
![Page 27: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/27.jpg)
TOOLCHAIN (cont.)
Binário x86
x86
Binário ARM
ARM
Código-fonte
x86
Toolchain nativo Cross-compiling toolchainHost
Target
![Page 28: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/28.jpg)
COMPONENTES DO TOOLCHAIN
● Compilador (gcc).● Assembler e Linker (binutils).● Standard C Library (glibc, uclibc,
dietlibc, etc).
![Page 29: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/29.jpg)
TOOLCHAINS PRONTOS
● GCC (GNU Compiler Collection):Suporte a 39 arquiteturas (de 8 a 64bits) http://gcc.gnu.org/
● Code Sourcery (ARM):http://www.codesourcery.com/gnu_toolchains/arm/
● MIPS:http://www.linux-mips.org/wiki/Toolchains
● Linaro (ARM):https://wiki.linaro.org/WorkingGroups/ToolChain
![Page 30: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/30.jpg)
SISTEMA LINUX EMBARCADO
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 31: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/31.jpg)
SISTEMA LINUX EMBARCADO (NA FLASH)
Bootloader
Kernel
Rootfs
Memória flash
![Page 32: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/32.jpg)
BOOTLOADER
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 33: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/33.jpg)
BOOTLOADER
● Todo hardware possui um mecanismo de inicialização, que é responsável por carregar e executar o bootloader.
● O bootloader é responsável por carregar e executar o kernel do sistema operacional (no nosso caso, o Linux).
![Page 34: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/34.jpg)
FUNCIONALIDADES DO BOOTLOADER
● Inicializar o hardware antes de executar o kernel, como por exemplo configurar a controladora de SDRAM.
● Passar parâmetros para o kernel.● Prover mecanismos para carregar e gravar o
kernel e o sistema de arquivos na memória flash ou cartão SD.
● Inicializar via rede ou pelo cartão SD.● Rotinas de diagnóstico de hardware.
![Page 35: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/35.jpg)
PRINCIPAIS BOOTLOADERS
● x86:– LILO
– Grub
● ARM, MIPS, PPC e outras arquiteturas:– U-Boot
– Barebox
– Redboot
![Page 36: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/36.jpg)
KERNEL
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 37: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/37.jpg)
INICIALIZAÇÃO BÁSICA
● Inicializa CPU, memória e barramentos.● Configura a memória virtual (se tiver MMU).● Inicializa os device drivers.● Inicia o escalonador de tarefas.● Inicia threads do kernel.● Monta sistema de arquivos principal (rootfs)
e chama o processo init.
![Page 38: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/38.jpg)
CARACTERÍSTICAS DO KERNEL
● Gerencia execução de processos e controla acesso à memória e I/O.
● Conceito de kernel space x user space.● Interface de user space com kernel space via
chamadas do sistema (system calls).● Acesso ao hardware via arquivos de
dispositivo.● Gerenciamento dinâmico dos módulos do
kernel.
![Page 39: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/39.jpg)
EXEMPLO DE SYSTEM CALL
![Page 40: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/40.jpg)
ROOTFS
Hardware
Bootloader
Linux kernel
Biblioteca C
Biblioteca Biblioteca
Biblioteca Biblioteca
Toolchain
![Page 41: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/41.jpg)
COMPONENTES BÁSICOS
● Biblioteca do sistema (uClibc, glibc, eglibc, dietlibc, etc).
● Mecanismo de inicialização.● Bibliotecas e aplicações.
![Page 42: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/42.jpg)
APLICAÇÕES PARA EMBARCADOS
● Dropbear: cliente e servidor SSH (~110K).
● Thttpd: servidor web (~88K).● DirectFB: biblioteca gráfica
(~1,4MB).● SQLite: Banco de dados (~250KB).
![Page 43: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/43.jpg)
BUSYBOX
● O canivete suíço de sistemas embarcados com Linux!
● Combina versões mais leves de ferramentas UNIX em um único binário, otimizado por tamanho.
● Geralmente as ferramentas são mais limitadas em termos de funcionalidades comparadas às originais.
![Page 44: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/44.jpg)
SISTEMA LINUX
“Desenvolver um sistema Linux embarcado
é como brincar de Lego!”
![Page 45: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/45.jpg)
BUILD SYSTEM
● Um build system é capaz de:– Gerar o toolchain.
– Compilar e gerar a imagem do bootloader.
– Configurar, compilar e gerar a imagem do kernel.
– Configurar, compilar bibliotecas e aplicações, e gerar a imagem final do rootfs.
![Page 46: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/46.jpg)
ALGUNS BUILD SYSTEMS
● Proprietários: – Monta Vista.
– Wind River.
– TimeSys.
● Open source: – Buildroot.
– OpenEmbedded / Yocto.
– PTXdist.
– LTIB.
![Page 47: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/47.jpg)
PLACAS DE DESENVOLVIMENTO
Raspberry Pi (USD 25/35):http://www.raspberrypi.org/
– CPU - ARM11 700 Mhz – Broadcom BCM2835
– RAM - 256MB / 512MB
– MMC Slot
– USB – 1 / 2
– HDMI e Video Composto
– Saída de Audio no conector de 3.5mm
– Ethernet (no modelo B)
– Barra de Pinos com expansão de I/Os do processador
![Page 48: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/48.jpg)
PLACAS DE DESENVOLVIMENTO
BeagleBone Black (USD 55):http://beagleboard.org/
– CPU – ARM Cortex-A8 1 Ghz – Texas Instruments AM335x
– RAM – 512MB
– eMMC - 4GB
– uMMC Slot
– 1 USB Host e 1 USB Device
– HDMI
– Ethernet
– Conectores com expansão de I/Os do processador
![Page 49: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/49.jpg)
OS 3 PAPÉIS DO DESENVOLVEDOR
● Desenvolvedor de aplicações: desenvolve aplicações Linux.
● Desenvolvedor de BSP (Board Support Package): porta o kernel e o bootloader, desenvolve os device drivers para os dispositivos de hardware usados no produto, etc.
● Integrador: Integra todos os componentes (bootloader, kernel, bibliotecas e aplicações) em um sistema Linux embarcado.
![Page 50: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/50.jpg)
COMO SE TORNAR UM DESENVOLVEDOR
● Inglês● Hardware: Análise de Esquemáticos e Data Sheets● Usuário Avançado de linha de comando de Distros
GNU/Linux● Programação em Assembly (Básico), C (Avançado) e Shell
Script● Livros:
– Linux Kernel Development
– Linux Device Drivers
– The Linux Programming Interface● Ter uma placa de desenvolvimento● Use e abuse do Oráculo
![Page 51: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/51.jpg)
Perguntas e Respostas
?
![Page 52: 1º IoT Day - O que é Linux Embarcado](https://reader030.vdocuments.site/reader030/viewer/2022013118/5590b0a61a28abef058b45f4/html5/thumbnails/52.jpg)
OBRIGADO PELA PRESENÇA
www.embarcados.com.br
www.esdtec.net
Google Grupos sis_embarcados