Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019

18 views

Published on

Buidroot é uma ferramenta para automação do processo de geração de um sistema Linux para dispositivos embarcados. O objetivo da palestra é dar uma visão geral dos componentes de um sistema embarcado que utiliza Linux e como gerar um sistema Linux embarcado com o Buildroot.

Renato Severo é Engenheiro de Computação pela Unipampa Bagé. Especialista em Sistemas Embarcados pela UERGS Guaíba. Desenvolvedor de Sistemas Embarcados na DATACOM em Eldorado do Sul.

Para mais informações acesse: https://linkedin.com/in/renatossevero/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019

  1. 1. Tchelinux Caxias do Sul UCS Caxias do Sul - RS 11/05/2019 Linux embarcado BeagleBone Buildroot
  2. 2. Apresentação Renato Severo Engenheiro de Computação - Unipampa Bagé/RS Especialização em Sistemas Embarcados - UERGS Guaíba/RS Desenvolvedor de Software Embarcado na DATACOM - Eldorado do Sul/RS
  3. 3. Importante! Perguntem!
  4. 4. Agenda Agenda: - Motivação. - Visão geral Sistemas Embarcados. - Visão geral BeagleBone. - Buildroot: - Visão geral - Gerar imagem (Kernel + uboot + rootfs) para BBB.
  5. 5. Motivação ● Quando comecei a trabalhar com embarcados, não sabia ”o que estava acontecendo”. ● Necessidade de ter uma visão ”do todo”. ● Era executar make, ir pegar um café e o firmware estava pronto. ● Próximo passo era só grama o “.im” na flash do equipamento.
  6. 6. Sistema Embarcado ● Plataforma de Hardware e Software específicos. ● Baixo custo. ● Normalmente com restrições: Pouca memória RAM e de armazenando, consumo de energia, etc… ● Propósito específico.
  7. 7. Exemplos de Sistemas Embarcados Fig 1 - Exemplos de sistemas embarcados.
  8. 8. Exemplos de Sistemas Embarcados Fig 2 - Componentes básicos de um sistema Embarcado Linux[1]
  9. 9. Formas de programar ● Depende dos requisitos. ● Loop principal. Exemplo: IDE Arduino. ● Orientado a interrupções. ● Multitarefas (máquina de estados). ● Multitarefas (Kernel). ● Multitarefa preemptivo(RTOS).
  10. 10. Formas de programar ● Depende dos requisitos. ● Loop principal. Exemplo, IDE Arduino. ● Orientado a interrupções. ● Multitarefas (máquina de estados). ● Multitarefas (Kernel). ● Multitarefa preemptivo(RTOS).
  11. 11. Componentes de um Sistema Embarcado Linux Fig 3 - Componentes básicos de um sistema Embarcado Linux[1]
  12. 12. Sequência de inicialização Fig 4 - Componentes do Kernel Linux[2]
  13. 13. Bootloader ● Basicamente duas tarefas: Iniciar o hardware, carregar o Sistema Operacional. ● No entanto ele tem outras funcionalidades: ○ Carregar imagens pela rede ○ Diagnóstico do Hardware ○ Passagem de parâmetros pro Kernel ○ Em processadores mais recentes, 2 estágios: ROM, dispositivo de armazenamento
  14. 14. Bootloader ● Grub (x86 PC). ● U-boot (ARM, PowerPC, MIPS, m68k, Microblaze, x86, NIOS, SuperH, Sparc). ● Barebox (x86, ARM, MIPS, PowerPC)
  15. 15. Kernel ● Suporta mais de 30 arquiteturas (x86, ARM, PPC, MIPS, ● Coldfire ...) ● Originalmente feito para CPUs com MMU(Memory ● Management Unit) ● Projeto uClinux. Criado para lidar com CPUs sem MMU. ● Barramentos de comunicação: I2C, SPI, CAN, 1-wire, USB, ● .... ● Provê funcionalidades: Gerência de processos e memória, ● comunicação entre processos, temporizadores, pilha TCP/IP, ● etc..
  16. 16. Componentes do Kernel Linux Fig 5 - Componentes do Kernel Linux[2]
  17. 17. Toolchain ● Compilação cruzada é quando se compila código em uma plataforma diferente. ● Conjunto de aplicações usadas para gerar/debugar o software do produto ● Compiler, debugger, Biblioteca padrão C. ● Linaro(ARM), Sourcery Codebench(ARM, MIPS, PPC). ● Gerar o toolchain: Crosstool-ng, Buildroot, Yocto Project.
  18. 18. Rootfs ● Hierarquia global de diretórios e arquivos que representam todos arquivos no sistema ● Possui as bibliotecas do sistema(uClibc, glibc, etc...) ● Outras aplicações: Python, gdb, http server, etc ● Busybox. Muito útil :D ● Sistemas de arquivos suportados: ext2, ext4, ext4, jffs2, ubifs, etc... ● Componentes mı́nimos: init, shell, biblioteca C, arquivo dev, proc e sysfs. ● Hierarquia mı́nima: bin, dev, lib, sbin, usr/bin, usr/lib, ● usr/sbin, proc, sys.
  19. 19. BeagleBone ● Texas Instruments AM335x (ARM Cortex-A8 CPU). ● 512 MB RAM. ● Conector cartão microSD. ● Conector Ethernet, USB host e device, microSD. ● 2x46 conector de pinos com acesso à barramentos (I2C, SPI, UART). ● Conector HDMI.
  20. 20. Diagrama de blocos Fig 6 - Diagrama de blocos da BB[3]
  21. 21. Família BeagleBone Fig 7- BB disponíveis.
  22. 22. E agora?! Como junto as peças?! Fig 3 - Componentes básicos de um sistema Embarcado Linux[1]
  23. 23. Sistemas de build ● Yocto ● OpenEmbedded. ● Buildroot. ● OpenWRT. ● ...
  24. 24. Sistemas de build ● Yocto ● OpenEmbedded. ● Buildroot. ● OpenWRT. ● ...
  25. 25. Buildroot ● Conjunto de Makefiles e pacthes. ● Possível gerar: toolchain, rootfs, kernel, bootloader. ● Independente de fornecedores. ● Suporta várias arquiteturas: ARM, PowerPC, x86, etc. ● Versão estável liberada a cada três meses. ● Uma versão de manutenção estendida(LTS), por ano. Atual: 2018.02 ● Download: ○ https://buildroot.org/downloads/ ○ git clone git://git.busybox.net/buildroot
  26. 26. Buildroot - Hands on! $ mkdir ~/bb_lab $ cd ~/bb_lab $ wget https://buildroot.org/downloads/buildroot-2019.02.2.tar.gz $ tar xvf buildroot-2019.02.2.tar.gz $ cd buildroot-2019.02.2 $ make menuconfig
  27. 27. Menu configuração Fig 8 -Menu principal de configuração Buildroot.
  28. 28. Menu configuração Fig 9 -Menu de configuração Buildroot.
  29. 29. $ make busybox-menuconfig # Busybox config menu Fig 10 -Menu de configuração Buildroot-busybox.
  30. 30. Buildroot ● Dependências: ○ which, sed, make, binutils, build-essential, gcc, g++, bash, patch, gzip, bzip2, perl, tar, cpio, python, unzip, rsync, file (deve estar em /usr/bin/file), bc. ○ ncurses5 (menuconfig), qt4 (xconfig), glib2, gtk2, glade2 (gconfig). $ make beaglebone_defconfig # Prepare buildroot to build BB stuff $ make menuconfig # Opens configuration menu $ make # This will make world (toolchain, kernel, rootfs, boot)!
  31. 31. Buildroot - Diretórios build ● output/ ○ staging/ Link simbólico para o ○ build/ Onde todos pacotes são extraídos e compilados. ○ target/ Sistema de arquivos do dispositivo target. Hierarquia de arquivos padrão Linux. ○ host/ Todas ferramentas host e sysroot do toolchain ○ images/ Todas imagens finais geradas: boot, Kernel, rootfs, dtbs.
  32. 32. BeagleBone cartão SD $ cp MLO /media/boot $ cp u-boot.img /media/boot $ cp zImage /media/boot $ mkdir /media/boot/dtbs $ cp am335x-bone.dtb /media/boot/dtbs/ $ sudo tar xvf rootfs.tar -C /media/rootfs $ sync Fig 11 - Formaro cartão SD[2]
  33. 33. Buildroot - defconfig $ make list-defconfigs # Lists all available defconfigs $ make savedefconfig # Save current .config into a defconfig
  34. 34. Buildroot $ make menuconfig # xconfig, gconfig $ make beaglebone_defconfig # Prepare buildroot to build BB stuff $ make menuconfig # Opens configuration menu $ make busybox-menuconfig # Busybox config menu $ make linux-menuconfig # Linux Kernel config menu $ make # This will make world (toolchain, kernel, rootfs, boot)!
  35. 35. Referências ● [1] - https://bootlin.com/training/buildroot/ ● [2] - https://e-labworks.com/treinamentos/linux/slides ● [3] - https://beagleboard.org/bone
  36. 36. Por hoje, era isso! Muito Obrigado!

×