Download - Introdução ao desenvolvimento de firmwares
![Page 1: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/1.jpg)
Introdução ao desenvolvimento de firmwares
Prof. Geovany A. Borges
Projeto de Sistemas Embarcados MicrocontroladosDepartamento de Engenharia Elétrica
Universidade de Brasília
![Page 2: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/2.jpg)
2
� O firmware é responsável por:� Fazer inicialização básica do hardware (e.g., BIOS):
� Exemplo: Verificação da memória disponível;
� Exemplo: Configuração padrão E/S;
� Repassar o controle para um sistema operacional (bootloader )
� Implementar as funcionalidades do sistema embarcado:
� Firmware estruturado: um único thread e interrupções por hardware.
� Firmware baseado em kernel: várias tarefas e serviços em execução.
Firmwares de sistemas embarcados
![Page 3: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/3.jpg)
3
� TARGET: para sistemas capazes de armazenar e executar as ferramentas de desenvolvimento
Modalidades de desenvolvimento
![Page 4: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/4.jpg)
4
� HOST e TARGET: ferramentas de desenvolvimento cruzado em um microcomputador hospedeiro
Modalidades de desenvolvimento
![Page 5: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/5.jpg)
5
� HOST, TARGET e unidade de armazenamento removível: indicado para estágios iniciais de configuração/otimização do kernel
Modalidades de desenvolvimento
![Page 6: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/6.jpg)
6
� Requisitos: coleta de informações com o cliente.
� Funcionalidades, interface com usuário, desempenho, custo, tamanho/peso, consumo...
� Especificação: requisitos colocados na linguagem do projetista.� Interfaces E/S, tempos de resposta, comunicação,
periféricos, interdependência entre as partes...
Ciclo de desenvolvimento
![Page 7: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/7.jpg)
7
� Definição da arquitetura de hardware/software: esboço na forma de diagrama de blocos dos componentes de hardware e de software do sistema.
� Hardware: Processador e interconexão com periféricos
� Software: Componentes de software, módulos, bibliotecas.
� Escolha das ferramentas de desenvolvimento� Hardware: kit de desenvolvimento, emuladores
� Software: sistema operacional, linguagem de programação, bootloaders, IDE
� Ferramentas de projeto de esquemáticos/PCB
� Ferramentas de documentação
Ciclo de desenvolvimento
![Page 8: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/8.jpg)
8
� Implementação: uso de ferramentas de auxílio ao projeto
� Formalismos: Unified Modeling Language (UML), FSM
� Implementação de Hardware/Software
� Testes: verificação de adequação do sistema conforme as especificações
� Integração de sistemas: implantação do sistema e avaliação acerca da satisfação dos requisitos
Ciclo de desenvolvimento
![Page 9: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/9.jpg)
9
Tópicos desenvolvidos para a disciplina
� Introdução à linguagem C� Consultar documento linguagemC.pdf
� Desenvolvimento com o µC ATMega8
� Consultar documento desenvolvimentoATmega8.pdf
� Arquiteturas de firmwares
� Firmware estruturado
� Firmware baseado em Kernel
![Page 10: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/10.jpg)
10
Bootloader?
Firmware estruturado
� Organização genérica
RESET
Inicialização de registros
Inicialização primária
do hardware
Inicialização de
variáveis
Inicialização secundária
do hardwareLaço principal ISR 1 ISR N
S
N
Bootloader
. . .
![Page 11: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/11.jpg)
11
Firmware estruturado
� Operações atômicas em regiões críticas� Região crítica: segmento de código que não pode ser
interrompido.
� Exemplos:
� Variáveis globais compartilhadas entre diferentes níveis de interrupção
� Funções não reentrantes
� Registros de E/S que possuem validade temporal (e.g, contadores de temporizadores)
� Gerenciamento por softawre de handshake
� Acesso a uma seqüência de registros de um dispositivo de hardware
� Conversão A/D “simultânea” de dois ou mais canais sem S-H externo
� Solução para firmwares estruturados: desabilitar globalmente a ocorrência de interrupções.
![Page 12: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/12.jpg)
12
Firmware estruturado
� Operações atômicas em regiões críticas� Exemplo: interrupções iniciando com bit I desabilitado
volatile unsigned int Counter1msTicks = 0;
volatile unsigned char DAOutput;
SIGNAL (SIG_OUTPUT_COMPARE1A)
{
// Decrementa Counter1msTicks a cada interrupção se diferente de 0.
if(Counter1msTicks!=0){
--Counter1msTicks;
}
}
SIGNAL (SIG_2WIRE_SERIAL)
{
do{
send_twi_digital_to_analogic(DAOutput);
delay(5);
}
while(!receive_twi_analogic_to_digital_device());
}
Vetor 7: maior prioridade
Vetor 18: menor prioridade
![Page 13: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/13.jpg)
13
Firmware estruturado
� Operações atômicas em regiões críticas� Exemplo: interrupções iniciando com bit I desabilitado
void delay(unsigned int time_ms) // limitado em até 65535 ms.
{
unsigned int counter = 1;
ENTER_CRITICAL();
Counter1msTicks = time_ms;
LEAVE_CRITICAL();
while(counter>0){
sleep_mode();
ENTER_CRITICAL();
counter = Counter1msTicks;
LEAVE_CRITICAL();
}
}
![Page 14: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/14.jpg)
14
Firmware estruturado
� Operações atômicas em regiões críticas� Exemplo: soluções para as macros de acesso
� Solução 1
#define ENTER_CRITICAL() cli()
#define LEAVE_CRITICAL() sei()
� Solução 2
#define LOCAL_CRITICAL_CONTROL() volatile char cSREG
#define ENTER_CRITICAL() cSREG = SREG; cli()
#define LEAVE_CRITICAL() SREG = cSREG
void delay(unsigned int time_ms)
{
unsigned int counter = 1;
LOCAL_CRITICAL_CONTROL();
ENTER_CRITICAL();
.
.
.
![Page 15: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/15.jpg)
15
Firmware estruturado
� Quantização e overflow em operações� Considera-se o problema da obtenção da grandeza medida pela
leitura de um conversor A/D
Sistema
Térmico
Sensor LM35CZ
Amplificador
G = 5
10 mV/oC 50 mV/oC Conversor A/D
10 bits, Vref=5V
XT
X
T
XminXmax
Tmin
TmaxT = K·X + a
K =(Xmax -Xmin)
(Tmax -Tmin)
a = Tmax- K·Xmax = Tmin- K·Xmin
T = K·(X-Xmin) + Tmin
![Page 16: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/16.jpg)
16
Firmware estruturado
� Quantização e overflow em operações� Considera-se o problema da obtenção da grandeza medida pela
leitura de um conversor A/D (ponto flutuante)
� Solução 1 : T = K·(X-Xmin) + Tmin
#define Xmax 1023
#define Xmin 0
#define Tmax 99.90234375 /* Temperatura para Xmax */
#define Tmin 0.0 /* Temperatura para Xmin */
float convert_temperature(unsigned int X)
{
return (Tmax - Tmin)*(X - Xmin)/(Xmax - Xmin) + Tmin;
}
Problema de quantização
![Page 17: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/17.jpg)
17
Firmware estruturado
� Quantização e overflow em operações� Considera-se o problema da obtenção da grandeza medida pela
leitura de um conversor A/D (ponto flutuante)
� Solução 2 : T = K·(X-Xmin) + Tmin
#define Xmax 1023
#define Xmin 0
#define Tmax 99.90234375 /* Temperatura para Xmax */
#define Tmin 0.0 /* Temperatura para Xmin */
float convert_temperature(unsigned int X)
{
return ((Tmax - Tmin)*(X - Xmin))/(Xmax - Xmin) + Tmin;
}
![Page 18: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/18.jpg)
18
Firmware estruturado
� Quantização e overflow em operações� Considera-se o problema da obtenção da grandeza medida pela
leitura de um conversor A/D (ponto fixo)
� Solução 1 : T = K·(X-Xmin) + Tmin
#define Xmax 1023
#define Xmin 0
#define Tmax 100 /* Temperatura aproximada para Xmax */
#define Tmin 0 /* Temperatura aproximada para Xmin */
unsigned int convert_temperature(unsigned int X)
{
return ((Tmax - Tmin)*(X - Xmin))/(Xmax - Xmin) + Tmin;
}
Possível problema de overflow
![Page 19: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/19.jpg)
19
Firmware estruturado
� Quantização e overflow em operações� Considera-se o problema da obtenção da grandeza medida pela
leitura de um conversor A/D (ponto fixo)
� Solução 2 : T = K·(X-Xmin) + Tmin
#define Xmax 1023
#define Xmin 0
#define Tmax 100 /* Temperatura aproximada para Xmax */
#define Tmin 0 /* Temperatura aproximada para Xmin */
unsigned int convert_temperature(unsigned int X)
{
unsigned long int aux;
aux = (X - Xmin);
aux = ((Tmax - Tmin)*aux); aux /=(Xmax - Xmin);
return ((unsigned int)(aux)) + Tmin;
}
![Page 20: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/20.jpg)
20
Firmware estruturado
� Look-up tables (LUTs)� Em algumas situações, em vez lugar de avaliar uma
função em tempo de execução, é preferível armazenar resultados indexados em uma tabela e acessá-los quando necessário.
Função: Look-up table:
y = f(x)
quantização
interpolação
i
yi
x
ytabela
![Page 21: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/21.jpg)
21
Firmware estruturado
� Look-up tables (LUTs)� Situações para as quais usa-se LUTs:
� Cálculo trigonométrico com inteiros (e.g., geração de uma onda senoidal através de conversor D/A);
� Leitura A/D de variáveis de característica não-linear (e.g., leitura de termopares, RDTs);
� Máquina de inferência Fuzzy (e.g, controle Fuzzy);
� Conversão de código Gray para decimal (e.g., leitura de codificadores ópticos absolutos);
� Leitura de interfaces de entrada (e.g., conversão de scancodes de teclados em ASCII ou UNICODE).
� Exercício: geração de sinal PWM para acionamento de motores monofásicos
![Page 22: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/22.jpg)
22
Firmware estruturado
� Tópicos não abordados, mas importantes:� Manutenção do tempo
� Medição de período/freqüência
� Leitura de dados por conversão A/D
� Máquinas de estado
� FIFOs
� Listas encadeadas
![Page 23: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/23.jpg)
23
Firmware baseado em Kernel
� O que vem a ser um kernel ?
� Funcionalidades mínimas providas por um kernel:
� Gerenciamento de memória
� Gerenciamento de processos e comunicação entre processos (IPC)
� Recursos de E/S
� Níveis de abstração (processadores avançados):� Espaço usuário e espaço kernel
� Abstração dos dispositivos de E/S (UNIX e Linux)
� Abstração da camada de hardware: reduz dependência do hardware, tais como unidade de gerenciamento de memória, controladores de interrupção, temporizador, DMA, controlador de tarefas, ...
![Page 24: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/24.jpg)
24
Firmware baseado em Kernel
� Classificação de kernels: (wikipedia)� Kernel monolítico:
� Todos os serviços estão no kernel
� Aspectos:
� (-) menor estabilidade: a falha de um serviço derruba o sistema;
� (+) se bem feito, alcança elevado nível de desempenho;
� Exemplos: Linux, Windows 95-98-Me
![Page 25: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/25.jpg)
25
Firmware baseado em Kernel
� Classificação de kernels: (wikipedia)� Microkernel:
� Serviços básicos:
� gerenciamento de memória
� processos e IPC
� Extensão por meio de servidores
� Aspectos:
� (+) maior estabilidade: a falha de um serviço não derruba o sistema;
� (+) menor footprint e fácil de manter;
� (-) em geral, se sobrecarregam com mais facilidade;
� Exemplos: QNX, Minix, AmigaOS
![Page 26: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/26.jpg)
26
Firmware baseado em Kernel
� Classificação de kernels: (wikipedia)� Nanokernels:
� Controlam o fluxo de interrupções de hardware, redirecionando-as para outros sofwares.
� Usados como forma de virtualização do hardware, permitindo que vários sistemas operacionais co-existam ao mesmo tempo
� Limitações de uso de kernels clássicos para sistemas embarcados:
� Tamanho de memória
� Não-determinismo de algumas funções
� Alto jitter para comutação de tarefas
� Escalonadores buscam maximizar o número de tarefas por período de execução
![Page 27: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/27.jpg)
27
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)
![Page 28: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/28.jpg)
28
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Escalonador
� Associado a uma interrupção de temporizador de alta prioridade e periodicidade constante.
� Responsável por:
� Atualização dos estados das tarefas
� Aplicação da política de escalonamento
� Execução das tarefas
� Chaveamento de contexto
![Page 29: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/29.jpg)
29
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Tarefas: modelo e estruturas associadas
Modelo POSIX
Em outros sistemas, a tarefa se encerra
(return)
Estado, prioridade, SP, ponteiros para
próximo TCBsvizinhos na lista,...
![Page 30: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/30.jpg)
30
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Tarefas: estados
Pode ser diferente conforme o sistema e o número de processadores
[Li & Yao, 2003] [Laplante, 1993]
![Page 31: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/31.jpg)
31
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Tarefas: exemplo
void tarefa1(void)
{
for(;;){
printf(“Tarefa 1”);
}
}
void tarefa2(void)
{
for(;;){
printf(“Tarefa 2”);
}
}
![Page 32: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/32.jpg)
32
T1
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Políticas de escalonamento: round-robin
t
Escalonador:
Prioridade
Alta
Média
Baixa T2 T3 T1 T2 T3 T1 T2 . . .
t
![Page 33: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/33.jpg)
33
T1
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Políticas de escalonamento: round-robin com prioridade
t
Escalonador:
Prioridade
Alta
Média
Baixa T2
T5
T3 T1
T5
T2 T3 . . .
t
![Page 34: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/34.jpg)
34
T1
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Políticas de escalonamento: preemptivo
t
Escalonador:
Prioridade
Alta
Média
Baixa
T2
T3
T2 (cont.)
T1 (cont.) . . .
t
Preempção
Encerramento
![Page 35: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/35.jpg)
35
T1
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Políticas de escalonamento: round-robin e preemptivo
t
Escalonador:
Prioridade
Alta
Média
Baixa T2 T3
T6
T3 T1 T2 . . .
t
Preempção Conclusão de T6
Continuação de T3
![Page 36: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/36.jpg)
36
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Políticas de escalonamento: exemplo (revisitado)
� Que padrões de saída espera-se ter quando...
� (a) escalonamento round-robin
� (b) escalonamento round-robin com prioridade (P2 > P1)
void tarefa1(void)
{
for(;;){
printf(“Tarefa 1”);
}
}
void tarefa2(void)
{
for(;;){
printf(“Tarefa 2”);
}
}
![Page 37: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/37.jpg)
37
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Objetos que permitem lidar com o acesso a recursos compartilhados
� Estrutura de um semáforo:
![Page 38: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/38.jpg)
38
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Semáforo binário:
![Page 39: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/39.jpg)
39
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Semáforo com contador:
![Page 40: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/40.jpg)
40
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Mutex:
![Page 41: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/41.jpg)
41
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Semáforos: implementações com bloqueio [Laplante, 1993]
_inline void Wait(unsigned char Status)
{
while(Status==TRUE);
Status = TRUE;
}
_inline void Signal(unsigned char Status)
{
Status = FALSE;
}
![Page 42: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/42.jpg)
42
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Semáforos: implementações sem bloqueio [Stallings, 2001]
![Page 43: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/43.jpg)
43
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Emprego de semáforos
� Sincronismo espera e sinaliza:
� Sincronismo espera e sinaliza de múltiplas tarefas:
![Page 44: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/44.jpg)
44
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Emprego de semáforos
� Sincronismo com contagem de sinalização:
� Acesso a recurso compartilhado:
![Page 45: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/45.jpg)
45
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Emprego de semáforos
� Múltiplo acesso a recurso compartilhado:
![Page 46: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/46.jpg)
46
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Semáforos
� Exemplo: recurso stdout compartilhado
void tarefa1(void)
{
for(;;){
printf(“Tarefa 1”);
}
}
void tarefa2(void)
{
for(;;){
printf(“Tarefa 2”);
}
}
void tarefa1(void)
{
for(;;){
wait(S);
printf(“Tarefa 1”);
signal(S);
}
}
void tarefa2(void)
{
for(;;){
wait(S);
printf(“Tarefa 2”);
signal(S);
}
}
Sem semáforo
binário
Com semáforo
binário
![Page 47: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/47.jpg)
47
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Message queues
� Permite a transferência de dados entre tarefas/processos
� Estrutura:
![Page 48: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/48.jpg)
48
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Message queues
� Estados:
![Page 49: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/49.jpg)
49
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Message queues
� Procedimento de uso:
![Page 50: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/50.jpg)
50
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Message queues
� Emprego de message queues:
� Comunicação em sentido único sem inter-travamento:
� Comunicação em sentido único com inter-travamento:
Mailbox: message queue
com comprimento 1
Inicialmente 0
wait signal
![Page 51: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/51.jpg)
51
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Message queues
� Emprego de message queues:
� Comunicação em sentido duplo com inter-travamento:
![Page 52: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/52.jpg)
52
Firmware baseado em Kernel
� Sistemas operacionais de tempo real (RTOS)� Rate-monotonic schedulers: a prioridade de uma tarefa é
determinada em função de sua freqüência
� Outros tópicos:
� Processos
� Objetos de sincronismo: eventos
� RTOS para microcontroladores AVR:
� FreeRTOS: http://www.freertos.org/
� AvrX: http://www.barello.net/avrx/
![Page 53: Introdução ao desenvolvimento de firmwares](https://reader031.vdocuments.com.br/reader031/viewer/2022012320/557ddb62d8b42a4c238b51f9/html5/thumbnails/53.jpg)
53
[Li & Yao, 2003] LI, Q.; YAO, C. Real-Time Concepts for Embedded Systems. CMPBooks, 2003.
[Laplante, 1993] Laplante, P.A. Real-Time Systems Design and Analysis – an engineer’s handbook, IEEE Computer Society Press, 1993;
[Stallings, 2001] William Stalling, Operating Systems: Internals andDesign Principles, Prentice Hall, 2001.
Referências