Você está na página 1de 21

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 ////////////////

Você também pode gostar