Tópicos principais | Introdução ao Yocto Project, Poky e metadados, sistema de build OpenEmbedded, conceito de camadas, criando e gerenciando camadas, conceito de receitas, criando e mantendo receitas, customização de imagens, desenvolvimento de BSP, gerando e utilizando SDKs, ferramentas e recursos adicionais |
Duração | 3 dias - 24 horas - 40% de teoria e 60% de prática |
Instrutor | Sergio Prado |
Público-alvo | Estudantes, engenheiros, desenvolvedores e líderes de equipes de desenvolvimento de software para sistemas embarcados |
Pré-requisitos | Conhecimentos básicos de ferramentas de linha de comando GNU/Linux (cat, find, grep, ps, vi, etc), arquitetura de sistemas com Linux embarcado, linguagem C, uso de toolchain e ferramentas de compilação (gcc, make, autotools) |
Material de estudo | O material de estudo é composto pelos slides, o livro de atividades e exercícios, os guias de referência e documentos de estudo adicional. Todo o material é fornecido de forma eletrônica no início do treinamento |
Kit de desenvolvimento | O treinamento pode ser realizado no emulador (QEMU) ou em um kit de desenvolvimento baseado no SoM Colibri i.MX6 (ARM Cortex-A9) da Toradex. Os kits de desenvolvimento são emprestados aos alunos durante o treinamento para a execução das atividades práticas. Se necessário, e conforme a necessidade da empresa contratante, o treinamento pode ser portado para uma outra plataforma de hardware |
Apresentação: Arquitetura de sistemas com Linux embarcado, introdução ao Yocto Project, histórico e motivações do projeto, principais características e arquitetura básica, Poky e seus componentes, documentação do projeto.
Apresentação: Introdução ao Poky, preparando a máquina de build, baixando o Poky e estudando sua estrutura, preparando o diretório de build, bblayers.conf e local.conf, processando uma receita de imagem, diretório de saída e imagens geradas, gerando uma imagem para o QEMU.
Laboratório: Primeiros passos com o Poky: neste exercício teremos um contato inicial com o Yocto Project, gerando e testando uma distribuição GNU/Linux mínima no QEMU.
Apresentação: Introdução ao sistema de build, BitBake e metadados, receitas, classes, arquivos de configuração, tipos de camadas (BSP, distro, software), usando o BitBake, funcionamento interno do BitBake, tarefas e gráfico de dependências.
Laboratório: Explorando o sistema de build: neste exercício iremos explorar com mais detalhes o sistema de build.
Apresentação: Introdução ao conceito de camadas, criando uma camada, estrutura de arquivos e diretórios de uma camada, variáveis do layer.conf, utilizando as ferramentas bitbake-layers e yocto-check-layer.
Laboratório: Criando camadas: neste exercício aprenderemos a criar e configurar camadas com o Yocto Project.
Apresentação: Introdução às receitas, receitas vs pacotes, estrutura de uma receita, principais variáveis utilizadas em receitas, herdando classes e implementando tarefas, etapas do processamento de uma receita, diretório de processamento e logs de uma receita.
Laboratório: Desenvolvendo receitas: neste exercício aprenderemos a criar receitas com o Yocto Project.
Apresentação: Conceitos avançados de receitas, sintaxe de atribuição de variáveis do BitBake, overrides e variable flags, arquivos de append, PACKAGECONFIG, diretivas de include e require, versionamento e prioridade, depurando receitas, ferramentas devshell e oe-pkgdata-util, verificações de qualidade (QA checks).
Laboratório: Customizando receitas: neste exercício aprenderemos a customizar receitas com o Yocto Project.
Apresentação: Customização de imagens, criando receitas de imagem, grupos de pacotes (packagegroups), funcionalidades de imagens (image features), adicionando usuários e grupos, configurando permissões de arquivos e diretórios do rootfs, scripts de post-install, alterando o formato da imagem, criando arquivos de configuração de distro, variáveis de uma distribuição, distro features, habilitando o gerenciamento de pacotes na distro, dicas para customização e gerenciamento de camadas.
Laboratório: Customizando imagens: neste exercício aprenderemos a customizar as imagens geradas com o Yocto Project.
Apresentação: Desenvolvimento de camadas de BSP, criando uma camada de BSP, arquivo de configuração de machine, principais variáveis de uma machine, mecanismo de provides, variáveis de compilação do U-Boot e do kernel, funcionalidades de machine (machine features), criando receitas de bootloader, criando receitas de kernel e módulos do kernel, aplicando patches e alterando a configuração do kernel, kernel advanced metadata.
Laboratório: Desenvolvendo e customizando BSPs: neste exercício aprenderemos a criar arquivos de configuração de machine e customizar BSPs no Yocto Project.
Apresentação: Trabalhando com SDK (Software Development Kit), componentes de um SDK (toolchain, sysroot, scripts e ferramentas adicionais), tipos de toolchain, gerando SDKs, receita meta-toolchain, tarefas populate_sdk e populate_sdk_ext, instalando e utilizando SDKs, Extensible SDK (eSDK) e a ferramenta devtool.
Laboratório: Gerando e utilizando SDKs: neste exercício aprenderemos a compilar, instalar e utilizar o Extensible SDK do Yocto Project.
Apresentação: Ferramentas e recursos adicionais, gerenciamento de licenças, caches de compilação (shared state cache), históricos de build (build history), Toaster, ferramenta recipetool, ferramentas de compilação (build appliance, CROPS, autobuilder).
Laboratório: Explorando ferramentas e recursos adicionais: neste exercício aprenderemos a utilizar algumas ferramentas adicionais do Yocto Project.
Apresentação: Considerações finais, links e referências de estudo, livros, conclusão do treinamento.