Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Capítulo 27 Eliminando conflitos de hardware Exemplos de conflitos Os conflitos de hardware são resultantes de instalações indevidas, nas quais temos dois ou mais dispositivos utilizando o mesmo recurso de hardware. Esses recursos são endereços de memória, endereços de E/S, linhas de IRQ e canais de DMA. Neste capítulo veremos como surgem os conflitos, como evitá-los e eliminá-los. Muitos problemas que ocorrem nos PCs são conseqüência de instalações er- radas. Nem sempre uma instalação consiste em apenas conectar uma placa e deixar o Windows fazer o resto sozinho. Na verdade o Windows faz quase tudo sozinho, mas em muitos casos precisamos dar uma ajudazinha, visando evitar a ocorrência de conflitos de hardware. Veremos neste capítulo como fazer instalações de dispositivos PnP (Plug-and-Play) e de legado (os que não são Plug-and-Play) sem que ocorram conflitos de hardware. Alguns exemplos de problemas resultantes de conflitos de hardware são apresentados a seguir: Exemplo 1: "Meu PC funcionava bem até que fiz a instalação de uma placa fax/modem. A placa não funcionou, e o que é pior, o mouse deixou de funcionar. Só quando retirei a placa fax/modem o mouse voltou a funcionar." Exemplo 2: 27-2 Hardware Total "Instalei uma placa de som que funcionou, mas a impressora começou a apresentar problemas, imprimindo figuras pela metade e perdendo parte do texto impresso." Exemplo 3: "Troquei a placa de vídeo do meu PC e a placa fax/modem deixou de fun- cionar." Exemplo 4: "Depois que instalei a placa de rede, a placa de som começou a apresentar problemas no Windows, apesar de funcionar bem no modo MS-DOS." Exemplo 5: "Depois que instalei um scanner, meu PC ficou maluco. Toda hora trava...” Tais problemas ocorrem porque uma nova placa instalada entrou em conflito com as demais. Existem quatro tipos diferentes de conflitos de hardware: Conflito de endereços de memória Conflito de endereços de E/S Conflito de interrupções Conflito de DMA Ao instalarmos dispositivos PnP (Plug and Play), esses recursos são automaticamente escolhidos de forma a evitar conflitos. O problema é que ainda existem muitos dispositivos não PnP. Basta que apenas um dispositivo não seja PnP para que o processo de instalação automática de dispositivos PnP fique comprometido. Não é sensato se desfazer de uma placa de som, ou uma placa de rede, ou um scanner, só porque foram comprados antes de 1995, e portanto não possuem o recurso PnP. Para a maioria das funções de áudio, uma placa de som do início dos anos 90 é tão boa quanto uma mo- derna (exceto pelos recursos avançados das atuais placas). Uma placa de rede de 10 Mbits antiga é não é tão boa quanto uma moderna, de 100 Mbits/s, mas para aplicaçõe simples, seu uso é satisfatório. Um scanner antigo pode não ser tão bom quanto um moderno, mas ainda é bastante útil. Não é apenas na instalação de dispositivos não PnP que devemos nos preocupar em evitar conflitos. Muitas vezes, mesmo quando todos os dispositivos de um PC são PnP, precisamos fazer alguns remanejamentos de recursos visando desfazer conflitos. Capítulo 27 – Eliminando conflitos de hardware 27-3 Identificando recursos livres e ocupados A forma mais simples de identificar recursos de hardware livres e ocupados é usando o Gerenciador de Dispositivos. Para chegar a ele clicamos o ícone Meu Computador com o botão direito do mouse e no menu apresentado selecionamos a opção Propriedades. No quadro apresentado, selecionamos a guia Gerenciador de Dispositivos (figura 1). Figura 27.1 O Gerenciador de Dispositivos. O Gerenciador de Dispositivos nos dá diversas informações sobre os dispositivos instalados em um PC, inclusive os recursos de hardware que estão sendo utilizados. Na figura 1, deixando selecionado o item Computador, e clicando sobre o botão Propriedades, teremos o quadro mostrado na figura 2, no qual vemos quais são os recursos em uso. A lista da figura mostra as interrupções em uso, mas podemos marcar os demais recursos de hardware: Entrada/Saída, DMA e Memória. 27-4 Hardware Total Figura 27.2 Interrupções em uso. Para evitar conflitos de hardware, é preciso que a seguinte condição seja satisfeita: Dois dispositivos não podem utilizar o mesmo recurso Em outras palavras, não podemos ter duas placas utilizando a mesma interrupção, nem o mesmo canal de DMA, nem os mesmos endereços de memória, nem os mesmos endereços de E/S. Existe uma exceção para esta regra. Em certas condições especiais, é permitido que dois ou mais dispositi- vos compartilhem a mesma interrupção. É o caso do uso de interrupções de dispositivos conectados ao barramento PCI, que suporta o compartilhamento de IRQs. Evitando conflitos de memória Este conflito ocorre quando duas memórias ocupam os mesmos endereços, normalmente ROMs de placas de expansão. A faixa de endereços usados pelas ROMs é a região compreendida entre 768 kB e 1024 kB, o que corresponde aos valores C0000 a FFFFF, em hexadecimal. Placas que possuem ROMs, quando seguem o padrão PnP, têm seus endereços de memória configurados de forma automática, sem intervenção do usuário. O problema está nas placas de legado que usam memórias, onde o usuário deve escolher endereços adequados na instalação. A figura 3 mostra a lista de endereços de memória em uso, apresentada pelo Gerenciador de Dispositivos. Capítulo 27 – Eliminando conflitos de hardware 27-5 Figura 27.3 Endereços de memória ocupados. Exemplo: placa controladora SCSI Vejamos um exemplo real, que é a configuração da placa controladora SCSI ADAPTEC, modelo AHA-2840A. Trata-se de uma placa de legado, e por isto o usuário precisa configurá-la através de jumpers. Esta placa possui uma ROM com 32 kB, cujo endereço é configurado de acordo as instruções do seu manual, mostradas a seguir. Neste exemplo, dois jumpers, indicados na placa como SW6 e SW5 são usados para o selecionamento do endereço desta ROM. Table 2-5. Host Adapter BIOS Base Address Switch Settings BIOS BASE ADDRESS SW6 SW5 D8000h (Default) OFF OFF C8000h ON OFF D0000h OFF ON E0000h (*) ON ON OFF = OPEN ON = CLOSED (*) Some systems do not support BIOS address E0000h Observe que os endereços hexadecimais possuem cinco dígitos (Ex: D8000). Ao invés de usar 5 dígitos, é muito comum a representação com 4 dígitos (Ex: D800). A letra "h" colocada após cada endereço, é opcional, e serve para indicar que o número está em hexadecimal. Às vezes usam-se quatro dígitos e às vezes cinco. A razão é que os endereços de memória podem ser expressos de duas formas: 27-6 Hardware Total Endereço absoluto: Usa cinco dígitos, como por exemplo, D8000 Segmento: Usa apenas quatro dígitos, como por exemplo D800 Para saber o endereço de um segmento, basta acrescentar um ZERO no seu final. Por exemplo, o segmento D800 corresponde ao endereço D8000. Na lista de endereços apresentada na figura 3, são utilizados 8 dígitos. Por outro lado, muitos manuais mostram seus endereços usando 4 ou 5, e às vezes até 8 dígitos. Por exemplo, o endereço D8000 poderia ser representado de 3 formas: Endereço de 8 dígitos: 000D8000 Endereço absoluto de 5 dígitos: D8000 Segmento hexadecimal: D800 A tabela do nosso exemplo usa o termo BIOS base address. É o endereço da memória a partir do qual o BIOS da interface SCSI está localizado. O BIOS da placa de vídeo fica localizado no endereço base C0000, enquanto o BIOS da placa de CPU normalmente está localizado a partir do endereço E0000, E8000 ou do F0000, dependendo da placa. Podemos ainda ver na tabela que o fabricante apresenta o endereço base default como D8000. As chaves SW5 e SW6 devem ser colocadas nas posições ON ou OFF para a escolha do endereço desejado. Para escolher o endereço base, devemos visualizar o mapa de memória do PC, antes da instalação da nova placa. Para isto podemos usar o Gerenciador de Dispositi- vos, como mostra a figura 3. Na lista apresentada, podemos verificar quais são as faixas de endereços já ocupadas, e quais estão livres: 00000-9FFFF: Ocupada A0000-AFFFF: Ocupada B0000-BFFFF: Ocupada C0000-C7FFF: Ocupada C8000-DFFFF: Livre E0000-E7FFF: Não disponível E8000-FFFFF: Ocupada Para decidir qual das faixas de endereços utilizar, é preciso determinar o início e o final de cada uma delas. Devemos levar em conta o seguinte: Endereço base Tamanho Capítulo 27 – Eliminando conflitos de hardware 27-7 A placa ADAPTEC AHA-2840 do nosso exemplo, possui 32 kB na sua ROM. Sabendo o endereço base e o seu tamanho, podemos determinar o endereço final. Sabendo o endereço base (inicial) e o final, automaticamente temos a faixa de endereços ocupada pela ROM. Para isto, precisamos converter os números em kB para o formato hexadecimal. A tabela que se segue será útil nesta conversão. Valor em kB Valor Hex Segmento hex Valor em kB Valor hex Segmento hex 4 kB 1000 0100 36 kB 9000 0900 8 kB 2000 0200 40 kB A000 0A00 12 kB 3000 0300 44 kB B000 0B00 16 kB 4000 0400 48 kB C000 0C00 20 kB 5000 0500 52 kB D000 0D00 24 kB 6000 0600 56 kB E000 0E00 28 kB 7000 0700 60 kB F000 0F00 32 kB 8000 0800 64 kB 10000 1000 A fórmula para calcular o endereço final é muito simples: Endereço final = Endereço inicial + tamanho - 1 Suponha que a ROM da nossa placa seja configurada para que seu endereço base (inicial) seja D0000. Sendo o seu tamanho igual a 32 kB, que de acordo com a tabela acima equivale a 8000 em hexadecimal, seu endereço final é calculado como: Endereço final = D0000 + 8000 - 1 = D8000 - 1 = D7FFF Somando o endereço inicial (D0000) e o tamanho da ROM (8000), temos D8000. Subtraindo 1 deste resultado, temos D7FFF (se fossem números decimais, subtrair 1 resultaria em um final 999, mas em hexadecimal, este valor final é FFF). Levando em conta esses cálculos, as faixas de endereços que a ROM ocuparia seriam: Endereço base Faixa de Endereços D8000 D8000-DFFFF C8000 C8000-CFFFF D0000 D0000-D7FFF E0000 E0000-E7FFF De acordo com o Gerenciador de Dispositivos (figura 3), a faixa de endereços disponível na área reservada para ROMs (C0000 a FFFFF) é C8000-DFFFF. Confrontando esta faixa com as 4 opções oferecidas pela placa do nosso exemplo, temos: 27-8 Hardware Total D8000: Permitida C8000: Permitida D0000: Permitida E0000: Não permitida Portanto, a nossa placa controladora SCSI funcionaria se fosse configurada com qualquer uma das três primeiras opções de endereços, e certamente não funcionaria se fosse configurada na quarta opção, pois ocorreria um conflito de hardware. Microsoft Diagnostics O mapa de memória apresentado pelo Gerenciador de Dispositivos é suficiente para ajudar neste tipo de instalação, mas não podemos usá-lo quando o conflito impede o funcionamento do Windows. Neste caso podemos usar o programa MSD (Microsoft Diagnostics). No CD de instalação do Windows 98/ME, este software é encontrado no diretório \TOOLS\OLDMSDOS. Outros programas de diagnóstico mais completos, como o PC-Check também permitem visualizar o mapa de memória. Para utilizar o MSD, é preciso executar um boot limpo (Prompt do Modo de Segurança). Se esta opção não for satisfeita, o mapa de memória apresentado não mostrará as áreas que estão realmente livres, pois estarão sendo ocupadas pelos gerenciadores de memória. Na tela principal do MSD, teclamos “M”, para chegar ao mapa de memória (figura 4) Figura 27.4 Mapa de memória apresentado pelo MSD. O mapa de memória apresentado pelo MSD mostra a utilização da região compreendida entre os endereços 640 kB (segmento A000, em hexadecimal) e 1024 kB (FFFF, em hexadecimal). As áreas em cinza no mapa de memória do MSD correspondem a memória ROM. As ROMs mostradas na figura 4 são o BIOS VGA (segmentos C000-C7FF) e o BIOS da placa de CPU, na Capítulo 27 – Eliminando conflitos de hardware 27-9 parte superior do mapa. Áreas pontilhadas são indicadas como “possivel- mente livres”, mas o MSD não nos dá a total certeza de que realmente estejam livres (na figura, entre E000 e EFFF). Finalmente, áreas totalmente pretas são garantidamente livres (na figura, entre C800 e DFFF). Evitando conflitos de E/S Os conflitos de endereços de E/S são muito comuns, já que todas as placas de expansão necessitam deste recurso de hardware. Se o usuário não escolher esses endereços corretamente, ocorrerão conflitos de hardware, e as placas envolvidas não funcionarão. Todos os comandos que o processador envia para os circuitos do computador são acompanhados de um endereço de E/S. Cada dispositivo de hardware, cada interface, ocupa uma determinada faixa de endereços. Cabe aos softwares que chamamos de dri- vers, fazer o acesso ao hardware, através desses endereços. O mapa de E/S padrão Uma das formas de saber quais são os endereços de E/S livres é tomando como base o mapa de E/S padrão definido pela IBM. Este mapa nada mais é que uma tabela que mostra como a IBM utilizou os diversos endereços para suas diversas interfaces. A tabela a seguir ajuda um pouco, mas não é sufici- ente para saber se uma determinada faixa de endereços está ou não livre. Além disso, um determinado PC pode possuir interfaces que não estejam descritas nesta tabela padrão da IBM. De qualquer forma, é útil ter esta tabela como referência. 27-10 Hardware Total Endereços Interface que os utiliza 000-01F Controlador de DMA (placa de CPU) 020-03F Controlador de interrupções (placa de CPU) 040-05F Timer (placa de CPU) 060-06F Controlador de teclado do AT 070-07F Chip CMOS 080-09F Registro de página de DMA (placa de CPU) 0A0-0BF Segundo controlador de interrupções (CPU) 0C0-0DF Segundo controlador de DMA (placa de CPU) 0F0-0F1 CLEAR e RESET do coprocessador 170-177 Controladora IDE secundária 1F0-1F7 Controladora IDE primária 200-207 Interface de joystick 278-27F Porta paralela 2E8-2EF Porta serial COM4 2F8-2FF Porta serial COM2 370-377 Interface de drives secundária 378-37F Porta paralela 3B0-3BF Placa de vídeo MDA e HÉRCULES 3C0-3CF Placa VGA 3D0-3DF Placas CGA e VGA 3E8-3EF Porta serial COM3 3F0-3F7 Interface de drives primária 3F8-3FF Porta serial COM1 Existem métodos mais seguros para determinar se uma faixa de endereços está livre ou ocupada, mas mesmo assim a tabela acima pode ser útil, pelo menos para eliminar opções que com certeza não podem ser usadas. Ve- jamos um exemplo: Exemplo: placa controladora de scanner Digamos que uma placa controladora de scanner possa ocupar uma das seguintes faixas de endereços: 200 a 207 210 a 217 220 a 227 230 a 237 De acordo com a tabela de endereços da IBM, a faixa de endereços de 200 a 207 é usada pela interface de joystick. Como a maioria dos PCs possuem esta interface, não devemos deixar que outras placas utilizem esta faixa de endereços. De acordo com a tabela, apenas as três últimas opções poderiam ser utilizadas. Cabe aqui usar mais informações, pois obedecer a tabela não é suficiente para evitar os conflitos de hardware. O PC pode possuir outras interfaces não previstas na configuração básica do IBM PC original. É o que ocorre quando o PC possui uma placa de som. Normalmente, os modelos Capítulo 27 – Eliminando conflitos de hardware 27-11 compatíveis com a Sound Blaster ocupam a faixa de 220 a 233, o que inva- lida o uso das opções 220-227 e 230-237. Nossa controladora de scanner só poderia usar, portanto, a faixa 210-217. Usando o Gerenciador de Dispositivos O Gerenciador de Dispositivos do Windows apresenta uma lista com as faixas de endereços que estão em uso, bem como uma descrição das interfaces que as contém. A partir do quadro da figura 2, marcamos a opção Entrada/Saída (E/S), e teremos o quadro mostrado na figura 5. A lista apresenta as faixas de endereços que estão ocupadas, bem como as interfaces que as contém. As faixas que não constam da lista estão, a princípio, livres. Figura 27.5 Encontrando endereços livres e ocupados. Teríamos então: 200-207 Joystick para porta de jogos 208-21F Livre 220-22F Creative Labs Sound Blaster 16 PnP 230-26F Livre 270-273 Porta de dados de leitura de E/S para o enumerador ISA PnP 274-2F7 Livre 2F8-2FF COM2 300-32F Livre 330-331 Creative Labs Sound Blaster 16 PnP 332-33F Livre 340-35F NE2000 Compatível 360-36D Livre 36E-36F Creative SB32 PnP Encontrando endereços livres desta forma, temos a primeira pista para a escolha de endereços de novas placas a serem instaladas. 27-12 Hardware Total Usando o programa IOVIEW O IOVIEW é um utilitário ideal para fazer o levantamento do mapa de E/S. Pode ser encontrado em http://www.laercio.com.br. Deve ser usado exclusivamente em modo MS-DOS, e nunca sob o Windows. Usamos as setas do teclado (para cima e para baixo) para percorrer a lista de endereços (figura 6). Figura 27.6 Mapa de E/S entre 200-2FF, obtido com o IOVIEW. No IOVIEW, valores “FF” indicam que os endereços correspondentes estão provavelmente livres. Valores diferentes de “FF” indicam que os endereços estão certamente ocupados. Na figura 6, temos logo no início, uma seqüência de valores “F0”, correspondendo aos endereços 200, 201, 202, 203, 204, 205, 206 e 207. Mais adiante, encontramos bytes ocupados em 220, 221, 222, 223, 228, 229, 22A, 22C e 22E. Depois de uma grande faixa provavelmente livre, temos uma faixa ocupada nos endereços 2F8 a 2FF. Note que as faixas de endereços ocupados apresentados pelo programa IOVIEW dizem respeito apenas aos circuitos que estão ativos no modo MS- DOS, que é o caso dos dispositivos de legado. Dispositivos Plug and Play não serão mostrados, a menos que o IOVIEW seja executado no ambiente Windows. Para fazer isto é preciso encerrar todos os programas e executar o IOVIEW, de preferência em tela cheia, em uma sessão do MS-DOS sob o Windows (Iniciar / Programas / MS-DOS). Dispositivos Plug and Play poderão então ser mostrados pelo IOVIEW. A grande vantagem em utilizar o IOVIEW é que ele consegue “enxergar” endereços usados por dispositivos de legado que o Gerenciador de Dispositivos do Windows não mostra como ocupados. Conflitos de IRQ Capítulo 27 – Eliminando conflitos de hardware 27-13 A resolução dos conflitos de IRQ é relativamente fácil. No caso de dispositivos Plug and Play, basta fazer a alteração na guia Recursos do quadro de propriedades de cada dispositivos envolvido no conflito, e reiniciar o computador. No caso de dispositivos não Plug and Play, além de fazer a alteração neste quadro, temos que alterar os jumpers da placa de legado envolvida, programando-a de forma idêntica à do Gerenciador de Dispositivos. Não esqueça de declarar na seção PCI/PnP Configuration do CMOS Setup quais são as IRQs e canais de DMA que estão sendo usados pelas placas de legado. Para corrigir o conflito devemos inicialmente desmarcar a opção Usar configurações automáticas. A seguir clicamos sobre o recurso que desejamos alterar e usamos o botão Alterar Configuração. Se for apresentada uma mensagem indicando que o recurso não pode ser alterado, selecione outra configuração básica (veja o campo Config baseada em Configuração básica 0000) e tente novamente. Será finalmente apresentado um quadro no qual você pode escolher outro recurso (outra IRQ, outro canal de DMA, etc.), desfazendo assim o conflito. Exemplo: Instalando uma placa de rede de legado As placas de rede mais usadas são as compatíveis com a NE2000, lançada pela Novell e produzida hoje por dezenas de fabricantes. Os modelos existentes à venda são PCI, mas é possível ainda encontrar alguns modelos ISA. Todas as placas de rede modernas operam em modo PnP, mas é possível que você precise instalar um modelo um pouco mais antigo, operando em modo de legado. Normalmente placas como esta possuem jumpers para selecionamento de: Endereço de E/S IRQ Endereço de memória O endereço de memória só precisa ser configurado quando a placa possui uma ROM com boot remoto, ou RAM com buffer de transmissão/recepção. Quando não existe esta ROM ou RAM, deveremos desabilitá-la, usando instruções do seu manual. A placa usada no nosso exemplo possui jumpers para essas finalidades: JP1 1-4 (I/O Base) JP1 5-7 (IRQ) 1 2 3 4 I/O 1 2 3 4 I/O 5 6 7 IRQ 0 0 0 0 300H 0 1 0 0 200H 0 0 0 2 (9) 0 0 0 1 320H 0 1 0 1 220H 0 0 1 3 0 0 1 0 340H 0 1 1 0 240H 0 1 0 4 27-14 Hardware Total 0 0 1 1 360H 0 1 1 1 260H 0 1 1 5 1 0 0 0 380H 1 1 0 0 280H 1 0 0 10 1 0 0 1 3A0H 1 1 0 1 2A0H 1 0 1 11 1 0 1 0 3C0H 1 1 1 0 2C0H 1 1 0 12 1 0 1 1 3E0H 1 1 1 1 2E0H 1 1 1 15 Temos um bloco de jumpers chamado JP1. Cada um desses jumpers é numerado de 1 a 7. Os 4 primeiros servem para definir o endereço de E/S a ser ocupado pela placa, e os três jumpers seguintes definem a interrupção a ser usada. Digamos que já tenhamos feito as devidas consultas ao Gerenciador de Dispositivos para determinar endereços e IRQs livres, e tenhamos optado por usar o seguinte: Endereço de E/S: 300H Interrupção: 10 Programamos os jumpers de acordo com as tabelas, conectamos a placa em um slot livre e ligamos o PC. Como não se trata de uma placa PnP, não será reconhecida de forma automática. Será preciso fazer a instalação com o comando Adicionar Novo Hardware, no Painel de Controle. Entrará em ação o Assistente para Adicionar Novo Hardware. O Assistente pergunta se queremos que o novo hardware seja detectado automaticamente, ou se desejamos especificar manualmente a sua marca e modelo. A princípio, devemos deixar o Assistente detectar o novo hardware, a menos que o manual do fabricante sugira o contrário, porém esta detecção nem sempre funciona. No nosso exemplo vamos optar pela opção Não, e selecionar o hardware a partir de uma lista. Será então apresentada uma lista de tipos de hardware, na qual selecionamos a opção Adaptadores de rede. Será finalmente apresentada uma lista de marcas e modelos, como vemos na figura 11.17. Na lista de fabricantes marcamos Novell/Anthem, e na lista de modelos marcamos Compatível com NE2000. Note que algumas placas são acompanhadas de disquetes de instalação, e neste caso devemos clicar sobre o botão Com disco para acessar esses drivers. Capítulo 27 – Eliminando conflitos de hardware 27-15 Figura 27.7 Selecionando a marca e o modelo da placa. Como não se trata de um dispositivo PnP, o assistente para adicionar hardware irá designar recursos que tenham sido encontrados como livres. Podemos assim programar os jumpers da placa com esses recursos. Alternativamente, podemos deixar os jumpers da placa programados com os recursos originalmente escolhidos, e desde que estejam realmente livres, alterar as configurações na guia de Recursos do quadro de propriedades de placa, obtido pelo Gerenciador de dispositivos, programando o endereço de E/S e a IRQ escolhidos. Figura 27.8 Visualizando os recursos de hardware utilizados por uma placa. 27-16 Hardware Total Depois de realizado o novo boot, podemos abrir o Gerenciador de Dispositivos, e lá veremos registrada a placa recém-instalada, que no nosso caso é indicada como NE2000 Compatível. Alterações no CMOS Setup Quando instalamos dispositivos de legado que utilizam IRQs e canais de DMA, temos ainda que fazer uma pequena alteração no CMOS Setup. Lá encontraremos uma seção chamada PCI/PnP Configuration. Existirão vários itens relacionados com o uso de cada uma das linhas de IRQ e cada um dos canais de DMA. Para cada um deles, encontraremos duas opções: PnP: Normalmente indicados como PCI/PnP Legado: Normalmente indicados como ISA/Legacy Cada IRQ ou canal de DMA utilizado por um dispositivo de legado deve ser indicado como ISA/Legacy no CMOS Setup. Isto evitará que o Windows utilize esses recursos para outros dispositivos PnP. Evitando conflitos de DMA O funcionamento da transferência de dados por DMA está explicado no capítulo 4. No que diz respeito à resolução de conflitos, temos que garantir que não existam dois dispositivos usando o mesmo canal de DMA. Podemos visualizar os canais de DMA que estão em uso através do Gerenciador de Dispositivos, como mostra a figura 9. Neste exemplo, além dos canais DMA2 e DMA4, que estão sempre ocupados em qualquer PC, temos ainda os canais DMA1 e DMA5 sendo utilizados pela placa de som, e o canal DMA3 usado pela porta paralela ECP. Capítulo 27 – Eliminando conflitos de hardware 27-17 Figura 27.9 Visualizando o uso dos canais de DMA com a ajuda do Gerenciador de Dispositivos. Quando o Windows é instalado em um PC com configuração básica, apenas estarão em uso os canais 2 e 4. Os canais 0, 1, 3, 5, 6 e 7 estarão disponíveis para serem usadas por placas de expansão. À medida em que novas placas são instaladas, os canais livres vão sendo ocupados. Quando instalamos placas PnP, os canais de DMA necessários são atribuídos automaticamente. No caso de placas de legado, cabe ao usuário descobrir quais são os canais de DMA livres, bem como atribuir canais às placas que estão sendo instaladas. Um caso importante é a interface paralela operando no modo ECP. A escolha do canal de DMA é feita pelo CMOS Setup, e e alguns casos é feita através de um jumper da placa de CPU. Exemplo: Placa Sound Blaster 16 de legado As placas Sound Blaster 16 e todas as suas sucessoras utilizam dois canais de DMA, sendo um para operações de 8 bits, e outro para operações de 16 bits: DMA LOW: Pode ser escolhido entre DMA0, DMA1 e DMA3 DMA HIGH: Pode ser escolhido entre DMA5, DMA6 e DMA7 A escolha é feita pelos jumpers da placa, levando em conta os canais que estão livres. Reservando recursos Existem certos tipos de instalação em que temos que usar o comando Reservar Recursos no Gerenciador de Dispositivos. São casos em que o Windows não consegue reconhecer a placa que está sendo instalada, nem no 27-18 Hardware Total modo PnP e nem no modo de legado, e por isso não sabe das suas necessidades em termos de endereços de E/S, DMA, memória e IRQ. Tipicamente isto ocorre com dispositivos antigos, nos quais temos que utilizar drivers também antigos, próprios para o Windows 3.x. Recursos de hardware controlados por drivers que não são próprios para o Windows 9x não são indicados no Gerenciador de dispositivos. Temos que indicar esses recursos como ISA/Legacy no CMOS Setup, e também reservá-los no Gerenciador de dispositivos. Apenas depois que esses recursos estão reservados podemos instalar os drivers para Windows 3.x. Você precisará fazer isto, por exemplo, para instalar um scanner antigo, ou qualquer outro tipo de hardware anterior a 1995 e que não tenha drivers nativos no Windows 9x. Vamos ilustrar a reserva de recursos usando como exemplo a placa de interface que acompanha o scanner Genius ScanMate Color. Trata-se de um scanner manual, capaz de operar com 16 milhões de cores, e muito vendido por volta de 1995. De acordo com o manual deste scanner, a placa de interface que o acompanha necessita dos seguintes recursos de hardware: Recurso Opções Endereço de E/S 280-283, 2A0-2A3, 330-333 ou 340-343 Interrupção IRQ5, IRQ10, IRQ11 ou IRQ12 Canal de DMA DMA1, DMA3, DMA5 ou DMA6 Uma vez identificadas as opções suportadas pela placa, devemos verificar, com a ajuda do Gerenciador de Dispositivos, quais delas podem ser usadas, ou seja, não estão em uso. Consultando os relatórios sobre uso de endereços de E/S, interrupções e canais de DMA apresentados pelo Gerenciador de Dispositivos, digamos que resolvemos usar para a nossa placa de interface de scanner, a seguinte configuração: Endereços de E/S: 2A0-2A3 Interrupção: IRQ11 Canal de DMA: DMA6 No Gerenciador de Dispositivos, clicamos em Computador, depois no botão Propriedades, e selecionamos a guia Reservar Recursos (figura 10). Capítulo 27 – Eliminando conflitos de hardware 27-19 Figura 27.10 Quadro para reservar recursos. Para reservar um recurso, devemos antes indicar o seu tipo. No quadro da figura 10, está sendo indicado o tipo Pedido de interrupção (IRQ). Clicamos então sobre o botão Adicionar. É apresentado um quadro onde especifica- mos a interrupção a ser reservada. O procedimento é semelhante para os endereços de E/S e para o canal de DMA. Nos casos dos endereços de E/S e endereços de memória, é preciso especificar uma faixa, ou seja, um endereço inicial e um endereço final. Figura 27.11 A IRQ11 já está reservada Terminada a reserva, é preciso reinicializar o computador para que as mudanças tenham efeito. Observe que neste momento ainda não instalamos a placa no computador, apenas reservamos os seus recursos. Depois do boot, podemos usar novamente o Gerenciador de Dispositivos para confirmar a reserva dos recursos. Veja por exemplo na figura 11, a IRQ11 reservada. 27-20 Hardware Total Endereços de E/S acima de 3FF Um certo cuidado adicional deve ser tomado com o uso de endereços de E/S usados por placas modernas. Até poucos anos atrás, tanto as placas de CPU quanto as placas de expansão utilizavam apenas a faixa de endereços de E/S entre 000 a 3FF, sendo que o endereço 400 é uma repetição do endereço 000, o endereço 500 é uma repetição do endereço 100, o endereço 600 é uma repetição do endereço 200, e assim por diante. Esta repetição ocorre devido a uma técnica usada em hardware para economizar circuitos, chamada decodificação incompleta. No PC esta técnica foi empregada pois a IBM estipulou o uso apenas da faixa de 000 e 3FF. Para distinguir um endereço nesta faixa basta usar um decodificador de endereços de 10 bits ao invés de 16. A diferença entre, por exemplo, 170 e 570 (hexadecimal) está no 11º bit. Uma interface de disco rígido usando um decodificador de 10 bits para reconhecer a sua faixa de endereços (170 a 177) responderá indevida- mente a comandos direcionados para endereços 570-577, 970-977, etc. Se configurarmos uma nova placa para utilizar a faixa 550-57F, certamente ocorrerá um conflito de endereços de E/S, a menos que o decodificador de endereços utilize pelo menos 11 bits, ao invés de 10. Diversas placas de interface modernas utilizam decodificadores completos, usando 16 bits ao invés de 10, com o objetivo de evitar este tipo de conflito. Problemas deste tipo podem ocorrer quando são instaladas placas de expansão antigas (produzidas até aproximadamente 1995) em um PC moderno. Figura 27.12 Mapa de E/S entre 300 e 3FF. Capítulo 27 – Eliminando conflitos de hardware 27-21 Figura 27.13 Mapa de E/S entre 700 e 7FF. Programas como o IOVIEW podem ser usados normalmente, mesmo para buscar endereços livres acima do endereço 3FF. As figuras 12 e 13 mostram as faixas de endereços 300-3FF e 700-7FF em um certo PC. A decodificação incompleta com 10 bits faz com que o endereço 700 seja uma repetição do endereço 300. Comparando as figuras podemos observar que a maioria dos valores existentes na faixa 300-3FF aparecem idênticos na faixa 700-7FF. Nesse caso, não poderíamos deixar que uma nova placa ocupe, por exemplo, a faixa 700-70F, pois encontraríamos aí uma repetição da faixa 300- 30F, que como vemos, já está ocupada. ////////// FIM ////////////////