Software">
Firmware
Firmware
Firmware
Introdução ao desenvolvimento
de firmwares
2
Modalidades de desenvolvimento
TARGET: para sistemas capazes de armazenar e
executar as ferramentas de desenvolvimento
3
Modalidades de desenvolvimento
HOST e TARGET: ferramentas de desenvolvimento
cruzado em um microcomputador hospedeiro
4
Modalidades de desenvolvimento
HOST, TARGET e unidade de armazenamento
removível: indicado para estágios iniciais de
configuração/otimização do kernel
5
Ciclo de desenvolvimento
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...
6
Ciclo de desenvolvimento
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
7
Ciclo de desenvolvimento
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
8
Tópicos desenvolvidos para a disciplina
Introdução à linguagem C
Consultar documento linguagemC.pdf
Arquiteturas de firmwares
Firmware estruturado
Firmware baseado em Kernel
9
Firmware estruturado
Organização genérica
RESET
Inicialização de registros
Inicialização primária
do hardware
S
Bootloader? Bootloader
Inicialização de
variáveis
Inicialização secundária
Laço principal ISR 1 ... ISR N
do hardware
10
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.
11
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;
12
Firmware estruturado
Operações atômicas em regiões críticas
Exemplo: interrupções iniciando com bit I desabilitado
ENTER_CRITICAL();
Counter1msTicks = time_ms;
LEAVE_CRITICAL();
while(counter>0){
sleep_mode();
ENTER_CRITICAL();
counter = Counter1msTicks;
LEAVE_CRITICAL();
}
}
13
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
ENTER_CRITICAL();
.
.
.
14
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
T
Tmax T = K·X + a
(Tmax -Tmin)
K=
(Xmax -Xmin)
Tmin
T = K·(X-Xmin) + Tmin
Xmin Xmax X
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 (ponto flutuante)
Solução 1 : T = K·(X-X
min) + Tmin
Problema de quantização
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 2 : T = K·(X-X
min) + Tmin
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 fixo)
Solução 1 : T = K·(X-X
min) + Tmin
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 2 : T = K·(X-X
min) + Tmin
aux = (X - Xmin);
aux = ((Tmax - Tmin)*aux); aux /=(Xmax - Xmin);
return ((unsigned int)(aux)) + Tmin;
}
19
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.
x
y = f(x)
quantização i
yi
interpolação
y
tabela
20
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).
21
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
22
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, ...
23
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
24
Firmware baseado em Kernel
Classificação de kernels: (wikipedia)
Microkernel:
Serviços básicos:
gerenciamento de memória
processos e IPC
25
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
26
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
27
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
28
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Tarefas: modelo e estruturas associadas
Estado, prioridade,
SP, ponteiros para
próximo TCBs
vizinhos na lista,...
Modelo POSIX
Em outros sistemas,
a tarefa se encerra
(return)
29
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Tarefas: estados
31
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Políticas de escalonamento: round-robin
Prioridade
Alta
Média
Baixa T1 T2 T3 T1 T2 T3 T1 T2 ...
Escalonador:
32
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Políticas de escalonamento: round-robin com prioridade
Prioridade
Alta
Média T5 T5
Baixa T1 T2 T3 T1 T2 T3 ...
Escalonador:
33
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Políticas de escalonamento: preemptivo
Prioridade
Alta T3 Encerramento
Média T2 T2 (cont.)
Preempção ...
Baixa T1 T1 (cont.)
Escalonador:
34
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Políticas de escalonamento: round-robin e preemptivo
Prioridade
Alta T6
Preempção Conclusão de T6
Continuação de T3
Média
Baixa T1 T2 T3 T3 T1 T2 ...
Escalonador:
35
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Políticas de escalonamento: exemplo (revisitado)
36
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:
37
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Semáforo binário:
38
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Semáforo com contador:
39
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Mutex:
40
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Semáforos: implementações com bloqueio [Laplante, 1993]
41
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Semáforos: implementações sem bloqueio [Stallings, 2001]
42
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Emprego de semáforos
Sincronismo espera e sinaliza:
43
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Emprego de semáforos
Sincronismo com contagem de sinalização:
44
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Emprego de semáforos
Múltiplo acesso a recurso compartilhado:
45
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Semáforos
Exemplo: recurso stdout compartilhado
46
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Message queues
Permite a transferência de dados entre tarefas/processos
Estrutura:
47
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Message queues
Estados:
48
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Message queues
Procedimento de uso:
49
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Message queues
Emprego de message queues:
Comunicação em sentido único sem inter-travamento:
wait signal
Inicialmente 0
50
Firmware baseado em Kernel
Sistemas operacionais de tempo real (RTOS)
Message queues
Emprego de message queues:
Comunicação em sentido duplo com inter-travamento:
51
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
52
Referências
[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 and
Design Principles, Prentice Hall, 2001.
53