SlideShare uma empresa Scribd logo
1 de 30
Globalcode – Open4educationGlobalcode – Open4education
Embarcados – Zephyr o sistema operacional de
tempo real da Linux Foundation
Felipe Silva Neves
Globalcode – Open4education
Agenda:
Zephyr, visão geral e motivações;
Aquitetura do kernel:
Estrutura de diretórios;
O nanokernel;
O microkernel;
Introdução ao sistema de build:
Obtendo o kernel;
O utilitário menuconfig;
A estrutura do diretório da aplicação;
Globalcode – Open4education
Agenda cont.:
Demo: “Placa Freedom K64F, blink LED”;
Kernel object basics:
Threads e fibers;
Sincronismo com semáforos;
Mensagens entre threads (Queues);
Modelo de device drivers:
O device model;
Demo: “Driver I2C comunicando com acelerômetro”;
Conclusão.
Globalcode – Open4education
Zephyr, visão geral:
Desenvolvido a partir da seguinte parceria:
Globalcode – Open4education
Zephyr, visão geral:
Sistema operacional de tempo real;
Direcionado a dispositivos com restrições de memória e
processamento;
Escalável, footprint de memória ajustável;
Portável para multiplas arquiteturas;
Código aberto, manutenção por parceiros e comunidade.
Globalcode – Open4education
Zephyr, motivações:
Kernel de tempo real para dispositivos como microcontroladores;
Foco em aplicações voltada para internet das coisas (IoT);
Desenvolvimento de melhorias facilmente implementadas pelo usuário;
Reaproveitamento de ferramentas já existentes;
Normalização de sistema operacional embarcado;
Projeto colaborativo.
Globalcode – Open4education
Aquitetura do kernel:
O Zephyr é um projeto completo em termos de sistema operacional
embarcado:
Globalcode – Open4education
Estrutura de diretórios:
O Zephyr possui a organização própria dos diretórios do kernel:
Globalcode – Open4education
O nanokernel:
Suporta dois contextos de execução: Fibers e ISR;
Scheduling cooperativo;
Kernel objects elementáres:
LiFo;
FiFo;
Pilhas;
Semáforos;
Timers.
Menor footprint de memória possível, chegando a 8KB;
Uso em tarefas de altíssima prioridade e que precisam de
desempenho.
Globalcode – Open4education
O microkernel:
Possui um terceiro contexto de execução: Task (ou Threads);
Scheduling preemptivo;
Serviços mais complexos e poderosos:
Queues;
Mutexes (protegidos contra race-condition e inversão de prioridade);
Eventos;
Mailboxes;
Permite o uso de todos os serviços do nanokernel;
Maior footprint de memória podendo chegar a 512KB.
Globalcode – Open4education
O sistema de build:
O zephyr possui seu próprio sistema de build;
Toda infraestrutura (toolchains, binutils) são providas pelo kernel;
O uso de uma toolchain nova pode ser adicionado;
Toda a configuração do kernel é feita através de um menu de
configuração;
O kernel (bem como as toolchains) estão disponíveis para:
Windows, Linux e Mac;
Possibilidade de construir a própria toolchain;
Globalcode – Open4education
Obtendo o kernel:
Pode ser obtido diretamente da página de downloads:
https://www.zephyrproject.org/downloads
O kernel é versionado utilizando git;
Assim uma forma alternativa de obter é clonando o repositório:
git clone https://gerrit.zephyrproject.org/r/zephyr
Globalcode – Open4education
O utilitário menuconfig:
O Zephyr é um kernel altamente configurável;
Configurar todas as opções do kernel através do código seria
cansativo;
O Zephyr então gera toda a infraestrutura de build através do
conhecido menuconfig:
Globalcode – Open4education
O utilitário menuconfig:
Globalcode – Open4education
O diretório da aplicação:
Assim como o diretório do kernel, o zephyr possui um padrão para o
diretório de aplicação:
Globalcode – Open4education
Demonstração de app:
Nessa demonstração vamos configurar uma aplicação com LED RGB;
O hardware alvo utilizado: Freedom Board K64 da NXP;
A aplicação usa o Zephyr no modo microkernel e cria 3 threads;
Cada thread abre o device driver de GPIO e manipula o led
correspondente;
Globalcode – Open4education
Kernel object basics:
Como todo bom sistema de tempo real o zephyr oferece uma gama de
serviços (kernel objects);
Alocação de objetos pode ser pública: arquivo .mdef;
Ou privada utilizando a macro: DEFINE_XXX(name);
Kernel objects do nanokernel só podem ser alocados de forma privada.
Globalcode – Open4education
Threads e fibers:
O Serviço de kernel mais elementar;
Threads:
Preemptivo;
Execução opcional em round-robin;
Executa sempre a de maior prioridade primeiro (exceto em caso de fiber ou ISR
pronta).
Fibers:
Cooperativo;
 Possui sistemas de prioridade;
 Como não possui preempção, fiber controla quando deve suspender;
 Executa a de maior prioridade sempre( exceto em caso de ISR pronta).
• Alocação estática ou em runtime.
Globalcode – Open4education
Threads e fibers:
• Alocação de objeto através do arquivo .mdef:
Globalcode – Open4education
Sincronismo com
semáforos:
• Úteis para gerenciamento de recursos compartilhados;
• Sincroniza tarefas de diferentes prioridades;
• sema / nano_sema:
 Iguais em funcionalidade;
 Totalmente configuráveis;
 Inicialização configurável.
• Alocação estática, ou, em runtime.
Globalcode – Open4education
Sincronismo com
semáforos:
• Alocando através do arquivo .mdef:
Globalcode – Open4education
Mensagens entre
threads (Mailboxes):
• Mesmo que independentes, comumente tasks precisam se comunicar;
• O zephyr oferece vários recursos de messaging;
• Queue ou Mailbox:
 Altamente configurável;
 Possui recurso de execução ISR safe;
• Alocação também de forma estática ou em runtime.
Globalcode – Open4education
Mensagens entre
threads (Queues):
• Alocação pública, via arquivo .mdef:
• Queues possuem uma particularidade, o message descriptor :
Globalcode – Open4education
Modelo de device
drivers:
• De forma similar ao Linux, o Zephyr possui sua “userland”;
• Utilizada para comunicação com hardware da SoC;
• Controlam o acesso ao hardware e a área de memória crítica;
• Oferece chamadas síncronas;
• O modelo de device é uniforme e independente do tipo de driver.
Globalcode – Open4education
O device model:
• O modelo de device do zephyr está todo contido no arquivo device.h
• Diferentes devices, mesmo device model:
Globalcode – Open4education
O device model:
• Utilizando um device driver:
Globalcode – Open4education
Demo: “Driver I2C comunicando
com acelerômetro”;
• O driver pode ser configurado ou não no menuconfig;
• Demonstraremos o poder das chamadas síncronas;
• Cada thread irá ler uma coordenada do acelerômetro;
• Todas usam o mesmo driver, porém o kernel se encarrega do
sincronismo;
• Driver não disponível, bloqueia a thread até ficar livre.
Globalcode – Open4education
Conclusão:
• O Zephyr é uma alternativa ao Linux para execução em tempo real;
• Muito dos conceitos do irmão maior são aproveitados;
• Sua alta configurabilidade o torna uma opção para diferentes SoCs;
• IoT friendly, mas não apenas limitada a essa aplicação;
• O Zephyr está em constante desenvolvimento;
Globalcode – Open4education
Conclusão:
• Mais informaçoes sobre o projeto:
 https://www.zephyrproject.org
 https://www.zephyrproject.org/doc/
Globalcode – Open4education
Obrigado!

Mais conteúdo relacionado

Mais procurados

São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2Azuki
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!Evandro Couto
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerLucas Arbiza
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdFrederico Madeira
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 

Mais procurados (12)

Clusters
ClustersClusters
Clusters
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e Drbd
 
Trabalho sistemas operacionais
Trabalho sistemas operacionaisTrabalho sistemas operacionais
Trabalho sistemas operacionais
 
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUXARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 

Destaque

TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformationtdc-globalcode
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformationtdc-globalcode
 
TDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for BusinessTDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for Businesstdc-globalcode
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintechtdc-globalcode
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScripttdc-globalcode
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformationtdc-globalcode
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintechtdc-globalcode
 
TDC2016SP - Trilha Design Thinking
TDC2016SP - Trilha Design ThinkingTDC2016SP - Trilha Design Thinking
TDC2016SP - Trilha Design Thinkingtdc-globalcode
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformationtdc-globalcode
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScripttdc-globalcode
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformationtdc-globalcode
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintechtdc-globalcode
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintechtdc-globalcode
 

Destaque (20)

TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformation
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformation
 
TDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for BusinessTDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for Business
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintech
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformation
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintech
 
TDC2016SP - Trilha Design Thinking
TDC2016SP - Trilha Design ThinkingTDC2016SP - Trilha Design Thinking
TDC2016SP - Trilha Design Thinking
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformation
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformation
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintech
 
TDC2016SP - Trilha Fintech
TDC2016SP - Trilha FintechTDC2016SP - Trilha Fintech
TDC2016SP - Trilha Fintech
 

Semelhante a TDC2016SP - Trilha Embarcados

TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPALinux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPAMarcelo Veiga Neves
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux DayFábio Albuquerque
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCEmbarcados
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoMauro Tapajós
 
Gentoo - Sistema Operacional
Gentoo - Sistema OperacionalGentoo - Sistema Operacional
Gentoo - Sistema OperacionalAnderson Favaro
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 
Seguranca - docker
Seguranca - dockerSeguranca - docker
Seguranca - dockerStefani Lima
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafTchelinux
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional Rodrigo Rodrigues
 
Escalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SPEscalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SPRafael Moreira
 
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...Sandro Suffert
 

Semelhante a TDC2016SP - Trilha Embarcados (20)

TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Protegendo Docker
Protegendo DockerProtegendo Docker
Protegendo Docker
 
Kernel Linux
Kernel LinuxKernel Linux
Kernel Linux
 
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPALinux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux Day
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoC
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e Instalação
 
Gentoo - Sistema Operacional
Gentoo - Sistema OperacionalGentoo - Sistema Operacional
Gentoo - Sistema Operacional
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
Seguranca - docker
Seguranca - dockerSeguranca - docker
Seguranca - docker
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Minicurso GNU/Linux
Minicurso GNU/LinuxMinicurso GNU/Linux
Minicurso GNU/Linux
 
Por que FreeBSD?
Por que FreeBSD?Por que FreeBSD?
Por que FreeBSD?
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
Escalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SPEscalonador Earliest Deadline First - TDC2014SP
Escalonador Earliest Deadline First - TDC2014SP
 
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
historia Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.ppthistoria Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.pptErnandesLinhares1
 
Transformações isométricas.pptx Geometria
Transformações isométricas.pptx GeometriaTransformações isométricas.pptx Geometria
Transformações isométricas.pptx Geometriajucelio7
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e CaracterísticassAugusto Costa
 
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptxPLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptxSamiraMiresVieiradeM
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxssuserf54fa01
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 

Último (20)

CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
historia Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.ppthistoria Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.ppt
 
Transformações isométricas.pptx Geometria
Transformações isométricas.pptx GeometriaTransformações isométricas.pptx Geometria
Transformações isométricas.pptx Geometria
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e Característicass
 
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptxPLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptx
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 

TDC2016SP - Trilha Embarcados

  • 1. Globalcode – Open4educationGlobalcode – Open4education Embarcados – Zephyr o sistema operacional de tempo real da Linux Foundation Felipe Silva Neves
  • 2. Globalcode – Open4education Agenda: Zephyr, visão geral e motivações; Aquitetura do kernel: Estrutura de diretórios; O nanokernel; O microkernel; Introdução ao sistema de build: Obtendo o kernel; O utilitário menuconfig; A estrutura do diretório da aplicação;
  • 3. Globalcode – Open4education Agenda cont.: Demo: “Placa Freedom K64F, blink LED”; Kernel object basics: Threads e fibers; Sincronismo com semáforos; Mensagens entre threads (Queues); Modelo de device drivers: O device model; Demo: “Driver I2C comunicando com acelerômetro”; Conclusão.
  • 4. Globalcode – Open4education Zephyr, visão geral: Desenvolvido a partir da seguinte parceria:
  • 5. Globalcode – Open4education Zephyr, visão geral: Sistema operacional de tempo real; Direcionado a dispositivos com restrições de memória e processamento; Escalável, footprint de memória ajustável; Portável para multiplas arquiteturas; Código aberto, manutenção por parceiros e comunidade.
  • 6. Globalcode – Open4education Zephyr, motivações: Kernel de tempo real para dispositivos como microcontroladores; Foco em aplicações voltada para internet das coisas (IoT); Desenvolvimento de melhorias facilmente implementadas pelo usuário; Reaproveitamento de ferramentas já existentes; Normalização de sistema operacional embarcado; Projeto colaborativo.
  • 7. Globalcode – Open4education Aquitetura do kernel: O Zephyr é um projeto completo em termos de sistema operacional embarcado:
  • 8. Globalcode – Open4education Estrutura de diretórios: O Zephyr possui a organização própria dos diretórios do kernel:
  • 9. Globalcode – Open4education O nanokernel: Suporta dois contextos de execução: Fibers e ISR; Scheduling cooperativo; Kernel objects elementáres: LiFo; FiFo; Pilhas; Semáforos; Timers. Menor footprint de memória possível, chegando a 8KB; Uso em tarefas de altíssima prioridade e que precisam de desempenho.
  • 10. Globalcode – Open4education O microkernel: Possui um terceiro contexto de execução: Task (ou Threads); Scheduling preemptivo; Serviços mais complexos e poderosos: Queues; Mutexes (protegidos contra race-condition e inversão de prioridade); Eventos; Mailboxes; Permite o uso de todos os serviços do nanokernel; Maior footprint de memória podendo chegar a 512KB.
  • 11. Globalcode – Open4education O sistema de build: O zephyr possui seu próprio sistema de build; Toda infraestrutura (toolchains, binutils) são providas pelo kernel; O uso de uma toolchain nova pode ser adicionado; Toda a configuração do kernel é feita através de um menu de configuração; O kernel (bem como as toolchains) estão disponíveis para: Windows, Linux e Mac; Possibilidade de construir a própria toolchain;
  • 12. Globalcode – Open4education Obtendo o kernel: Pode ser obtido diretamente da página de downloads: https://www.zephyrproject.org/downloads O kernel é versionado utilizando git; Assim uma forma alternativa de obter é clonando o repositório: git clone https://gerrit.zephyrproject.org/r/zephyr
  • 13. Globalcode – Open4education O utilitário menuconfig: O Zephyr é um kernel altamente configurável; Configurar todas as opções do kernel através do código seria cansativo; O Zephyr então gera toda a infraestrutura de build através do conhecido menuconfig:
  • 14. Globalcode – Open4education O utilitário menuconfig:
  • 15. Globalcode – Open4education O diretório da aplicação: Assim como o diretório do kernel, o zephyr possui um padrão para o diretório de aplicação:
  • 16. Globalcode – Open4education Demonstração de app: Nessa demonstração vamos configurar uma aplicação com LED RGB; O hardware alvo utilizado: Freedom Board K64 da NXP; A aplicação usa o Zephyr no modo microkernel e cria 3 threads; Cada thread abre o device driver de GPIO e manipula o led correspondente;
  • 17. Globalcode – Open4education Kernel object basics: Como todo bom sistema de tempo real o zephyr oferece uma gama de serviços (kernel objects); Alocação de objetos pode ser pública: arquivo .mdef; Ou privada utilizando a macro: DEFINE_XXX(name); Kernel objects do nanokernel só podem ser alocados de forma privada.
  • 18. Globalcode – Open4education Threads e fibers: O Serviço de kernel mais elementar; Threads: Preemptivo; Execução opcional em round-robin; Executa sempre a de maior prioridade primeiro (exceto em caso de fiber ou ISR pronta). Fibers: Cooperativo;  Possui sistemas de prioridade;  Como não possui preempção, fiber controla quando deve suspender;  Executa a de maior prioridade sempre( exceto em caso de ISR pronta). • Alocação estática ou em runtime.
  • 19. Globalcode – Open4education Threads e fibers: • Alocação de objeto através do arquivo .mdef:
  • 20. Globalcode – Open4education Sincronismo com semáforos: • Úteis para gerenciamento de recursos compartilhados; • Sincroniza tarefas de diferentes prioridades; • sema / nano_sema:  Iguais em funcionalidade;  Totalmente configuráveis;  Inicialização configurável. • Alocação estática, ou, em runtime.
  • 21. Globalcode – Open4education Sincronismo com semáforos: • Alocando através do arquivo .mdef:
  • 22. Globalcode – Open4education Mensagens entre threads (Mailboxes): • Mesmo que independentes, comumente tasks precisam se comunicar; • O zephyr oferece vários recursos de messaging; • Queue ou Mailbox:  Altamente configurável;  Possui recurso de execução ISR safe; • Alocação também de forma estática ou em runtime.
  • 23. Globalcode – Open4education Mensagens entre threads (Queues): • Alocação pública, via arquivo .mdef: • Queues possuem uma particularidade, o message descriptor :
  • 24. Globalcode – Open4education Modelo de device drivers: • De forma similar ao Linux, o Zephyr possui sua “userland”; • Utilizada para comunicação com hardware da SoC; • Controlam o acesso ao hardware e a área de memória crítica; • Oferece chamadas síncronas; • O modelo de device é uniforme e independente do tipo de driver.
  • 25. Globalcode – Open4education O device model: • O modelo de device do zephyr está todo contido no arquivo device.h • Diferentes devices, mesmo device model:
  • 26. Globalcode – Open4education O device model: • Utilizando um device driver:
  • 27. Globalcode – Open4education Demo: “Driver I2C comunicando com acelerômetro”; • O driver pode ser configurado ou não no menuconfig; • Demonstraremos o poder das chamadas síncronas; • Cada thread irá ler uma coordenada do acelerômetro; • Todas usam o mesmo driver, porém o kernel se encarrega do sincronismo; • Driver não disponível, bloqueia a thread até ficar livre.
  • 28. Globalcode – Open4education Conclusão: • O Zephyr é uma alternativa ao Linux para execução em tempo real; • Muito dos conceitos do irmão maior são aproveitados; • Sua alta configurabilidade o torna uma opção para diferentes SoCs; • IoT friendly, mas não apenas limitada a essa aplicação; • O Zephyr está em constante desenvolvimento;
  • 29. Globalcode – Open4education Conclusão: • Mais informaçoes sobre o projeto:  https://www.zephyrproject.org  https://www.zephyrproject.org/doc/