19 e 20 de julho 2011 introduÇÃo ao desenvolvimento de software embarcado alexandra aguiar,...

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

Upload: internet

Post on 18-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

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

19 e 20 de julho2011

INTRODUÇÃO AO DESENVOLVIMENTO DE

SOFTWARE EMBARCADO

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

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

Programação2

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

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

Apresentação3

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 pesquisaSESD – Sistemas Embarcados e Sistemas Digitais

GruposGSE – Grupo de Sistemas EmbarcadosGaph – Grupo de Apoio ao Projeto de Hardware

Equipe7 – professores24 – alunos mestrado 11 – alunos doutorado32 – alunos de graduação

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

Projetos industriais GSE / GAPH4

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

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

Cooperação Acadêmica5

Cooperação Nacional UFRGS UNICAMP UFSM UFSC

Cooperação Internacional França

TIMA (Grenoble) CEA – LETI (Grenoble) LIRMM (Montpellier)

Holanda Philips Research Labs (EindHoven)

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

GSE – Equipe Hellfire6

Dr. Fabiano Hessel – (Supervisor) [email protected]

Alexandra Aguiar (Doutorado) [email protected]

Felipe Magalhães (Mestrado) [email protected]

Oliver Bellaver Longhi (Graduação) [email protected]

Sérgio Johann Filho (Doutorado) [email protected]

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Page 7: 19 e 20 de julho 2011 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

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

7

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

Contextualização8

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Introdução9

Sistemas Embarcados

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Introdução10

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

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

Introdução11

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

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

Introdução12

Desenvolvimento de Firmware

Automação de processos

Área de Robótica

Aero-espacial

AutomobilísticaAlexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Conceitos básicos e de hardware

13

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Sistemas embarcados14

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

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

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

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

Sistemas embarcados16

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 1974Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Sistemas embarcados17

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.)1970’s 1980’s 1990’s

abst

ract

abst

ract

cluster

abst

ract

cluster

RTL

Transistor model(=RC)

Gate level model1/0/X/U ( ns)

Register-transfer level modeldata[1011011] (critical path latency)

2000’s 2010+

ab

stra

ct

cluster

on-chipcommunication

Network

Com

m.interc.

SW

SW

HW

SW tasks

OS

MPU

Comm. int.

SW tasks

OS

MPU

Comm. int.

SW tasks

SW adaptation

MPU core

HW adaptation

HW adaptation

IPs

OS/drivers

SW Tasks

CPUcluster

IPs

HW adaptation

Platform Around CPU busSW call OS routines to send Framei

to DCT IP (bus priority)

ab

stra

ct

SW HW

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

Sistemas embarcados18

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Sistemas de tempo real19

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

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

Sistemas de tempo real20

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

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

Sistemas de tempo real21

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

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

Sistemas de tempo real22

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Arquiteturas Embarcadas23

System-on-Chip – SoC

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Arquiteturas Embarcadas24

Multiprocessor System-on-Chip

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Arquiteturas Embarcadas25

Comunicação – Barramento Topologias

Simples, hierárquico...

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Arquiteturas Embarcadas26

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

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

Arquiteturas Embarcadas27

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

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

Arquiteturas Embarcadas28

Virtualizadas

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Hypervisor Tipo 1 Hypervisor Tipo 2

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

Arquiteturas Embarcadas29

Ring de-privileging Paravirtualização

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Software Embarcado30

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Software embarcado31

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

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

Software Embarcado32

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

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

RTOS Embarcados33

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

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

RTOS Embarcados34

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

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

RTOS Embarcados35

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

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

RTOS Embarcados36

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

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

RTOS Embarcados37

Estados de uma tarefa

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

RTOS Embarcados38

Estados de uma tarefa

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

RTOS Embarcados39

Modelo de tarefa Conjunto de

tarefas Fator de

utilização do processador

Fator de carga do processador

Idle timeAlexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

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

Page 41: 19 e 20 de julho 2011 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)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

Page 42: 19 e 20 de julho 2011 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)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.

Page 43: 19 e 20 de julho 2011 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)43

Idéia: Dar maior prioridade às tarefas de menor período.

Tarefas Periódica

s

Período Tempo de Computaçã

o

Prioridade RM

Utilização

Tarefa A

10 2 1 0,2

Tarefa B

15 4 2 0,267

Tarefa C

35 10 3 0,286

Page 44: 19 e 20 de julho 2011 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)44

Tarefas Periódicas

Período Tempo de Computação

Prioridade RM Utilização

Task A 10 2 1 0,2

Task B 15 4 2 0,267

Task C 35 10 3 0,286

Até o tempo 40: 11 trocas de contexto3 preempções

Page 45: 19 e 20 de julho 2011 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)45

A análise de escalonabilidade pode ser feita através de um teste que define uma condição suficiente.

Page 46: 19 e 20 de julho 2011 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)46

Aplicando a fórmula no exemplo utilizado, temos:

Page 47: 19 e 20 de julho 2011 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)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.

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

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.

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

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.

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

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ódicasPeríodo / Deadline

Tempo de Computaçã

o

Utilização

Tarefa A 20 10 0,5

Tarefa B 50 25 0,5

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

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.

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

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.

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

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

Page 54: 19 e 20 de julho 2011 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

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

Page 55: 19 e 20 de julho 2011 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

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

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

Virtualização de software56

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Hellfire Framework57

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Hellfire Framework58

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

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

Hellfire Framework – Design Flow

59

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS60

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

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

HellfireOS61

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

tarefasAlexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS62

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

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

HellfireOS63

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS64

Temporização (Tick) e trocas de contexto

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS65

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

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

HellfireOS66

Tarefas (TASKS)

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellifreOS67

Estados das tarefas

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS68

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

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

HellfireOS69

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

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

HellfireOS70

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

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

HellfireOS71

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

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

HellfireOS72

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

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

HellfireOS73

API do HellfireOS

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS74

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS75

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS76

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireOS77

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

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

N-MIPS78

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

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

Geração de Arquitetura79

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

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

Geração da Arquitetura80

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Geração da Arquitetura81

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Processadores Disponíveis

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

Geração da Arquitetura82

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Geração da Arquitetura83

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Geração da Arquitetura84

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Meio deComunicação

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

Geração da Arquitetura85

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Geração da Arquitetura86

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

ConfiguraçãoIndividual

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

Geração da Arquitetura87

Interface Gráfica – Configuração do Processador

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

HellfireFW

Exemplos de Uso88

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Site e Acesso inicial89

http://hellfire.gse.inf.br/ WebFramework

Subscribe

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso90

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Novo Projeto

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

Exemplos de Uso91

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Descrição doProjeto

Nome do Projeto

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

Exemplos de Uso92

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Criar ArquivoFonte

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

Exemplos de Uso93

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Nome doFonte

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

Exemplos de Uso94

Hello World – Template da aplicação criada

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso95

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Habilitar Edição

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

Exemplos de Uso96

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Linha Adicionada

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

Exemplos de Uso97

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Salvar Alterações

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

Exemplos de Uso98

Hello World – Aplicação Final

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso99

Arquitetura

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso100

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Compilar

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

Exemplos de Uso101

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

3

Resultado daCompilação

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

Exemplos de Uso102

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

30

Passo daSimulação

Unidade deSimulação

IniciarSimulação

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

Exemplos de Uso103

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 cicloGráficos de

Funcionamento

Resumo doSistema

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

Exemplos de Uso104

Novo projeto

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso105

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Carregar Exemplo

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

Exemplos de Uso106

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

Escolher Exemplo

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

Exemplos de Uso107

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso108

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso109

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso110

Contador Distribuído

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso111

Contador Distribuído

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso112

Migração de Tarefas

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Exemplos de Uso113

Migração de Tarefas

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Desafios114

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Desafios115

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

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

Desafios116

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

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

Desafios117

Filtro Sobel Embarcadogx = 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

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

Desafios118

Filtro sobel embarcado

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

Introdução ao desenvolvimento de software embarcado

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

Desafios – Filtro Sobel119

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

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

Avaliação120

Para que possamos melhorar nossa ferramenta, por gentileza, envie sugestões/críticas/dificuldades e comentários para [email protected]

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

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

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

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

19 e 20 de julho2011

INTRODUÇÃO AO DESENVOLVIMENTO DE

SOFTWARE EMBARCADO

Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, Fabiano Hessel

http://hellfire.gse.inf.br/