Sistemas Embarcados - Termos

Contador de programa

O contador de programa é um registrador de 16 ou 32 bits que contém o endereço da próxima instrução a ser executada. O PC aumenta automaticamente para a próxima localização da memória sequencial sempre que uma instrução é obtida. As operações de desvio, salto e interrupção carregam o contador do programa com um endereço diferente do próximo local sequencial.

Ativar uma reinicialização de inicialização fará com que todos os valores no registro sejam perdidos. Isso significa que o valor do PC (contador do programa) é 0 após a reinicialização, forçando a CPU a buscar o primeiro opcode da localização da memória ROM 0000. Isso significa que devemos colocar o primeiro byte do upcode na localização 0000 da ROM porque é onde o CPU espera encontrar a primeira instrução

Redefinir vetor

O significado do vetor de reinicialização é que ele aponta o processador para o endereço de memória que contém a primeira instrução do firmware. Sem o vetor de redefinição, o processador não saberia por onde começar a execução. Após a reinicialização, o processador carrega o contador de programa (PC) com o valor do vetor de reinicialização de um local de memória predefinido. Na arquitetura CPU08, ele está no local $ FFFE: $ FFFF.

Quando o vetor de redefinição não é necessário, os desenvolvedores normalmente o consideram certo e não programam na imagem final. Como resultado, o processador não inicializa no produto final. É um erro comum que ocorre durante a fase de depuração.

Ponteiro de pilha

A pilha é implementada na RAM e um registro da CPU é usado para acessá-la, chamada de registro SP (Stack Pointer). O registro SP é um registro de 8 bits e pode endereçar endereços de memória no intervalo de 00h a FFh. Inicialmente, o registro SP contém o valor 07 para apontar para o local 08 como o primeiro local sendo usado para a pilha pelo 8051.

Quando o conteúdo de um registro da CPU é armazenado em uma pilha, isso é chamado de operação PUSH. Quando o conteúdo de uma pilha é armazenado em um registro da CPU, isso é chamado de operação POP. Em outras palavras, um registro é colocado na pilha para salvá-lo e retirado da pilha para recuperá-lo.

Loop infinito

Um loop infinito ou um loop infinito pode ser identificado como uma sequência de instruções em um programa de computador que é executado infinitamente em um loop, devido às seguintes razões -

  • loop sem condição de terminação.
  • loop com uma condição de terminação que nunca pode ser atendida.
  • loop com uma condição de término que faz com que o loop seja reiniciado.

Esses loops infinitos normalmente faziam com que os sistemas operacionais mais antigos parassem de responder, pois um loop infinito consome todo o tempo disponível do processador. As operações de E / S que aguardam entradas do usuário também são chamadas de "loops infinitos". Uma possível causa do "congelamento" de um computador é um loop infinito; outras causas incluemdeadlock e access violations.

Os sistemas embarcados, ao contrário de um PC, nunca "saem" de um aplicativo. Eles ficam ociosos por meio de um loop infinito, esperando que um evento ocorra na forma de uma interrupção, ou umpre-scheduled task. Para economizar energia, alguns processadores entramsleep ou wait modes em vez de ficar ocioso por meio de um loop infinito, mas eles sairão desse modo após um cronômetro ou uma interrupção externa.

Interrupções

As interrupções são principalmente mecanismos de hardware que informam ao programa que ocorreu um evento. Eles podem ocorrer a qualquer momento e, portanto, são assíncronos ao fluxo do programa. Eles requerem tratamento especial por parte do processador e, em última análise, são tratados por uma rotina de serviço de interrupção (ISR) correspondente. As interrupções precisam ser tratadas rapidamente. Se você demorar muito para atender a uma interrupção, poderá perder outra interrupção.

Little Endian Vs Big Endian

Embora os números sejam sempre exibidos da mesma forma, eles não são armazenados da mesma forma na memória. As máquinas Big-Endian armazenam o byte de dados mais significativo no endereço de memória mais baixo. Uma máquina Big-Endian armazena 0x12345678 como -

ADD+0: 0x12 
ADD+1: 0x34 
ADD+2: 0x56 
ADD+3: 0x78

As máquinas Little-Endian, por outro lado, armazenam o byte de dados menos significativo no endereço de memória mais baixo. Uma máquina Little-Endian armazena 0x12345678 como -

ADD+0: 0x78 
ADD+1: 0x56 
ADD+2: 0x34 
ADD+3: 0x12