mini COMO FAZER do Vesafb Alex Buell, alex.buell@tahallah.demon.co.uk v0.5, 2 de Agosto de 1998 Este documento descreve como usar o dispositivo vesafb no Linux com uma placa gráfica VESA 2.0 compatível com plataformas Intel. ______________________________________________________________________ Índice geral 1. Contribuidores 2. O que é vesafb? 3. O que é um dispositivo de armazenamento (buffer) de frames? 4. Como eu ativo os controladores vesafb? 5. Quais modos do VESA estão disponíveis para mim? 6. Existe um controlador X11 para o vesafb? 7. Eu posso construir o vesafb como um módulo? 8. Advertências ______________________________________________________________________ 11.. CCoonnttrriibbuuiiddoorreess Os agradecimentos vão para as pessoas listadas abaixo que ajudaram a aperfeiçoar o COMO FAZER sobre o vesafb. · Jeff Noxon jeff@planetfall.com · Francis Devereux f.devereux@cs.ucl.ac.uk · Andreas Ehliar ehliar@futurniture.se · Martin McCarthy marty@ehabitat.demon.co.uk · Simon Kenyon simon@koala.ie · David Ford david@kalifornia.com · Chris Black cblack@cmpteam4.unil.ch · N Becker nbecker@fred.net · Bob Tracy rct@gherkin.sa.wlk.com · Marius Hjelle marius.hjelle@roman.uib.no · Aaron Tiensivu tiensivu@pilot.msu.edu e é claro os autores do dispositivo de armazenamento de frames: · Gerd Knorr kraxel@cs.tu-berlin.de · Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be · Martin Mares mj@ucw.cz · Mais alguém, levante-se e seja incluído. :o) 22.. OO qquuee éé vveessaaffbb?? Vesafb é um controlador de armazenamento de frames para a arquitetura Intel que trabalha com a placa VESA 2.0 compatível. Ele está rigorosamente relatado para os controladores de dispositivo no kernel. O Vesafb é um controlador que habilita o uso de modos gráficos na sua plataforma Intel para consoles de texto `bit mapeados'. Ele pode também exibir um logo, que é provavelmente a razão principal de porque você querer usar o vesafb. :o) Infelizmente você usar o vesafb sem sucesso com placas VESA 1.2. Isto porque estas placas não usam armazenamento de frames. Pode ser que alguém escreverá um controlador de dispositivo vesafb12 para estas placas, mas isto usará uma memória preciosa do kernel. :o( Existe no entanto um jeito de adicionar extensões VESA 2.0 para a sua placa VESA 1.2. Você pode ser capaz de carregar um programa do tipo TSR que executará do DOS, e usado em conjunto com o loadlin, pode ajudar a configurar a placa para os modos apropriados do console gráfico. Observe que isto nem sempre funcionará; por exemplo, algumas placas Cirrus Logic tais como as séries VLB 54xx são mapeadas para um intervalo de endereços de memória (por exemplo, entre a faixa 15MB-16MB) para armazenamento de frames, que precedem os endereços que estão sendo usados com sucesso em sistemas que tem mais que 32MB de memória. Existe um modo de fazer este trabalho, isto é, se você uma opção da BIOS que deixa a memória inteira no intervalo 15MB-16MB, ela pode funcionar, mas eu não lhe falei que o Linux não suporta isto. Se você deseja experimentar esta opção, existe uma fartura de programas do estilo TSR disponíveis, e um exemplo primário é o UNIVBE, que pode ser encontrado na Internet. 33.. OO qquuee éé uumm ddiissppoossiittiivvoo ddee aarrmmaazzeennaammeennttoo ((bbuuffffeerr)) ddee ffrraammeess?? Um dispositivo de buffer de frames é uma abstração para o hardware gráfico. Ele representa o buffer de algum hardware de vídeo, e permite softwares de aplicação para acessar o hardware gráfico através de uma interface bem definida, assim o software não necessita saber de nada sobre a interface de alto nível [Pegue dos fontes do kernel do Linux de Geert Uytterhoeven o framebuffer.txt]. 44.. CCoommoo eeuu aattiivvoo ooss ccoonnttrroollaaddoorreess vveessaaffbb?? [Nota: A informação é baseada no que eu sei e tenho conseguido êxito usando o kernel v2.1.112 do Linux em P75+ com uma placa gráfica ATI VideoExpress de 2 MB. Sinta-se livre para me enviar emails com casos/informações especias para diferentes placas gráficas]. Assumindo que está usando o menuconfig, você precisará fazer as seguintes etapas: Vá no menu Code Maturity Level (Nível de Maturidade do Código), e habilite o prompt para o desenvolvimento e/ou para controladores incompletos [note que isto pode mudar para kernels futuros - quando isto acontecer, este HOWTO será revisado]. Vá para o menu Console Drivers (Controladores de Console), e habilite o seguinte: · VGA Text Console · Video Selection Support · Support for frame buffer devices (experimental) · VESA VGA Graphic console · Advanced Low Level Drivers · Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp and 32bpp packed · pixel drivers · VGA character/attributes support VGA Chipset Support (Suporte ao Chipset VGA - somente texto) - vgafb - é usado para ser parte da lista acima, mas ele foi removido pois é desaprovado agora e não será mais suportado por um longo tempo; ele será removido logo. Use o Console de Texto VGA ao invés disso. Assegure-se de que o suporte a variável Mac bpp compactada não está habilitada [como o do 2.1.111, isto parece ficar ativado se a opção Advanced Low Level Divers (Controladores Avançados de Alto Nível) está inicialmente selecionada]. Certifique-se de que estes não irão ser módulos. [Não tenho certeza se é possível construí-los como módulos ainda - por favor, corrija-me se necessário]. Então reconstrua o kernel, modifique o /etc/lilo.conf para incluir o parâmetro VGA=ASK, e execute o lilo; isto é necessário em ordem para você ser capaz de selecionar os mods que deseja usar. Reinicialize o kernel, e como um teste simples, tente entrar com 0301 no prompt VGA (isto fornecerá a você 640x480 @ 256), e você deve ser capaz de ver um pequeno logo do Pinguim. Uma vez que você pode ver que está funcionando bem, você pode explorar os vários modos VESA (veja acima) e decida entre um deles que você acha o melhor, e colo que em definitivo o parâmetro "VGA=x" no lilo.conf. Quando você escolheu o que você mais gosta, procure o decimal equivalente das tabelas acima e use o número decimal correspondente (isto é, para 1280x1024@ 256, você usa somente "VGA=775"), e re-execute o lilo. Para referências adicionais, leia os COMO FAZER sobre LoadLin/LILO. 55.. QQuuaaiiss mmooddooss ddoo VVEESSAA eessttããoo ddiissppoonníívveeiiss ppaarraa mmiimm?? Isto realmente depende do tipo de placa gráfica VESA 2.0 compatível que você tem em seu sistema, e da quantidade de memória de vídeo disponível; é só questão de testar quais modos funcionam melhor para a sua placa gráfica. A tabela a seguir mostra o números dos modos que você pode colocar no prompt do VGA (atualmente estes números são somados a 0x200 para fazê-los mais fáceis de fazer referência a tabela): Colours 640x480 800x600 1024x768 1280x1024 1600x1200 --------+--------------------------------------------- 256 | 0301 0303 0305 0307 031C 32,768 | 0310 0313 0316 0319 031D 65,536 | 0311 0314 0317 031A 031E 16.8M | 0312 0315 0318 031B 031F Por conveniência, aqui está a mesma tabela em termos decimais: Colours 640x480 800x600 1024x768 1280x1024 1600x1200 --------+--------------------------------------------- 256 | 769 771 773 775 796 32,768 | 784 787 790 793 797 65,536 | 785 788 791 794 798 16.8M | 786 789 792 795 799 [O autor não seria feliz se pudesse completá-la com números 03xx adicionais em modos adicionais, isto é, 1152x900?] 66.. EExxiissttee uumm ccoonnttrroollaaddoorr XX1111 ppaarraa oo vveessaaffbb?? Sim, atualmente existe. Você precisará usar o controlador XF86_FBdev se por alguma razão o seu controlador X11 atual não gosta do vesafb. Vá até http://www.xfree86.org, e carregue o arquivo X332servonly.tgz, descompacte-o, configure-o editando o xc/config/cf/xf86site.def, e tire o comentário da linha #define for XF68FBDevServer. Não se preocupe com a referência m68k, ela suporta plataformas Intel. Então, construa a coisa toda - ela levará um tempo longo, devido ao enorme fonte. Existe contudo, o binário XF86_FBdev sem pré-compilação disponível, mas eu acho que o Debian pode trabalho nisto; eles serão capazes de produzir ambas as variações libc5/glibc2. Existem relatos de que o X11 não é funcional em certas placas gráficas com o vesafb habilitado; se isto está acontecendo, tente o novo controlador XF86_FBdev para X11. Este controlador, juntamente com o vesafb pode ajudar a executar o X11 em uma resolução gráfica mais alta com certos chipsets gráficos que não são suportados por controladores X11 atuais. Exemplo: MGA G-200. Esperançosamente os problemas do X11 com placas gráficas serão consertados em distribuições futuras. 77.. EEuu ppoossssoo ccoonnssttrruuiirr oo vveessaaffbb ccoommoo uumm mmóódduulloo?? Como o do v2.1.112, o vesafb não pode ser modularizado, embora em algum ponto, o desenvolvedor do vesafb possa decidir modificar os fontes pela modularização. Observe que mesmo se isto for possível, na hora da inicialização você não será capaz de ver saída na tela até que o vesafb esteja 'modprobed'. Provavelmente é um pouco mais compreensivo deixá-lo no kernel, para estes caso onde existem problemas de inicialização. 88.. AAddvveerrttêênncciiaass Esta é a versão atual v2.1.112 do kernel do Linux. Este COMO FAZER será constantemente atualizado de acordo com os progressos do desenvolvimento do kernel. Sinta-se à vontade em mandar email ao autor com informações/reclamações. :o)