Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

32
Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS

Transcript of Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

Page 1: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

Engenharia de Sistemas Embarcados 2006.2Aula 9: Salvo RTOS

Page 2: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 2

Salvo RTOS

• Sistema Operacional– Cooperativo– Multitarefa– Suporte a eventos– Suporte a temporização

• Serviços– Comunicação entre tarefas– Gerenciamento de recursos– Semáforos– Mensagens– Fila de mensagens

Page 3: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 3

Como se parece um código no Salvo

Função main()

tarefas

Código específico

Page 4: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 4

RTOS Cooperativo

• Foco principal do Salvo– Minimização do tamanho do código

• Gerenciamento explícito de mudança de tarefa• Não existe uma pilha de propósito geral

– Redução do tamanho do código gerado• Mudança de tarefa deve ocorrer a nível de tarefa

– Não pode ser feita em funções chamadas pelo código da tarefa

Page 5: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 5

Programação ANSI-C

• Compilador– Compatível com ANSI-C– Suporte a in-line

assembly– Exemplo: Keil

Page 6: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 6

Processadores e Compiladores Suportados

Page 7: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 7

Sistemas Foreground/Background

void main() { while (1) { func1(); func2(); func3(); func4(); }}

Superloop

Page 8: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 8

Problemas de Sistemas Foreground/Background

• Tempo do loop afetado por mudanças nas funções ou ISR

• Resposta do sistema a entradas é pobre– Função é executada apenas quando é chamada

• Pouca flexibilidade ao programador• Complicado implementar um sistema que seja

crítico em termos de temporização• Se o super loop ficar muito grande fica muito

difícil prever a sua temporização

Page 9: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 9

Tarefa3

Tarefa4

Sistemas Multitarefa e Mudança de Contexto

escalonador

Tarefa1

Tarefa2

Tarefa1

Tarefa2

independentes

Tarefa3

Tarefa4

concorrentes

Page 10: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 10

Tarefas e Interrupções

Page 11: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 11

Escalonador Preemptivo

• Tarefa pode ser preemptada

• Ocorre quando tarefa de mais alta prioridade se torna elegível para ser executada

• Requer uso de interrupção

• Requer uso de gerenciamento de pilha– Garantir a corretude da

mudança de contexto• Seção crítica de código

– Desabilitar preempção

Page 12: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 12

Escalonador Preemptivo

• Uso de intensivo de pilha• Utilização de uma pilha para cada tarefa• Mudança de contexto a qualquer tempo

– Aumento da complexidade do escalonador

Page 13: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 13

Escalonador Cooperativo

• Tarefas devem cooperar para mudança de contexto

• Mais simples que o preemptivo

• Escalonador menor• Potencialmente mais

rápido• Escalonador menos

dependente de interrupções

• Programador sabe exatamente onde mudança de contexto ocorre

• Mais simples de lidar com regiões críticas

Page 14: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 14

Escalonador Cooperativo

• Vantagens– Tempo de resposta de

interrupção menor– Menor tempo de

recuperação– Maior simplicidade

geral

• Desvantagens– Menor capacidade de

resposta– Tarefa de menor

prioridade não é preemptada por tarefa de maior prioridade

Page 15: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 15

Estrutura de Tarefa

Initialize();for (;;){

}

Initialize();for (;;){ ... Taskswitch();}

Escalonador cooperativo

Page 16: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 16

Prioridade de Tarefas

• Multitarefa simples– Tarefas com a mesma prioridade– Round robin

• Multitarefa baseado em prioridades– Garante que o processador vai estar executando

as tarefas mais importantes– Tipos de prioridades

• Estática• Dinâmica

• Como garantir que um sistema não execute apenas a tarefa de mais alta prioridade?

Page 17: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 17

Estados das Tarefas

Page 18: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 18

Atrasos e Temporização

Maneira tradicional de gerar atraso

Atraso via RTOS

•Dependente do processador•Processamento em background é complicado

Page 19: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 19

Temporização via RTOS

• Utilização do timer do sistema• Utilização de interrupção periódica• Contador de ticks do sistema• Dimensionamento do contador de ticks• Overhead devido ao timer do sistema é

inevitável• Resolução e precisão do timer do sistema

– Atraso de n ticks variará na faixa de n-1 a n ticks de tempo real (milisegundos por exemplo)

Page 20: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 20

Multitarefa Orientada a Eventos

Exemplo de Evntos

Page 21: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 21

Interação entre Tarefas e Eventos

• Criação de um evento– Torna o evento disponível para o sistema (tarefas)

• Sinalização de evento– Identifica a ocorrência do evento– Pode ser sinalizado por tarefa ou outro código em

background, ISR• Espera de um evento

– Tarefas pode ficar esperando a ocorrência de um evento

– Tarefa pode esperar apenas um evento por vez– Várias tarefas podem esperar ocorrência de um mesmo

evento– RTOS deve ter uma política bem definida para decidir

que tarefa deve ser elegível para ser executada quando da ocorrência de evento esperado por várias tarefas

Page 22: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 22

Como pensar um sistema baseado em eventos

• O que o sistema faz?• Como dividir sua ações em tarefas?• O que cada tarefa faz?• Quando cada tarefa executa?• Quais são os eventos?• Que eventos causam a execução de que tarefas?

Page 23: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 23

Comunicação Intertarefa

• Alguns tipos de comunicação– Semáforos– Mensagens– Fila de mensagens

• Comunicação– Criação do mecanismo de comunicação– Sinalização– espera

Page 24: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 24

Semáforos

• Binários– Assumem valor 0 ou 1

• Por contagem– Podem assumir n

valores• Semáforo deve ser

inicializado com um valor

• Quando tarefa espera pela sinalização de um semáforo ela fica no estado bloqueado

Semáforo binário

Semáforo por contagem

Page 25: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 25

Semáforos

Sinalização de evento

Sinalização de evento sem espera

Sinalização de evento com espera

Page 26: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 26

Sincronização de Tarefas por Eventos

Page 27: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 27

Sincronização de Tarefas por Eventos

Page 28: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 28

Gerenciamento de Recursos via Semáforos

Page 29: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 29

Mensagens

• Envio de informação arbitrária para uma tarefa• Tipos de informação

– Número– String– Função– Pointeiro

• Mensagens no sistema– Podem ser diferentes– Sender e receiver devem entender o seu conteúdo

• Mecanismos do RTOS– Criação– Sinalização– Espera de mensagens

Page 30: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 30

Mensagens

• Mensagens de propósito geral– Contéudo da

mensagem são ponteiros

– Ponteiro de dereferenciação

• Mensagem vazia– Ponteiro nulo (NULL)– Não pode ser

dereferenciado• Espera de mensagem

– bloqueante

Page 31: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 31

Mensagens

• Espera de mensagem– bloqueante

• Mensagem contém no máximo um item de informação (Ponteiro)

• Mensagem vazia pode ser sinalizada

• Mensagem cheia não pode ser enviada

Page 32: Engenharia de Sistemas Embarcados 2006.2 Aula 9: Salvo RTOS.

2006.2 Engenharia de Sistemas Embarcados 32

Filas de Mensagens (Message Queues)

• Extensão de mensagens• Uma fila de mensagens pode conter múltiplas

mensagens– Número máximo é normalmente um parâmetro do

sistema• O envio de mensagens pode continuar até que a

caixa de mensagens esteja cheia• Uma tarefa que espera a fila de mensagens receberá

mensagens até que a fila de mensagens esteja vazia• RTOS deve alocar mais RAM para o gerenciamento

de cada fila de mensagens– Controlar o número de mensagens na fila de

mensagens– Controlar a ordem das mensagens na fila de

mensagens