O que é firmware?
Firmware é essencialmente software, mas um que faz interface com o hardware. Enquanto o software que conhecemos é escrito para correr em CPUs de propósito geral, o firmware é escrito para correr em processadores especiais. Não há muita diferença no firmware desse software. Enquanto no software você estará lendo a partir da entrada std (teclado) e escrevendo para a saída std (tela), no firmware você talvez leia a partir de um pino (ex. nível de voltagem) e escreva para um pino (ex. mudança de nível de voltagem). Ou em software você leria de um arquivo texto e escreveria para um arquivo texto, em firmware você leria de um bloco de memória e escreveria para um bloco de memória.
Firmware é normalmente escrito em assembly, C/C++. Uma grande diferença no firmware é que a execução do programa é altamente determinista. Firmware pode ser escrito para executar apenas o seu programa, nada mais. Não existem tarefas de fundo. Ele só executa o seu código e somente o seu código. Isto é muito importante para a maioria dos firmware, por exemplo, em automóveis, onde você precisa saber absolutamente que seu código é executado quando ele deve ser executado, sem demora. No firmware você pode saber exatamente quanto tempo levará para executar uma determinada tarefa, novamente porque apenas o seu código está rodando. Você pode olhar para a desmontagem do seu código, contar as instruções e saber exatamente quanto tempo levaria para executar uma tarefa em particular. Isto é algo que você não pode fazer com software rodando em uma CPU de propósito geral em cima de um SO. Claro que existem OS's para firmware, RTOS (real-time OS), que de alguma forma se comportam um pouco como um SO normal de PC, mas ainda com uma sobrecarga muito baixa. Mas quando a precisão e o tempo são importantes, você escreve barebone firmware.
Artigos semelhantes
- O que é firmware? Eu sei como escrever drivers, sei o que fazemos no desenvolvimento de drivers, mas onde está a necessidade de firmware?
- O que faz o firmware no meu telefone? Por que está ocupando 9 GB de espaço no meu telefone? Será que eu poderia limpar?
- O que é um firmware? Em que é diferente de um kernel ou SO?
- O que é que um engenheiro de firmware faz?