A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO

Apresentações semelhantes


Apresentação em tema: "INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO"— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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)

6 GSE – Equipe Hellfire Dr. Fabiano Hessel – (Supervisor)
Alexandra Aguiar (Doutorado) Felipe Magalhães (Mestrado) Oliver Bellaver Longhi (Graduação) Sérgio Johann Filho (Doutorado) Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

7 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

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

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

10 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

11 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

12 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

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

14 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

15 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

16 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

17 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[ ] (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

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

19 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

20 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

21 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

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

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

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

25 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

26 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

27 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

28 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

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

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

31 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

32 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

33 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

34 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

35 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

36 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

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

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

39 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

40 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

41 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).

42 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.

43 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

44 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

45 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.

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

47 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.

48 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.

49 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.

50 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

51 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.

52 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.

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

54 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

55 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

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

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

58 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

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

60 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

61 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

62 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

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

64 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

65 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

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

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

68 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

69 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

70 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

71 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

72 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

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

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

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

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

77 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

78 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

79 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

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

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

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

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

84 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

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

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

87 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

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

89 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

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

91 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

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

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

94 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

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

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

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

98 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

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

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

101 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

102 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

103 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

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

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

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

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

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

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

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

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

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

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

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

115 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

116 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

117 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

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

119 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

120 Avaliação Para que possamos melhorar nossa ferramenta, por gentileza, envie sugestões/críticas/dificuldades e comentários para 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

121 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

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


Carregar ppt "INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO"

Apresentações semelhantes


Anúncios Google