SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Projeto de Sistemas Embarcados Microcontrolados
          Departamento de Engenharia Elétrica
                 Universidade de Brasília




Introdução ao desenvolvimento
         de firmwares

             Prof. Geovany A. Borges
               gaborges@ene.unb.br
Firmwares de sistemas embarcados
 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.



                                                                 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


 Desenvolvimento com o µC ATMega8
    Consultar documento desenvolvimentoATmega8.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

                  N

          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;

  SIGNAL (SIG_OUTPUT_COMPARE1A)     Vetor 7: maior prioridade
  {
     // Decrementa Counter1msTicks a cada interrupção se diferente de 0.
     if(Counter1msTicks!=0){
       --Counter1msTicks;
     }
  }

  SIGNAL (SIG_2WIRE_SERIAL)      Vetor 18: menor prioridade
  {
     do{
       send_twi_digital_to_analogic(DAOutput);
       delay(5);
     }
     while(!receive_twi_analogic_to_digital_device());
  }




                                                                           12
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();
      }
  }




                                                                  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

            void delay(unsigned int time_ms)
            {
               unsigned int counter = 1;
               LOCAL_CRITICAL_CONTROL();

                  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

Sistema       T           Sensor   10 mV/oC Amplificador 50 mV/oC     Conversor A/D         X
                         LM35CZ
Térmico                                        G=5                    10 bits, Vref=5V

          T
     Tmax                                                        T = K·X + a
                                                                      (Tmax -Tmin)
                                                                 K=
                                                                      (Xmax -Xmin)

                                                              a = Tmax- K·Xmax = Tmin- K·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-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




                                                                  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-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;
    }




                                                                 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-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




                                                                  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-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;
    }




                                                                  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.

       Função:          Look-up table:

                               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).


   Exercício: geração de sinal PWM para acionamento de
   motores monofásicos


                                                                 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


      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




                                                                        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




     [Li & Yao, 2003]                                  [Laplante, 1993]



      Pode ser diferente conforme o sistema e o número de processadores
                                                                          30
Firmware baseado em Kernel
 Sistemas operacionais de tempo real (RTOS)
   Tarefas: exemplo

       void tarefa1(void)         void tarefa2(void)
       {                          {
          for(;;){                   for(;;){
            printf(“Tarefa 1”);        printf(“Tarefa 2”);
          }                          }
       }                          }




                                                             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   ...


                                                                t


          Escalonador:




                                                                t


                                                                    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   ...


                                                                t


          Escalonador:




                                                                t


                                                                    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.)

                                                                       t


          Escalonador:




                                                                       t


                                                                           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    ...


                                                                t


          Escalonador:




                                                                t


                                                                    35
Firmware baseado em Kernel
 Sistemas operacionais de tempo real (RTOS)
   Políticas de escalonamento: exemplo (revisitado)

       void tarefa1(void)             void tarefa2(void)
       {                              {
          for(;;){                       for(;;){
            printf(“Tarefa 1”);            printf(“Tarefa 2”);
          }                              }
       }                              }




      Que padrões de saída espera-se ter quando...
          (a) escalonamento round-robin
          (b) escalonamento round-robin com prioridade (P2 > P1)




                                                                   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]

        _inline void Wait(unsigned char Status)
        {
           while(Status==TRUE);
           Status = TRUE;
        }

        _inline void Signal(unsigned char Status)
        {
           Status = FALSE;
        }




                                                           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:




         Sincronismo espera e sinaliza de múltiplas tarefas:




                                                               43
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:




                                                    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

   void tarefa1(void)          void tarefa2(void)
   {                           {
      for(;;){                    for(;;){                Sem semáforo
        printf(“Tarefa 1”);         printf(“Tarefa 2”);
                                                          binário
      }                           }
   }                           }



   void tarefa1(void)          void tarefa2(void)
   {                           {
      for(;;){                    for(;;){
        wait(S);                    wait(S);              Com semáforo
        printf(“Tarefa 1”);         printf(“Tarefa 2”);
                                                          binário
        signal(S);                  signal(S);
      }                           }
   }                           }


                                                                    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:




         Comunicação em sentido único com inter-travamento:
                                              Mailbox: message queue
                                              com comprimento 1




                     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


   RTOS para microcontroladores AVR:
      FreeRTOS: http://www.freertos.org/
      AvrX: http://www.barello.net/avrx/




                                                        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

Mais conteúdo relacionado

Mais procurados

Questões multipla escolha segmentação
Questões multipla escolha segmentaçãoQuestões multipla escolha segmentação
Questões multipla escolha segmentaçãoMoises Ribeiro
 
Resenha a educacao fisica e o esporte na escola
Resenha a educacao fisica e o esporte na escolaResenha a educacao fisica e o esporte na escola
Resenha a educacao fisica e o esporte na escolaFatima Santos
 
Saiba Tudo sobre Capacidades físicas
Saiba Tudo sobre Capacidades físicasSaiba Tudo sobre Capacidades físicas
Saiba Tudo sobre Capacidades físicasFelipe Alencar Barros
 
Factores de escolha profissional
Factores de escolha profissionalFactores de escolha profissional
Factores de escolha profissionalLaissane Dimande
 
Regulamento de Uniformes da Marinha do Brasil RUMB VOLUME II
Regulamento de Uniformes da Marinha do Brasil RUMB VOLUME IIRegulamento de Uniformes da Marinha do Brasil RUMB VOLUME II
Regulamento de Uniformes da Marinha do Brasil RUMB VOLUME IIFalcão Brasil
 
Preparação Física no Futebol - Em Busca da Excelência
Preparação Física no Futebol - Em Busca da ExcelênciaPreparação Física no Futebol - Em Busca da Excelência
Preparação Física no Futebol - Em Busca da ExcelênciaRodrigo Saffi Mello
 
Aula 01: Medidas e Avaliação Psicomotoras do Treinamento Desportivo
Aula 01: Medidas e Avaliação Psicomotoras do Treinamento DesportivoAula 01: Medidas e Avaliação Psicomotoras do Treinamento Desportivo
Aula 01: Medidas e Avaliação Psicomotoras do Treinamento DesportivoLeonardo Delgado
 
Planejamento anual da Educação Física
Planejamento anual da Educação FísicaPlanejamento anual da Educação Física
Planejamento anual da Educação FísicaKain2014
 
Avaliação Neuromuscular
Avaliação NeuromuscularAvaliação Neuromuscular
Avaliação NeuromuscularAmarildo César
 
Treinamento esportivo i
Treinamento esportivo iTreinamento esportivo i
Treinamento esportivo iMarcus Prof
 
Avaliação física para o personal training
Avaliação física para o personal trainingAvaliação física para o personal training
Avaliação física para o personal trainingJoao P. Dubas
 
Programação, Periodização e Planificação do Treino de Futebol
Programação, Periodização e Planificação do Treino de FutebolProgramação, Periodização e Planificação do Treino de Futebol
Programação, Periodização e Planificação do Treino de FutebolFundação Real Madrid
 
CGCFN-1003 - Manual Básico do Fuzileiro Naval
CGCFN-1003 - Manual Básico do Fuzileiro NavalCGCFN-1003 - Manual Básico do Fuzileiro Naval
CGCFN-1003 - Manual Básico do Fuzileiro NavalFalcão Brasil
 

Mais procurados (20)

Questões multipla escolha segmentação
Questões multipla escolha segmentaçãoQuestões multipla escolha segmentação
Questões multipla escolha segmentação
 
Resenha a educacao fisica e o esporte na escola
Resenha a educacao fisica e o esporte na escolaResenha a educacao fisica e o esporte na escola
Resenha a educacao fisica e o esporte na escola
 
Avaliação física
Avaliação físicaAvaliação física
Avaliação física
 
Avaliação em atividade motora adaptada
Avaliação em atividade motora adaptadaAvaliação em atividade motora adaptada
Avaliação em atividade motora adaptada
 
Planejamento da sessão de treinamento
Planejamento da sessão de treinamentoPlanejamento da sessão de treinamento
Planejamento da sessão de treinamento
 
Saiba Tudo sobre Capacidades físicas
Saiba Tudo sobre Capacidades físicasSaiba Tudo sobre Capacidades físicas
Saiba Tudo sobre Capacidades físicas
 
Factores de escolha profissional
Factores de escolha profissionalFactores de escolha profissional
Factores de escolha profissional
 
Interclasse base
Interclasse baseInterclasse base
Interclasse base
 
Regulamento de Uniformes da Marinha do Brasil RUMB VOLUME II
Regulamento de Uniformes da Marinha do Brasil RUMB VOLUME IIRegulamento de Uniformes da Marinha do Brasil RUMB VOLUME II
Regulamento de Uniformes da Marinha do Brasil RUMB VOLUME II
 
Preparação Física no Futebol - Em Busca da Excelência
Preparação Física no Futebol - Em Busca da ExcelênciaPreparação Física no Futebol - Em Busca da Excelência
Preparação Física no Futebol - Em Busca da Excelência
 
Aula 01: Medidas e Avaliação Psicomotoras do Treinamento Desportivo
Aula 01: Medidas e Avaliação Psicomotoras do Treinamento DesportivoAula 01: Medidas e Avaliação Psicomotoras do Treinamento Desportivo
Aula 01: Medidas e Avaliação Psicomotoras do Treinamento Desportivo
 
Planejamento anual da Educação Física
Planejamento anual da Educação FísicaPlanejamento anual da Educação Física
Planejamento anual da Educação Física
 
ATLESTIMO ADAPTADO.pptx
ATLESTIMO ADAPTADO.pptxATLESTIMO ADAPTADO.pptx
ATLESTIMO ADAPTADO.pptx
 
Lesões do lca
Lesões do lcaLesões do lca
Lesões do lca
 
Avaliação Neuromuscular
Avaliação NeuromuscularAvaliação Neuromuscular
Avaliação Neuromuscular
 
Treinamento esportivo i
Treinamento esportivo iTreinamento esportivo i
Treinamento esportivo i
 
Como calcular sua frequência cardíaca de treino?
Como calcular sua frequência cardíaca de treino?Como calcular sua frequência cardíaca de treino?
Como calcular sua frequência cardíaca de treino?
 
Avaliação física para o personal training
Avaliação física para o personal trainingAvaliação física para o personal training
Avaliação física para o personal training
 
Programação, Periodização e Planificação do Treino de Futebol
Programação, Periodização e Planificação do Treino de FutebolProgramação, Periodização e Planificação do Treino de Futebol
Programação, Periodização e Planificação do Treino de Futebol
 
CGCFN-1003 - Manual Básico do Fuzileiro Naval
CGCFN-1003 - Manual Básico do Fuzileiro NavalCGCFN-1003 - Manual Básico do Fuzileiro Naval
CGCFN-1003 - Manual Básico do Fuzileiro Naval
 

Semelhante a Firmware embarcados

Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônicaFabio Souza
 
Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®Gerson Roberto da Silva
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdfmicrocontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdftccunip
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadoshenriqueprossi
 
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Armando Alaminos Bouza
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosEmbarcados
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCFabio Souza
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoElaine Cecília Gatto
 
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...Marcelo Barros de Almeida
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Intel Software Brasil
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascalJocelma Rios
 
Linguagem c-para-microcontroladores
Linguagem c-para-microcontroladoresLinguagem c-para-microcontroladores
Linguagem c-para-microcontroladores34macchia34
 

Semelhante a Firmware embarcados (20)

Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdfmicrocontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcados
 
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcados
 
ARM
ARMARM
ARM
 
Parte1c
Parte1cParte1c
Parte1c
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroC
 
Resumo Linguagem C
Resumo Linguagem CResumo Linguagem C
Resumo Linguagem C
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introdução
 
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
Ud2
Ud2Ud2
Ud2
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
Linguagem c-para-microcontroladores
Linguagem c-para-microcontroladoresLinguagem c-para-microcontroladores
Linguagem c-para-microcontroladores
 
C pic
C picC pic
C pic
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Firmware embarcados

  • 1. Projeto de Sistemas Embarcados Microcontrolados Departamento de Engenharia Elétrica Universidade de Brasília Introdução ao desenvolvimento de firmwares Prof. Geovany A. Borges gaborges@ene.unb.br
  • 2. Firmwares de sistemas embarcados 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. 2
  • 3. Modalidades de desenvolvimento TARGET: para sistemas capazes de armazenar e executar as ferramentas de desenvolvimento 3
  • 4. Modalidades de desenvolvimento HOST e TARGET: ferramentas de desenvolvimento cruzado em um microcomputador hospedeiro 4
  • 5. Modalidades de desenvolvimento HOST, TARGET e unidade de armazenamento removível: indicado para estágios iniciais de configuração/otimização do kernel 5
  • 6. 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
  • 7. 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
  • 8. 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
  • 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 9
  • 10. Firmware estruturado Organização genérica RESET Inicialização de registros Inicialização primária do hardware S Bootloader? Bootloader N Inicialização de variáveis Inicialização secundária Laço principal ISR 1 ... ISR N do hardware 10
  • 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. 11
  • 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) Vetor 7: maior prioridade { // Decrementa Counter1msTicks a cada interrupção se diferente de 0. if(Counter1msTicks!=0){ --Counter1msTicks; } } SIGNAL (SIG_2WIRE_SERIAL) Vetor 18: menor prioridade { do{ send_twi_digital_to_analogic(DAOutput); delay(5); } while(!receive_twi_analogic_to_digital_device()); } 12
  • 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(); } } 13
  • 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(); . . . 14
  • 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 Sensor 10 mV/oC Amplificador 50 mV/oC Conversor A/D X LM35CZ Térmico G=5 10 bits, Vref=5V T Tmax T = K·X + a (Tmax -Tmin) K= (Xmax -Xmin) a = Tmax- K·Xmax = Tmin- K·Xmin Tmin T = K·(X-Xmin) + Tmin Xmin Xmax X 15
  • 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 16
  • 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; } 17
  • 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 18
  • 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; } 19
  • 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: x y = f(x) quantização i yi interpolação y tabela 20
  • 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 21
  • 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 22
  • 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, ... 23
  • 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 24
  • 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 25
  • 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 26
  • 27. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) 27
  • 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 28
  • 29. 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
  • 30. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Tarefas: estados [Li & Yao, 2003] [Laplante, 1993] Pode ser diferente conforme o sistema e o número de processadores 30
  • 31. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Tarefas: exemplo void tarefa1(void) void tarefa2(void) { { for(;;){ for(;;){ printf(“Tarefa 1”); printf(“Tarefa 2”); } } } } 31
  • 32. 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 ... t Escalonador: t 32
  • 33. 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 ... t Escalonador: t 33
  • 34. 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.) t Escalonador: t 34
  • 35. 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 ... t Escalonador: t 35
  • 36. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Políticas de escalonamento: exemplo (revisitado) void tarefa1(void) void tarefa2(void) { { for(;;){ for(;;){ printf(“Tarefa 1”); printf(“Tarefa 2”); } } } } Que padrões de saída espera-se ter quando... (a) escalonamento round-robin (b) escalonamento round-robin com prioridade (P2 > P1) 36
  • 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: 37
  • 38. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Semáforos Semáforo binário: 38
  • 39. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Semáforos Semáforo com contador: 39
  • 40. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Semáforos Mutex: 40
  • 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; } 41
  • 42. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Semáforos Semáforos: implementações sem bloqueio [Stallings, 2001] 42
  • 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: 43
  • 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: 44
  • 45. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Semáforos Emprego de semáforos Múltiplo acesso a recurso compartilhado: 45
  • 46. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Semáforos Exemplo: recurso stdout compartilhado void tarefa1(void) void tarefa2(void) { { for(;;){ for(;;){ Sem semáforo printf(“Tarefa 1”); printf(“Tarefa 2”); binário } } } } void tarefa1(void) void tarefa2(void) { { for(;;){ for(;;){ wait(S); wait(S); Com semáforo printf(“Tarefa 1”); printf(“Tarefa 2”); binário signal(S); signal(S); } } } } 46
  • 47. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Message queues Permite a transferência de dados entre tarefas/processos Estrutura: 47
  • 48. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Message queues Estados: 48
  • 49. Firmware baseado em Kernel Sistemas operacionais de tempo real (RTOS) Message queues Procedimento de uso: 49
  • 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 wait signal Inicialmente 0 50
  • 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: 51
  • 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/ 52
  • 53. 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