Академический Документы
Профессиональный Документы
Культура Документы
CMSIS RTOS
César Yutaka Ofuchi
ofuchi@utfpr.edu.br
(adaptado do prof. André Schneider de Oliveira)
• Material Complementar
– (site prof. Andre Schneider)
http://dainf.ct.utfpr.edu.br/~andre/doku.php?id=sistemas_embarcados
– (site prof. Carlos Maziero)
http://wiki.inf.ufpr.br/maziero/doku.php
- CMSIS RTOS
https://www.keil.com/pack/doc/CMSIS/RTOS/html/index.html
– Indivíduo:
• Responsável por todas as tarefas
– Equipe:
• Ocorre divisão de tarefas entre vários indivíduos
Tarefa Tarefa
Laço
1 1
Int
Interrupção 1
Tarefa Tarefa
2 2
Interrupção 2
Int
• Mono-core
– Preempção de tarefas: capacidade de interromper o
processo e trocar por outro (troca de contexto, pilha,
prioridade)
• Compartilhamento de recursos
– Processador : chaveamento de contexto
– Regiões de memória :variáveis compartilhadas - conflito
– Periféricos: múltiplos acessos, acessos simultâneos,
conflitos de interrupção
Múltiplos processos
P1 P2 ... Pn Memória compartilhada
Periféricos compartilhados
Real Time OS
Controle de
Gerenciamento
execução de
de Memória
tarefas
Processador
Hardware Memória
Periféricos
• Sistemas multi-core
– Muito mais processadores virtuais do que núcleos
Programação sequencial
DATA
Flash CPU
CODE Registradores
segundos
milisegundos
ORDEM: A->B->C
Thread A
A1 A2 X X A3
Thread B
B1 X X B2 X
Thread C
C1 C2 C3 C4 X
Granularidade grossa
A1 A2 X B1 X C1 C2 C3 C4 X A3 B2
Granularidade fina
A1 B1 C1 A2 B2 C2 A3 C3 C4
17
César Ofuchi – ofuchi@utfpr.edu.br 17
Conceito de Seção Crítica
• Solução: apenas uma thread pode estar
acessando a sua seção crítica
18
César Ofuchi – ofuchi@utfpr.edu.br 18
Maiores Preocupações da Programação Concorrente
• Exclusão mútua
– Apenas um processo na seção crítica em determinado
instante de tempo (concorrentemente)
• Garantia de entrada
– todas as thread devem ter a oportunidade de acessar a sua
seção crítica
• Noção de Tempo
– Qualitativa (quanto o tempo é
representado por palavras como
antes, depois, alguma hora, etc.)
• Exemplo: Abrir a porta depois de
apertar o botão.
...
Time^Signal^Message^Mail^Release
Scheduling
Yield
^Scheduling
osPriorityIdle = -3,
osPriorityLow = -2,
osPriorityBelowNormal = -1,
osPriorityNormal = 0,
osPriorityAboveNormal = +1,
osPriorityHigh = +2,
osPriorityRealtime = +3,
osPriorityError = 0x84
• Adicionar o arquivo de
configuração RTOS no projeto:
RTX_Conf_CM.c
1. Definição
2. Inicialização
3. Operação
4. Término
32
César Ofuchi – ofuchi@utfpr.edu.br 32
Informação e Controle do Kernel
osThread(job1)
•Macro que é expandida para: &os_thread_def_job1, ou seja, um
ponteiro para a estrutura criada com osThreadDef
• osThreadTerminate - Desativa a
execução de uma tarefa
• osThreadGetId - Obtém o
identificador que referencia a tarefa
• osThreadSetPriority - Altera a
prioridade de uma tarefa
• osThreadGetPriority - Obtém a
prioridade atual de uma tarefa
35
César Ofuchi – ofuchi@utfpr.edu.br 35
Estrutura Básica
#include "cmsis_os.h"
void main(){
osKernelInitialize();
// inicializações de hardware
// ativação de tarefas, temporizadores, etc.
osKernelStart();
SystemInit();
GPIOInit();
GPIOSetDir(0, 7, 1); // LED2 como saída
osThreadCreate(osThread(thread1), NULL);
osKernelStart();
osDelay(osWaitForever);
}
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 39
Prática
Fazer o download do novo workspace com CMSIS RTOS
na página
• Projeto teórico
– Diagrama de estados e transições
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 41
Diagrama de Estados e Transições
• Realizar a representação gráfica das principais
ações e eventos da solução proposta
Estado inicial
Estado final
Estado
Transição
Condição
evento [condição] / ação
43
César Ofuchi – ofuchi@utfpr.edu.br 43
Exemplo: Semáforo
• Cruzamento de duas vias de mão única com
dois semáforos S1 e S2
• TVerde = 20 seg
• TAmarelo = 4 seg
• TVermelho = 28 seg
• TSobreposição = 2 seg
S1
S2
César Ofuchi – ofuchi@utfpr.edu.br 44
Diagrama de Tempo
S1 – Semáforo 1
S2 – Semáforo 2
t(s)
Vermelho Verde A
S1
Verde A Vermelho
S2
1 2 3 4 5 6 1
c2
→ TVerde2 = 30 seg S1
S2
César Ofuchi – ofuchi@utfpr.edu.br 48
Diagrama de Estados e Transições
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 51
Diagrama de Gantt
52
César Ofuchi – ofuchi@utfpr.edu.br 52
Tipos de Tarefas
53
César Ofuchi – ofuchi@utfpr.edu.br 53
Diagrama de Gantt
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 54
Prática gerar diagramas de Gantt
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 55
Prática – Gerar Diagramas de Gantt
• Habilitar exemplo Gantt_diagram e testar
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 57
Exemplo RTOS Gantt 2/2
10/19/2017
César Ofuchi – ofuchi@utfpr.edu.br 58
Roadmap Laboratórios -> Prova
DataLogger 2.0
DataLogger 3.0
- RTOS
-Comunicação Prova 2
DataLogger 1.0 -Processamento Serial com PC Questões
- FatFs/SD Card dos dados
-Protocolo de 30%
- Drivers - Interrupção comunicação
(Máquina de Apresentação
- Timers - Comunicação
Estados) 70%
Serial com PC
-Escalonamento