Como firmwares comunicar com os dispositivos eletrônicos para executar as suas operações?

StackOverflow https://stackoverflow.com/questions/1761334

  •  21-09-2019
  •  | 
  •  

Pergunta

Quase todos os dispositivos eletrônicos vem com firmwares.Eu sei que é armazenado na ROM (memória de Leitura), assim ela se torna não-volátil (sem fonte de energia necessária para manter o conteúdo de ficar apagada como RAM)

O que eu quero saber é: "Como firmwares comunicar com os dispositivos eletrônicos para executar as suas operações?" Vamos dizer que há um pequeno rolo..No pressionar de um botão, como o faz mover?Alguém pode por favor explicar o que é que residem por trás, para que isso aconteça..Eu acho que pode exigir um pouco de breve explicação para relaxar-lo..

Também o que é a mais popular linguagem usada para a codificação de firmwares?

Foi útil?

Solução

Hardware moderno como você está descrevendo tem um programa armazenado na ROM e um microcomputador (CPU) executar o programa.

A CPU lê as informações da ROM através da configuração de endereços no bus de endereços e, em seguida, pedindo a ROM para dizer a ele o valor armazenado no local.Não há nada como uma leitura de pulso a ser levantada (em uma linha separada) para indicar a ROM para tornar o valor acessíveis nas linhas do barramento de dados.Isso, em poucas palavras, é a leitura.

Para obter o hardware para fazer algo, a CPU basicamente executa um tipo de gravação operação.Ele coloca um valor, que é apenas um monte de bits se você quiser ver dessa maneira, o bus de endereços para seleccionar um determinado dispositivo e, talvez, função em que o dispositivo, em seguida, ele levanta uma outra linha de sinal, dizendo: "escreva!" O dispositivo que reconhece o seu endereço de bus de endereços responde ao sinal ao aceitar os dados do barramento de dados e, em seguida, executar qualquer que seja a sua função.Normalmente, um dos bits de barramento de dados será ligado no dispositivo de saída potência de saída de fase, isto é,um transistor mais forte do que aqueles usados apenas para a computação, e que o transistor irá se conectar algum dispositivo elétrico de corrente suficiente para fazê-lo mover/brilho/whatever.

Pequeno, barato dispositivos são codificados em linguagem assembly para economizar custos para os ROM;em quantidades industriais, mesmo pequenas quantidades de memória podem afetar o preço.A linguagem assembly é específico para a CPU;alguns chips chamados de "8051", "6502" e "Atmel (uma coisa ou outra)" são populares.Maior dispositivos com necessidades mais complexas podem ter seu firmware escrito em C ou C-como dialeto, o que torna a programação um pouco mais fácil do que o assembler.O bigges queridos até mesmo executar código em C++.Compilado, é claro.

Outras dicas

Na maioria dos sistemas especiais são endereços de memória que são utilizados para I/O.Leitura e escrita em tais endereços executa alguma função em vez de apenas mover dados.Em sistemas x86, há também especiais instruções de e/S e para que.

O caso mais simples é o chamado geral paralelo de e/S (GPIO), onde você pode ler ou escrever dados diretamente do/para externos elétricos pinos do dispositivo.Existem vários endereços de memória chamados registradores, onde você pode ler os dados da porta (tensão perto de 0 = 0, perto de tensão de alimentação = 1), onde você pode escrever dados para a porta, e onde você pode definir se um determinado pino de entrada (o bit correspondente é normalmente 0) ou de saída (o bit é 1).Cada microcontrolador tem GPIO.

Assim, em seu exemplo, o botão pode ser conectado a um pino de definir a entrada, que o software poderia sentido.Ele normalmente faria isso a cada 10ms e só reagem se ele tiver um valor estável para várias leituras, isso é chamado de debouncing.Em seguida, ele iria escrever um 1 para alguma saída, que através de alguns transistor para a amplificação pode acionar um motor.Se ele sente que você solte o interruptor poderia desligar o motor novamente escrevendo um 0.E assim por diante, este programa será executado até que você desligue o dispositivo.

Existem muitos outros dispositivos de e/S para outros fins, geralmente com centenas de registros para controlá-los.Se você quiser ver mais, pode consultar a ficha de dados de alguns microcontrolador.Por exemplo, aqui é a folha de dados de ATtiny4/5/9/10, um pequeno controlador da Atmel AVR família.

Hoje, a maioria de firmware é escrito em C, exceto para os menores dispositivos e para um pouco de código especial para lidar com redefine e interrupções, o que é escrito em linguagem assembly.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top