Apresentação do PowerPoint

Download Report

Transcript Apresentação do PowerPoint

INTRODUÇÃO AO
DESENVOLVIMENTO DE
SOFTWARE EMBARCADO
19 e 20 de julho
2011
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Apresentação
3

Faculdade de Informática (FACIN) – PUCRS

CC (Ciência da Computação) – 498 alunos

EC (Engenharia de Computação) – 328 alunos (compartilhada com FENG)

SI (Sistemas de Informação) – 551 alunos

PPGCC (Programa de Pós Graduação em Ciência da Computação) – 82 MSc; 44 PhD
Linha de pesquisa
SESD – Sistemas Embarcados e Sistemas Digitais
Grupos
GSE – Grupo de Sistemas Embarcados
Gaph – Grupo de Apoio ao Projeto de Hardware
Equipe
7 – professores
24 – alunos mestrado
11 – alunos doutorado
32 – alunos de graduação
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Projetos industriais GSE / GAPH
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
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)
GSE – Equipe Hellfire
6

Dr. Fabiano Hessel – (Supervisor)


Alexandra Aguiar (Doutorado)


[email protected]
Oliver Bellaver Longhi (Graduação)


[email protected]
Felipe Magalhães (Mestrado)


[email protected]
[email protected]
Sérgio Johann Filho (Doutorado)

[email protected]
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sumário – Curso teórico-prático
7

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
Introdução
9

Sistemas Embarcados
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Introdução
10

Restrições
 Temporais
 De
área
 De consumo de energia
 De custo
 ...

Time-to-market
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Introdução
11

Plataformas
 SoC
 MPSoC


Desafios de sistemas de propósito geral presentes
em sistemas embarcados
Software em sistemas embarcados
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Introdução
12

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
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas embarcados – Restrições
15

Energia



Capacidade




''Quanto de memória há disponível?''
Tempo de Desenvolvimento


''Que tipo de CPU será usada?''
''Qual o tipo adequado?''
''Hardware, Software ou Hardware e Software?''
Memória


''Alimentado por baterias?''
''Como reduzir consumo?''
''Quanto tempo para lançar o produto?''
Tempo Restrito de Resposta (Tempo Real)

''Qual a responsividade esperada?''
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas embarcados
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas embarcados
Platform Around CPU bus
Abstrações
SW call OS routines to send Frame
to DCT IP (bus priority)
Aglomerações
SW
HW
i

Register-transfer level model
data[1011011] (critical path latency)
abstract
1970’s
abstract
Transistor model
(t=RC)
cluster
abstract
abstract
Gate level model
1/0/X/U (D ns)
abstract

RTL
cluster
SW Tasks
OS/drivers
CPU
SWtasks
tasks
SW
SW
tasks
OS
OS
SW adaptation
MPU
MPU
MPU
core
Comm.int.
int.
Comm.
HW
adaptation
IPs
HW adaptation
cluster
IPs
1980’s
1990’s
2000’s
2010+
Adapted from F. Schirrmeister (Cadence Design Systems Inc.)
Introdução ao desenvolvimento de software embarcado
HW
on-chip
communication
Network
HW
adaptation
cluster
SW
Comm.interc.
SW
17
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas embarcados
18
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas de tempo real
19

Sistemas computacionais de tempo real:




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:


Submetidos a requisitos de natureza temporal
Resultados devem estar corretos lógica e temporalmente
Requisitos definidos pelo ambiente físico
“Fazer o trabalho usando o tempo necessário”
Sistemas de tempo real:

“Fazer o trabalho usando o tempo disponível”
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas de tempo real
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas de tempo real
21

Soft real-time systems

Desempenho é degradado


Firm real-time systems

não cumprimento de restrições temporais pode ser tolerado.


Ex: sistemas multimídia
Ex: engarrafamento de refrigerantes.
Hard real-time systems

Consequências para vidas humanas e/ou meio ambiente

Ex: sistemas de segurança crítica
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Sistemas de tempo real
22
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
23

System-on-Chip – SoC
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
24

Multiprocessor System-on-Chip
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
25

Comunicação – Barramento
 Topologias
 Simples,
hierárquico...
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
27

Comunicação – Network-on-Chip – NoC
 Topologias
 Mesh
2D, Anel, Direta
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
28

Virtualizadas

Hypervisor Tipo 1
Hypervisor Tipo 2
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Arquiteturas Embarcadas
29
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
Software embarcado
31

Crescente utilização

Diversas camadas

Aplicação e Sistema Operacional
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Software Embarcado
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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.
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
RTOS Embarcados
35

tempo limite de execução (deadline)


tempo de início (start time)


é o instante de tempo em que se completa a execução da tarefa;
tempo de chegada (arrival time)


é o instante de início do processamento da tarefa em ativação;
tempo de término (completion time)


é o tempo máximo permitido para que uma tarefa seja executada;
é o instante em que o escalonador toma conhecimento de uma ativação
da tarefa, e;
tempo de liberação (release time)

corresponde ao instante de inclusão da tarefa na fila de tarefas
prontas a ser executadas.
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
RTOS Embarcados
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
RTOS Embarcados
37

Estados de uma tarefa
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
RTOS Embarcados
38

Estados de uma tarefa
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
RTOS Embarcados
39





Modelo de tarefa
Conjunto de tarefas
Fator de utilização
do processador
Fator de carga do
processador
Idle time
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
RTOS Embarcados - Escalonamento
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
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
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.
RTOS Embarcado – Taxa Motônica
(Rate Monotonic – RM)
43

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
2
0,267
Tarefa C
35
10
3
0,286
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 contexto
3 preempções
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.
RTOS Embarcado – Taxa Motônica
(Rate Monotonic – RM)
46

Aplicando a fórmula no exemplo utilizado, temos:
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
P
periódicas.
= D.
 Prioridade Fixa.
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.
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.

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 A
20
10
0,5
Tarefa B
50
25
0,5
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.
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
P
periódicas.
= D.
 Prioridade Dinâmica.
Modelos e técnicas de programação
53
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
...
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++
 ...
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Virtualização de software
56
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
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Hellfire Framework – Design Flow
59
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
 ...
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
62


Periféricos mapeados em
memória
Camada de abstração de
hardware
 Permite
maior portabilidade
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
63
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
64

Temporização (Tick) e trocas de contexto
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
66

Tarefas (TASKS)
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellifreOS
67

Estados das tarefas
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
68

Particionamento e mapeamento inicial

Definido manualmente por grupos de tarefas (particionamento) e
posição dos grupos (mapeamento)
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
69

Comunicação entre tarefas
 Localmente
 Mutexes,
por memória compartilhada
semáforos, mailboxes
 Remotamente
por trocas de mensagem
 Modelo
produtor / consumidor
 Filas individuais para cada tarefa
 Primitivas send() e receive()
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
73

API do HellfireOS
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
74
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
75
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
76
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
HellfireOS
77

API do HellfireOS – LibC
 Função
básicas da
linguagem C
 Reimplementadas
visando otimizar seu uso
para sistemas
embarcados
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
N-MIPS
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
80
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
81
Processadores
Disponíveis
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
82
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
83
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
84
Meio de
Comunicação
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
85
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
86
Configuração
Individual
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Geração da Arquitetura
87

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
Site e Acesso inicial
89


http://hellfire.gse.inf.br/
WebFramework
 Subscribe
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
90
Novo Projeto
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
91
Descrição do
Projeto
Nome do Projeto
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
92
Criar Arquivo
Fonte
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
93
Nome do
Fonte
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
94

Hello World –
Template da
aplicação
criada
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
95
Habilitar Edição
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
96
Linha Adicionada
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
97
Salvar Alterações
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
98

Hello World – Aplicação Final
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
99

Arquitetura
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
100
Compilar
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
101
3
Resultado da
Compilação
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
102
Unidade de
Simulação
30
Passo da
Simulação
Introdução ao desenvolvimento de software embarcado
Iniciar
Simulação
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
103
Resumo do
Sistema
Saida Padrão
Log ciclo a ciclo
Gráficos de
Funcionamento
Relatórios
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
104

Novo projeto
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
105
Carregar Exemplo
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
106
Escolher Exemplo
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
107
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
108
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
109
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
110

Contador Distribuído
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
111

Contador Distribuído
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
112

Migração de
Tarefas
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Exemplos de Uso
113

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
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.
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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:
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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|;
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Desafios
118

Filtro sobel embarcado
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
Avaliação
120

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!
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
Introdução ao desenvolvimento de software embarcado
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel
INTRODUÇÃO AO
DESENVOLVIMENTO DE
SOFTWARE EMBARCADO
http://hellfire.gse.inf.br/
19 e 20 de julho
2011
Alexandra Aguiar, Sérgio Johann, Felipe
Magalhães, Fabiano Hessel