INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO

Slides:



Advertisements
Apresentações semelhantes
«Forte do Bom Sucesso (Lisboa) – Lápides 1, 2, 3» «nomes gravados, 21 de Agosto de 2008» «Ultramar.TerraWeb»
Advertisements

UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
Algoritmos de Escalonamento
Propriedades físicas representativas de
EVOLUÇÃO E DESAFIOS DAS EXPORTAÇÕES DE CARNES DE AVES E SUÍNOS
Palestras, oficinas e outras atividades
A busca das mulheres para alcançar seu espaço dentro das organizações
Noções de Sistemas Operacionais
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
João Lúcio de Azevedo ESALQ/USP, UMC, UCS, CBA
Operadores e Funções do LINGO
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
MISSÕES ESTADUAIS.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Curso de ADMINISTRAÇÃO
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM PEDIATRIA E SAÚDE DA CRIANÇA Início do Mestrado: 1995 Início do Doutorado: 2004 Formou 63 Mestres e 3 doutores Conceito.
Arquiteturas Diferentes
EXPRESSÕES ARITMÉTICAS
Altera NIOS II: uma breve introdução
SSC SISTEMAS OPERACIONAIS I Aulas 6 – Escalonamento de Processos
Co-projeto de Sistemas Operacionais
Sistemas Operacionais
Análise Econômica Lucro Real Nívea Cordeiro 2011.
Estruturas de Controle
Sistemas de Tempo Real: Abordagens de Escalonamento
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
HellermannTyton Brasil Sistema de Gerenciamento Integrado HellermannTyton Brasil Sistema de Gerenciamento Integrado Alexandre Martins Consultor de Negócios.
Algoritmos para Escalonamento de Tempo Real – (RM, EDF, DM)
ESTATÍSTICA.
Renda até 2 SM.
República Federativa do Brasil Reforma do Estado, Investimento e Poupança Públicos MINISTRO GUIDO MANTEGA São Paulo, 14 de setembro de 2004 I FÓRUM DE.
Seminários do Enade 2013.
Diagnósticos Educativos = Diagnósticos Preenchidos 100% = 1.539
TELECOMUNICAÇÕES - ROAMING
PESQUISA SOBRE PRAZO MÉDIO DA ASSISTÊNCIA NA SAÚDE SUPLEMENTAR
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
Unidade 1-1 Processos e Threads
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
SISTEMAS OPERACIONAIS
PROCESSOS PRINCIPAIS Alunos - Grau de Satisfação 4971 avaliações * Questões que entraram em vigor em 2011 ** N.A. = Não Aplicável Versão: 07/02/2012 INDICADORES.
Trabalho sobre Cor Thiago Marques Toledo.
FISCALIZAÇÃO DIRECIONADA CONDUTA - AUXILIAR ANO III – Nº 05.
FISCALIZAÇÃO DIRECIONADA NÍVEL DE SERVIÇO ANO I – Nº 9.
FISCALIZAÇÃO DIRECIONADA CONDUTA - AUXILIAR ANO III – Nº 02.
FISCALIZAÇÃO DIRECIONADA NÍVEL DE SERVIÇO ANO I – Nº 4.
Os números a seguir, representam as notas de
Plataforma Brasil – Submissão de pesquisa
Funcionários - Grau de Satisfação 2096 avaliações
Sistemas Operacionais
PERFIL DOS BENEFICIÁRIOS E NÃO-BENEFICIÁRIOS DO PROGRAMA BOLSA FAMÍLIA EM TERMOS DE MERCADO DE TRABALHO: CONSIDERAÇÕES METODOLÓGICAS E SUBSTANTIVAS Alessandra.
Tributação da Exportação nas Empresas optantes pelo Simples Nacional
Núcleo de Estatística e Gestão Estratégica- NEGEST.
1/40 COMANDO DA 11ª REGIÃO MILITAR PALESTRA AOS MILITARES DA RESERVA, REFORMADOS E PENSIONISTAS - Mar 06 -
APOIOS PEDAGÓGICO ACRESCIDO
Projeto Medindo minha escola.
Sistemas Distribuídos
SÉRIES ESTATÍSTICAS.
Projeto de Banco de Dados
Cruz Alta Nossa Velha - Nova Parte 51 CRUZ ALTA VISTA DO ESPAÇO – Parte
LINHAS MAIS RECLAMADAS Ranking Negativo para Fiscalização Direcionada Conduta - Auxiliar ANO V – Nº 04.
Estatística Aula 9 – 28/02/2011.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
CONCEITOS FUNDAMENTAIS
Olhe fixamente para a Bruxa Nariguda
3ª PESQUISA DE REMUNERAÇÃO
Equipe Bárbara Régis Lissa Lourenço Lucas Hakim Ricardo Spada Coordenador: Gabriel Pascutti.
LEILÃO nº 3/2014 Dia 12 de setembro, às 14 horas.
Universidade Federal de Pernambuco
Bruna Cavallero Martins Universidade Católica de Pelotas.
Transcrição da apresentação:

INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Programação Sala Ponta Negra, Bloco C 19/07 – Terça-feira 17h as 19h 20/07 – Quarta-feira 11h as 13h Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Apresentação Linha de pesquisa Faculdade de Informática (FACIN) – PUCRS CC (Ciência da Computação) – 498 alunos EC (Engenharia de Computação) – 328 alunos (compartilhada com FENG) SI (Sistemas de Informação) – 551 alunos PPGCC (Programa de Pós Graduação em Ciência da Computação) – 82 MSc; 44 PhD Linha de pesquisa SESD – Sistemas Embarcados e Sistemas Digitais Grupos GSE – Grupo de Sistemas Embarcados Gaph – Grupo de Apoio ao Projeto de Hardware Equipe 7 – professores 24 – alunos mestrado 11 – alunos doutorado 32 – alunos de graduação Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Projetos industriais GSE / GAPH Telecom Parks Digistar Datacom Novus Automação industrial Innalogics INCT-Sec RFID chip Ceitec Hp Tsystems Aplicações espaciais AEL INPE Apoio governamental Capes CNPq Fapergs

Cooperação Acadêmica Cooperação Nacional Cooperação Internacional UFRGS UNICAMP UFSM UFSC Cooperação Internacional França TIMA (Grenoble) CEA – LETI (Grenoble) LIRMM (Montpellier) Holanda Philips Research Labs (EindHoven)

GSE – Equipe Hellfire Dr. Fabiano Hessel – (Supervisor) fabiano.hessel@pucrs.br Alexandra Aguiar (Doutorado) alexandra.aguiar@pucrs.br Felipe Magalhães (Mestrado) felipe.magalhaes@acad.pucrs.br Oliver Bellaver Longhi (Graduação) oliver.longhi@acad.pucrs.br Sérgio Johann Filho (Doutorado) sergio.johann@acad.pucrs.br Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sumário – Curso teórico-prático Teoria (aprox. 3 horas) Sistemas Embarcados Sistemas de Tempo Real Prática (aprox. 3 horas) Hellfire framework Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Contextualização Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução Sistemas Embarcados Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução Restrições Time-to-market Temporais De área De consumo de energia De custo ... Time-to-market Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução Plataformas SoC MPSoC Desafios de sistemas de propósito geral presentes em sistemas embarcados Software em sistemas embarcados Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução Desenvolvimento de Firmware Automação de processos Área de Robótica Aero-espacial Automobilística Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Conceitos básicos e de hardware Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas embarcados Sistema dedicado a uma ou mais tarefa(s) específica(s) Possui diversas restrições em relação ao seu desenvolvimento Não pode ser reprogramado em tempo de execução Normalmente alimentados por baterias Leva em consideração as características da aplicação em seu projeto Alta confiabilidade Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas embarcados – Restrições Energia ''Alimentado por baterias?'' ''Como reduzir consumo?'' Capacidade ''Que tipo de CPU será usada?'' ''Qual o tipo adequado?'' ''Hardware, Software ou Hardware e Software?'' Memória ''Quanto de memória há disponível?'' Tempo de Desenvolvimento ''Quanto tempo para lançar o produto?'' Tempo Restrito de Resposta (Tempo Real) ''Qual a responsividade esperada?'' Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas embarcados Integração de diversos componentes em uma única pastilha de silício Uma unidade de processamento, uma unidade de memória e uma unidade de E/S Primeiro produto em 1974 Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

on-chip communication Network Sistemas embarcados abstract cluster on-chip communication Network Comm.interc. SW HW SW tasks OS MPU Comm. int. SW adaptation MPU core HW adaptation IPs Abstrações Aglomerações Platform Around CPU bus SW call OS routines to send Framei to DCT IP (bus priority) abstract SW HW Register-transfer level model data[1011011] (critical path latency) OS/drivers SW Tasks Gate level model 1/0/X/U (D ns) RTL abstract CPU cluster IPs HW adaptation abstract Transistor model (t=RC) cluster cluster abstract 1970’s 1980’s 1990’s 2000’s 2010+ Adapted from F. Schirrmeister (Cadence Design Systems Inc.) Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas embarcados Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas de tempo real Sistemas computacionais de tempo real: Submetidos a requisitos de natureza temporal Resultados devem estar corretos lógica e temporalmente Requisitos definidos pelo ambiente físico Aspectos temporais NÃO estão limitados a uma questão de maior ou menor desempenho Estão diretamente associados com a funcionalidade Sistemas em geral: “Fazer o trabalho usando o tempo necessário” Sistemas de tempo real: “Fazer o trabalho usando o tempo disponível” Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas de tempo real Conceitos EQUIVOCADOS Tempo real significa execução rápida Computadores mais rápidos vão resolver todos os problemas Sistemas de tempo real são pequenos, escritos em assembly Sistemas de tempo real são formados apenas por Tratadores de interrupção, e; Drivers de dispositivos Sistemas de tempo real operam em ambientes estáticos Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas de tempo real Soft real-time systems Firm real-time systems Desempenho é degradado Ex: sistemas multimídia Firm real-time systems não cumprimento de restrições temporais pode ser tolerado. Ex: engarrafamento de refrigerantes. Hard real-time systems Consequências para vidas humanas e/ou meio ambiente Ex: sistemas de segurança crítica Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Sistemas de tempo real Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas System-on-Chip – SoC Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas Multiprocessor System-on-Chip Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas Comunicação – Barramento Topologias Simples, hierárquico... Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas Comunicação – Network-on-Chip – NoC Tendência de comunicação Utiliza roteadores para gerenciar o tráfego Conexão ponto a ponto Comunicação paralela Maior área e complexidade para implementação Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas Comunicação – Network-on-Chip – NoC Topologias Mesh 2D, Anel, Direta Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas Virtualizadas Hypervisor Tipo 1 Hypervisor Tipo 2 Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Arquiteturas Embarcadas Ring de-privileging Paravirtualização Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Software Embarcado Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Software embarcado Crescente utilização Diversas camadas Aplicação e Sistema Operacional Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Software Embarcado Sistemas Operacionais Embarcados Lidam com restrições de memória e armazenamento Geralmente não possuem interface para usuário Estrutura simplificada em relação ao SO de propósito geral Certos módulos podem não estar presentes Maior diversidade de processadores Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados Real-time Operating System – Embarcados Atender requisitos dos Sistemas de Tempo Real Conceitos básicos Tarefa Periódicas x aperiódicas Esporádica Preemptiva x não preemptivas Estática x dinâmica Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados Tempo de computação ou execução (computation time) é o tempo utilizado por uma tarefa para a execução completa de suas atribuições. Casos especiais de tempo de execução incluem: BCET (Best Case Execution Time) - melhor (menor) tempo de execução possível de uma determinada tarefa; ACET (Average Case Execution Time) - tempo médio de execução de uma determinada tarefa, e; WCET (Worst Case Execution Time) - pior (maior) tempo de execução possível de uma determinada tarefa. Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados tempo limite de execução (deadline) é o tempo máximo permitido para que uma tarefa seja executada; tempo de início (start time) é o instante de início do processamento da tarefa em ativação; tempo de término (completion time) é o instante de tempo em que se completa a execução da tarefa; tempo de chegada (arrival time) é o instante em que o escalonador toma conhecimento de uma ativação da tarefa, e; tempo de liberação (release time) corresponde ao instante de inclusão da tarefa na fila de tarefas prontas a ser executadas. Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados Controle de aplicações com restrições de tempo real Sub-sistema semelhante a Sistemas Operacionais de Propósito Geral Inclusão de uma unidade escalonadora de tempo real Algoritmos de escalonamento de tempo real Earliest Deadline First - EDF Rate Monotonic – RM Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados Estados de uma tarefa Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados Estados de uma tarefa Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados Modelo de tarefa Conjunto de tarefas Fator de utilização do processador Fator de carga do processador Idle time Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcados - Escalonamento On-line versus off-line Preemptivo versus não preemptivo Melhor esforço (best effort) versus intolerâncias a falhas de tempo (timing fault intolerance) Centralizado versus distribuído Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) Desenvolvido por Liu & Layland. Produz escalas em tempo de execução através de escalonadores preemptivos dirigidos a prioridades. Online: Escala é produzida em tempo de execução É um esquema de prioridade fixa, ou seja, tarefas sempre possuem a mesma prioridade. Estático: prioridades não variam em tempo de execução Taxa Motônica é online (pois a escala é produzida em tempo de execução) e estático (pois as prioridades não variam em tempo de execução).

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) O algoritmo RM trabalha sobre um modelo de tarefas bastante simples, que obedece às seguintes premissas: As tarefas são periódicas e independentes. O “deadline” de cada tarefa coincide com o seu período (Di = Pi) O tempo de computação (Ci) de cada tarefa é conhecido e constante (Worst Case Computation Time) O tempo de chaveamento entre tarefas é assumido nulo.

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) Idéia: Dar maior prioridade às tarefas de menor período. Tarefas Periódicas Período Tempo de Computação Prioridade RM Utilização Tarefa A 10 2 1 0,2 Tarefa B 15 4 0,267 Tarefa C 35 3 0,286

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) Tarefas Periódicas Período Tempo de Computação Prioridade RM Utilização Task A 10 2 1 0,2 Task B 15 4 0,267 Task C 35 3 0,286 Até o tempo 40: 11 trocas de contexto 3 preempções

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) A análise de escalonabilidade pode ser feita através de um teste que define uma condição suficiente.

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) Aplicando a fórmula no exemplo utilizado, temos:

RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) Muito utilizado devido a sua simplicidade de implementação. É um algoritmo ótimo para a classe de problemas que se propõe Tarefas periódicas. P = D. Prioridade Fixa.

RTOS Embarcado – Earliest Deadline First (EDF) Desenvolvido por Liu & Leiland Produz escalas em tempo de execução através de escalonadores preemptivos dirigidos a prioridades. É um esquema de prioridade dinâmica. On-line e Dinâmico.

RTOS Embarcado – Earliest Deadline First (EDF) O algoritmo EDF trabalha sobre um modelo de tarefas bastante simples, que obedece as seguintes premissas: As tarefas são periódicas e independentes. O “deadline” de cada tarefa coincide com o seu período (Di = Pi) O tempo de computação (Ci) de cada tarefa é conhecido e constante (Worst Case Computation Time) O tempo de chaveamento entre tarefas é assumido nulo.

RTOS Embarcado – Earliest Deadline First (EDF) Idéia: Atribuição dinâmica de prioridades de acordo com os deadlines de cada tarefa. Tarefas Periódicas Período / Deadline Tempo de Computação Utilização Tarefa A 20 10 0,5 Tarefa B 50 25

RTOS Embarcado – Earliest Deadline First (EDF) A análise de escalonabilidade pode ser feita através do teste abaixo que define uma condição suficiente e necessária.

RTOS Embarcado – Earliest Deadline First (EDF) Embora consiga trabalhar com um conjunto maior de casos, EDF possui implementação complexa. É um algoritmo ótimo para a classe de problemas que se propõe Tarefas periódicas. P = D. Prioridade Dinâmica.

Modelos e técnicas de programação Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Propósito Geral x Propósito Específico Alto nível Recursos virtualmente ilimitados Voltados ao usuário Estruturas pré prontas (suporte de ferramentas) Exemplos de linguagens Java C# C, C++ Visual Basic PHP ASP ... Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Propósito Geral x Propósito Específico Baixo nível Recursos Limitados Voltado a serviços Confibiabilidade mais importante que desempenho Exemplos de linguagens Assembly C, C++ ... Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Virtualização de software Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Hellfire Framework Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Hellfire Framework Framework para criação, simulação e debug de MPSoCs Integra em uma única ferramenta três módulos HellfireOS – Sistema Operacional de Tempo Real N-MIPS – Simulador de MPSoCs Ferramenta de Geração de Arquitetura Geração de relatórios de funcionamento Geração de gráficos de funcionamento Ferramenta de inclusão de políticas de escalonamento Interface WEB Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Hellfire Framework – Design Flow Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Características Sistema operacional de tempo real preemptivo Parametrizável Gerenciamento dinâmico de tarefas Chamadas de sistema perdas de deadline trocas de contexto parâmetros de tarefas uso de processador memória ... Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Diferentes políticas de escalonamento (RM, PRR, EDF, DM) Primitivas de exclusão mútua, semáforos Proteção contra inversão de prioridades (priority inheritance) Alocação, liberação e gerenciamento dinâmico de memória LibC customizada Emulação de ponto flutuante de precisão simples Comunicação entre tarefas e migração de tarefas Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Periféricos mapeados em memória Camada de abstração de hardware Permite maior portabilidade Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Temporização (Tick) e trocas de contexto Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Tarefas (TASKS) Possuem o comportamento definido em um bloco de código São adicionadas ao sistema durante a inicialização ou execução, com parâmetros que definem seus requisitos de tempo real, tamanho da pilha, consumo de energia ... Estruturas de controle e pilha alocadas dinamicamente Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Tarefas (TASKS) Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellifreOS Estados das tarefas Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Particionamento e mapeamento inicial Definido manualmente por grupos de tarefas (particionamento) e posição dos grupos (mapeamento) Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Comunicação entre tarefas Localmente por memória compartilhada Mutexes, semáforos, mailboxes Remotamente por trocas de mensagem Modelo produtor / consumidor Filas individuais para cada tarefa Primitivas send() e receive() Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Migração de tarefas Uso de primitiva do OS OS_TaskMigrate (origem, destino); Migra apenas contexto Tarefa é “morta” na origem e inicializada com o contexto no destino Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS API do HellfireOS Dividida em 5 grupos Manipulação de Tarefas Exclusão Mútua Manipulação de Memória Comunicação entre Processadores LibC Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS API do HellfireOS - Manipulação de Tarefas Usadas para gerenciamento das tarefas Inclusão de tarefas no sistema Manipulação de informações de funcionamento do sistema e de tasks Uso de CPU, energia e memória CPU em que está rodando Informação/Mudança de prioridade, período, deadline e WCET Frequência do processador Mudança do estado de uma tarefa Inicializar o OS Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS API do HellfireOS Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

HellfireOS API do HellfireOS – LibC Função básicas da linguagem C Reimplementadas visando otimizar seu uso para sistemas embarcados Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

N-MIPS Ferramenta N-MIPS Escrita em linguagem C, simula, em nível de abstração mais alto que HDL, entretanto mantém precisão de ciclo Caracterização do HW (CPUs, comunicação, filas …) Modelos de tempo e energia Atualmente utilizada para simular a arquitetura Simula até 128 processadores Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração de Arquitetura Interface gráfica pra criação de MPSoC Estrutura do tipo drag-and-drop e push-button Geração de makefiles automatizada Caracterização individual de cada processador do sistema Tarefas do usuário Tamanho da pilha das tarefas Tamanho do heap Tamanho do tick Ativação/desativação de drivers Politica de escalonamento Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Processadores Disponíveis Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Meio de Comunicação Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Configuração Individual Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Geração da Arquitetura Interface Gráfica – Configuração do Processador Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso HellfireFW Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Site e Acesso inicial http://hellfire.gse.inf.br/ WebFramework Subscribe Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Novo Projeto Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Descrição do Projeto Nome do Projeto Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Criar Arquivo Fonte Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Nome do Fonte Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Hello World – Template da aplicação criada Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Habilitar Edição Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Linha Adicionada Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Salvar Alterações Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Hello World – Aplicação Final Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Arquitetura Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Compilar Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso 3 Resultado da Compilação Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso 30 Unidade de Simulação Passo da Simulação Iniciar Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Resumo do Sistema Saida Padrão Gráficos de Funcionamento Log ciclo a ciclo Relatórios Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Novo projeto Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Carregar Exemplo Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Escolher Exemplo Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Contador Distribuído Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Contador Distribuído Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Migração de Tarefas Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Exemplos de Uso Migração de Tarefas Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Desafios Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Desafios Algoritmo de ordenação de vetores Implementar um dos algoritmos clássicos de ordenação de vetores (Bubble sort, quick sort, …) utilizando o ambiente de desenvolvimento HellfireFW. Algoritmo de ordenação distribuído Re-escrever o algoritmo de ordenação implementado de modo que o mesmo funcione de modo distribuído, utilizando as primitivas de comunicação do HellfireOS. Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Desafios Filtro Sobel Embarcado Implementar o algoritmo de detecção de bordas Sobel. Esse algoritmo aplica dois operadores sobre cada ponto g da imagem: Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Desafios Filtro Sobel Embarcado gx = img[y-1][x-1] +2*img[y][x-1] + img[y+1][x-1] - img[y-1][x+1] -2*img[y][x+1] - img[y+1][x+1] gy = img[y-1][x-1] +2*img[y-1][x] + img[y-1][x+1] - img[y+1][x-1] -2*img[y+1][x] - img[y+1][x+1] nova_imagem[y][x] = |gx| + |gy|; Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Desafios Filtro sobel embarcado Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Desafios – Filtro Sobel buffer[128 x 128] novo_buffer1[64x64] novo_buffer2[64x64] novo_buffer3[64x64] novo_buffer4[64x64] exemplo para buffer1: y = 0 x = 0 for (v = 0; v < 64; v++) for (u = 0; u < 64; u++) novo_buffer1[v*64+u] = buffer[(y+v)*128+(x+u)]; Para os buffers seguintes apenas adotar esses valores de y e x: y = 0 e x = 64 y = 64 e x = 64 y = 64 e x = 0 Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Avaliação Para que possamos melhorar nossa ferramenta, por gentileza, envie sugestões/críticas/dificuldades e comentários para alexandra.aguiar@pucrs.br Coloque no assunto [cursojai] Sua participação é muito importante para nós! Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Considerações Finais e Agradecimentos Sistemas cada vez mais presentes Inúmeros desafios no desenvolvimento embarcado Ferramentas de apoio ao projeto (hardware + software) são mandatórias Apresentação do sistema Hellfire Atividades práticas com a ferramenta Agradecimentos gerais Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO http://hellfire.gse.inf.br/ Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel