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