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

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

19 e 20 de julho 2011 INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel.

Apresentações semelhantes


Apresentação em tema: "19 e 20 de julho 2011 INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel."— Transcrição da apresentação:

1 19 e 20 de julho 2011 INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

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

3 Apresentação 3 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado 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

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

5 Cooperação Acadêmica 5 Cooperação Nacional 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 6 Dr. Fabiano Hessel – (Supervisor) Alexandra Aguiar (Doutorado) Felipe Magalhães (Mestrado) Oliver Bellaver Longhi (Graduação) Sérgio Johann Filho (Doutorado) Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado 7

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

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

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

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

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

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

14 Sistemas embarcados 14 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

15 Sistemas embarcados – Restrições 15 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?'' Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

16 Sistemas embarcados 16 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

19 Sistemas de tempo real 19 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

20 Sistemas de tempo real 20 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

21 Sistemas de tempo real 21 Soft 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

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

26 Arquiteturas Embarcadas 26 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

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

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

32 Software Embarcado 32 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

33 RTOS Embarcados 33 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

34 RTOS Embarcados 34 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. Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

35 RTOS Embarcados 35 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. Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

36 RTOS Embarcados 36 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

40 RTOS Embarcados - Escalonamento 40 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

41 RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) 41 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

42 RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) 42 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) 43 Idéia: Dar maior prioridade às tarefas de menor período. Tarefas Periódicas PeríodoTempo de Computação Prioridade RM Utilização Tarefa A10210,2 Tarefa B15420,267 Tarefa C351030,286

44 RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) 44 Tarefas Periódicas PeríodoTempo de Computação Prioridade RMUtilização Task A10210,2 Task B15420,267 Task C351030,286 Até o tempo 40: 11 trocas de contexto 3 preempções

45 RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) 45 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) 46 Aplicando a fórmula no exemplo utilizado, temos:

47 RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) 47 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) 48 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) 49 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) 50 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 A20100,5 Tarefa B50250,5

51 RTOS Embarcado – Earliest Deadline First (EDF) 51 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) 52 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 53 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

54 Propósito Geral x Propósito Específico 54 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... Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

58 Hellfire Framework 58 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

60 HellfireOS 60 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... Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

61 HellfireOS 61 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

65 HellfireOS 65 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

69 HellfireOS 69 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() Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

70 HellfireOS 70 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

71 HellfireOS 71 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

72 HellfireOS 72 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

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

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

78 N-MIPS 78 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

79 Geração de Arquitetura 79 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

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

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

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

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

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

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

89 Site e Acesso inicial 89 WebFramework Subscribe Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

115 Desafios 115 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. Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

117 Desafios 117 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|; Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

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

119 Desafios – Filtro Sobel 119 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

120 Avaliação 120 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! Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

121 Considerações Finais e Agradecimentos 121 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 Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel Introdução ao desenvolvimento de software embarcado

122 19 e 20 de julho 2011 INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel


Carregar ppt "19 e 20 de julho 2011 INTRODUÇÃO AO DESENVOLVIMENTO DE SOFTWARE EMBARCADO Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel."

Apresentações semelhantes


Anúncios Google