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/

5 comentários:

Rodrigo Cavalcante disse...

Muito bom o Software Fabio, atualmente o hardware opensource Arduino ja começa a utilizar este conceito também...
À espera de mais posts,, acredito que este irá ajudar muita gente também :D

Nomade disse...
Este comentário foi removido pelo autor.
Nomade disse...
Este comentário foi removido pelo autor.
Nomade disse...

Fábio, meu amigo, quero parabenizá-lo pelo exelente trabalho, pois em minha opinião o Satux é a melhor Distro Linux brasileira. Gostaria de aproveitar para pedir, encarecidamente, que poste aqui no blog ou no forum da comunidade, o procedimento para montar o grub do Satux em dual boot.
Um grande abraço!

Daniel disse...

Fabio, sempre ando pelo seu blog e veja... desde que tenho começado a trabalhar com linux (cerca de 1 ano) adorei o conceito e tudo que existe no mundo pinguim, e a maioria das minhas dúvidas ou problemas acabam sendo resolvidos ou por algun software seu ou pacote de drivers. Portanto Parabéns!!! Entretanto, existe um pacote que vc desenhou que baixei fito de que conseguiria utilizá-lo, ja que tudo daqui funciona, mas não deu. Tenho 2 NOts um CCE Nativo Satux e um igualzinho com Ubuntu. O pacote funcionou perfeitamente no Satux (Claro! ;) mas nao no Ubuntu Apesar de ser .deb Falo do xserver-xorg-video-sis671.deb Poderia me dar uma dica de como resolver este problema? Tenho pesquisado e vários users do CCE que querem ou preferem UBUNTU estao sofrendo com a falta de driver para vídeo, se puder nos ajudar... Agradeceremos. Chipset: SIS M672 Gráfico: Mirage 3+graphic