terça-feira, 20 de abril de 2010

OpenFirmware e Linux !

Voltei, agora vamos falar de firmware para Linux mais especificamente OpenFirmware.
(promessa é divida niquel )

Hoje existe 2 formas de se trabalhar com firmware:

1 - Carregando este firmware em um dispositivo físico, ROM, PROM, EPROM ou ainda EEPROM , integrados ao hardware.

2 - Carregando o firmware para dispositivos externos, por exemplo uma placa wirelles , uma placa de tv, apartir de um arquivo contendo as instruções para o dispositivo.


O firmware na realidade é um software, mas geralmente destina-se ao controle de determinadas funções, para dispositivos fisicos, como nos exemplos citados acima.


Firmware

Firmware é o conjunto de instruções operacionais programadas diretamente no hardware de um equipamento eletrônico.
É armazenado permanentemente num circuito integrado (chip) de memória de hardware, como uma ROM, PROM, EPROM ou ainda EEPROM e memória flash.


Exemplos de Firmware:

1) - A Bios ( Basic Input/Output System ) do seu computador é um firmware.
2) - O seu aparelho de DVD tem um firmware.
3) - Seu micro ondas também tem um firmware.
4) - Seu video game também tem um, e as vezes é necessário a troca ou atualização do mesmo para poder jogar certos games, mas isto é papo pra outro post. rs ...



OpenFirmware

É uma variação de firmware criada originalmente em compatibilidade com a norma *IEEE *IEEE 1275-1994.
Sua principal característica é ser compilada em FCode, o que lhe proporciona independência de arquitetura.
Hoje no mundo Linux os desenvolvedores se beneficiaram desta tecnologia para poder criar uma engenhoca fantástica, a sacada ai foi não gravar a firmware mais em uma memoria como uma ROM etc ... E sim criar um arquivo com o conteúdo da firmware.

Bom vamos lá, sabemos que o Linux é um sistema modular correto ?
O kernel carrega os modulos sob demanda para poder conversar com o hardwarer etc ...
Então foi ai que um santo teve a seguinte ideia, ao invés de colocar o drive da minha placa wirelles todo dentro de um modulo no kernel, vou colocar só a parte de comunicação em um modulo no kernel e carregar um firmware com todas as instruções necessárias para utilizar devidamente o dispositivo wirelles, pois ai posso carrega-la na memoria e conversar com o hardware, e quando eu tiver que atualizar algo só preciso manipular a firmware pois o modulo de comunicação com o dispositivo será o mesmo no kernel.

Com esta evolução os fabricantes de hardware e periféricos, poderão facilmente criar firmware que irão funcionar independente do S.O.

Driver usando conceito OpenFirmware.

1) - Dispositivos Wirelles da Intel e Ralink
2) - Algumas placas de TV
3) - Algumas placas de Som


Obs: Quando você instala os drivers para estes dispositivos na verdade o programa de instalação esta colocando uma firmware em sua maquina e o modulo/driver para conversar com este firmware.


O Conceito de OpenFirmware é fantástico principalmente para sistemas dinâmicos e evolutivos como o Linux, que seu kernel sofre a cada semana centenas de mudanças.


Um simples exemplo de funcionamento no Linux.

O (KERNEL) carrega (MODULO) que faz o probe do hardware e chama o (FIRMWARE) que esta em /lib/firmware/my_firmware.bin que carrega e manipula minha placa wirelles.
Quando eu trocar o (KERNEL) só preciso continuar tendo o (FIRMWARE) para que minha placa funcione corretamente.

Pois o (KERNEL_NOVO) continuará a carregar o (MODULO) que continuará a fazer o probe do hardware e chama o (FIRMWARE) que esta em /lib/firmware/my_firmware.bin , que irá carregar indepente de versão de kernel, glib, gcc, etc ...

Resumo:
Esta é uma opção para a criação de drivers independente do S.O.
Dispositivos baseados em firmware são a grande sacada do momento, pois o usuário não precisará temer atualizações em seu sistema, com receio de após a atualização a placa de som não funcionar ou o drive de sua placa de video não funcionar corretamente.



Agradecimento Wikpedia Google etc ...

Links:
*http://playground.sun.com/1275/home.html

*http://www.openfirmware.info/IEEE_1275-1994
http://www.kernel.org/
http://www.firmworks.com/