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