Vai para a Front Page do site


TREINAMENTO



Neste módulo:



Esta apostila é um apoio à aula ministrada pela Next. Não tem a intenção de ser um tratado sobre o assunto. Mas uma apostila feita para ser "complemento" de aula tem seus furos, por isso se você encontrar problemas na compreensão da mesma, mande uma mensagem para seu autor, Jefferson Ryan. O autor já conhece alguns desses furos e promete revisar a apostila quando puder.
O autor concedeu à Next permissão limitada de uso deste documento, qualquer outro indíviduo ou empresa deve solicitar permissão por escrito ao autor.
Todas as referências a endereços nesta apostila são feitas usando notação hexadecimal.


Endereços

Os slots dos Pcs atuais ( barramento ISA ) são todos idênticos. Não faz diferença alguma do ponto de vista do desempenho, em que slot você encaixa uma determinada placa. Digo "Pcs atuais" porque no obsoleto XT o slot 8 era diferente dos demais.

Assim sendo, todas as placas que você adiciona a um PC tem condições de acessar os mesmos sinais do barramento. O que é vantajoso do ponto de vista estético ( você pode arrumar as placas dentro do computador como for mais conveniente) pode ser um pesadelo do ponto de vista do funcionamento, porque não existe uma maneira direta do processador "conversar" com uma placa que esteja em um determinado slot. Para que o processador possa acessar uma determinada placa é necessário saber o seu endereço .


Na verdade, tudo no PC tem um endereço. Qualquer dado que trafegue pelo computador tem que ter um destino e para ter um destino ele precisa de um endereço. Nessa aula, falaremos apenas do endereçamento feito a dispositivos periféricos (internos ou externos).


Para entender porque isso é necessário, imagine uma empresa em que todas as ordens são publicadas no quadro de avisos e onde todos os funcionários tem de ler todas as ordens, filtrando quais as ordens que tem a ver com seus cargos. Cada funcionário perderia tanto tempo examinando as ordens publicadas e decidindo se são de sua responsabilidade ou não, que não teria tempo de executar as que lhe cabem.

Milhões de informações percorrem o barramento a cada segundo e se cada placa tivesse que analisar todas as informações que passam no barramento o PC de hoje seria uma tartaruga ou precisaria ser reformulado.

Os Pcs não caem nessa asneira. Cada placa monitora apenas as chamadas Linhas de Endereço e, ao detectar o endereço que lhe é atribuído, processa as informações contidas nas linhas de dados. Às vezes o endereço é fixo, como acontece na maioria das placas de vídeo, mas em algumas circunstâncias você pode mudar o endereço a que uma placa responde através de configuração da placa. Mas se você muda o endereço padrão de uma placa, tem que ter um meio de dizer ao software que a utiliza qual é esse novo endereço; do contrário o software não a encontrará, apesar dela estar bem ali, dentro do micro.

Existe algo importante a considerar quando você se refere ao endereço de uma placa: você normalmente se refere ao endereço base, porque na realidade o que existe é uma faixa de endereços a partir daquele endereço base que a placa usa ou pode usar.

É importante você saber disso para não ficar confuso quando, por exemplo, o Windows 95 ou qualquer manual diz que o endereço de uma placa é 0110 - 011F. Isso significa que ao dispositivo estão atribuídos os endereços que vão de 0110 até 011F em seqüência. Ë comum se omitir esse detalhe quando se fala em endereços e você deve sempre levar em consideração isso.

Mas porque isso?

Uma placa normalmente é constituída de vários dispositivos, mesmo quando não temos consciência disso. O programa deve ser capaz de conversar com cada um desses dispositivos isoladamente e por isso precisa de um endereço atribuído para cada um. Uma mesma placa também pode ter vários conjuntos de dispositivos, como é o caso da Super IDE ( também chamada da IDE Plus e Multi I/O) que integra 4 portas


As interrupções

As Solicitações de Interrupção (Interrupt Request ou "IRQs") são o modo que as placas tem de avisar ao processador de que precisam de atenção. Na época dos micros baseados no Z80 ( TK90X, TK 82 e outros ) a CPU estava sempre consultando cada periférico para ver se havia algum dado a ser processado. Isso consumia um tempo precioso do processador e em determinados programas precisava ser desabilitado pelos programadores com o uso de instruções especiais para acelerar o processamento.

Hoje, o processador só consulta um dispositivo se receber uma solicitação deste último. Para isso, existem cerca de 16 linhas de interrupção nos Pcs atuais. O teclado, por exemplo, usa a interrupção 1. Se você rodar um programa de medição da velocidade de processamento, como o Syschk; verá que a velocidade cai se você pressionar e segurar uma tecla qualquer do teclado. O mesmo ocorre se você utilizar o mouse, durante a medição ( o driver de mouse precisa estar instalado ).

Pense na interrupção como uma campainha que a placa aperta sempre que precisa da atenção do processador. Como o processador deve saber imediatamente quem chamou sua atenção, sem sair perguntando "foi você?" a todos os dispositivos, cada dispositivo precisa usar uma "campainha" diferente.


Os conflitos

Dois dispositivos não devem usar a mesma interrupção, pelo menos não ao mesmo tempo, isso pode confundir o programa que espera pela interrupção. E um programa "confuso" geralmente trava o computador. Quando dois dispositivos estão usando o mesmo recurso ( no caso, uma mesma interrupção ), dizemos que estão em conflito.

Das 16 interrupções disponíveis ( que já são poucas ) existem algumas que são sempre utilizadas e sobre cuja atribuição não temos escolha. São elas:

IRQ 0* Cronômetro do Sistema
IRQ 1* Teclado ( quando o buffer está cheio )
IRQ 2* O próprio controlador de interrupções
IRQ 6 Controladora de disco flexível
IRQ 8* CMOS do sistema/relógio de tempo real
IRQ 9 Usada pelo sistema
IRQ 13* Processador de dados numérico
IRQ 14 Controlador primário de disco rígido

*Não é possível haver conflito nessas interrupções, porque os "fios" correspondentes a elas não estão disponíveis no barramento.


Da lista acima você pode perceber que "sobram" ao todo 8 interrupções ( 3, 4, 5, 7, 10, 11, 12, e 15 ). Todo e qualquer dispositivo que você conecte ao computador e que precise usar uma interrupção tem que se contentar com uma destas. Eu coloquei "sobram" entre aspas porque nem todas estão sempre realmente disponíveis

Eis algumas atribuições padrão para as IRQ que "sobraram" da lista anterior

Interrupção Nome padrão do dispositivo Quem geralmente usa
IRQ 3 COM 2/COM4 Mouse ou placa de rede *
IRQ 4 COM 1/COM3 Modem
IRQ 5 Porta paralela 2 (LPT2) Impressora ou Sound Blaster
IRQ 7 Porta paralela 1 (LPT1) Outra Impressora
IRQ 10
IRQ 11
IRQ 12
IRQ 15 Controlador secundário de disco rígido Terceiro disco rígido ou drive de CD ROM IDE

*As placas de rede vem geralmente pré-configuradas para usar IRQ3 e entram em conflito com COM1, geralmente deixando o mouse inoperante


Vamos analisar os possíveis problemas:


IRQs 3 e 4


Mesmo que você não esteja usando nenhuma das portas de comunicação, elas geralmente precisam ser explicitamente desligadas para não utilizarem as interrupções 3 e 4. E mesmo que você não use uma destas interrupções, são poucos os dispositivos/placas que podem fazer uso de uma IRQ 3 ou 4 livre.


Quando uma fabricante constrói uma placa, ele define no projeto que interrupções podem ser escolhidas para seu uso. Você não pode usar uma interrupção que não esteja no conjunto definido pelo fabricante, mesmo que ela esteja livre.


IRQs 5 e 7


Geralmente, impressoras não utilizam as IRQs disponíveis nas portas paralelas, por isso alguns placas são projetadas para fazer uso das IRQs 5 e 7. Um caso muito comum é o das placas de som como a Sound Blaster. A Sound Blaster 16 vem de fábrica configurada para trabalhar com a IRQ 5. A obsoleta Sound Blaster PRO tinha por default a IRQ 7.

Entretanto, esse esquema pode significar problemas se um dia você decidir conectar à porta paralela um dispositivo que faz uso da IRQ correspondente.

 

IRQ 15


Em computadores antigos, geralmente do 386 para trás, você poderia usar IRQ 15 com qualquer dispositivo que pudesse fazer uso dela sem medo de conflitos porque ela sempre estava disponível. Hoje, todas as placas-mãe modernas dão suporte a uma segunda controladora de disco rígido, chamada de secundária, que é utilizada por drives modernos de CD ROM ou quando você tem mais que dois Winchesters ( isso não é tão incomum quanto parece). Essa controladora secundária usa a IRQ 15.

Pelo que foi exposto, dá para notar que dispositivos "incomuns" ou qualquer coisa que venha a ser inventada para o PC tem que se contentar com as interrupções de 10 a 12. E mesmo quando um fabricante tenta evitar problemas e constrói seu dispositivo para usar apenas interrupções dentro dessa faixa, ainda podem ocorrer problemas.

É necessário que uma interrupção padrão seja escolhida para que o dispositivo use automaticamente, sem intervenção do usuário ou técnico. Então se dois fabricantes de dispositivos diferentes resolvem usar a mesma interrupção padrão e o usuário dá o azar de comprar dispositivos desses dois fabricantes, ele vai ter que reconfigurar um deles. O mesmo vai ocorrer nos casos em que é necessário usar dois dispositivos idênticos no mesmo computador (duas placas de rede, por exemplo).


Um pouco de Plug and Play


A especificação Plug and Play (PnP), que traduzida para o português seria mais ou menos "encaixe e use", promete acabar com as dores de cabeça com conflitos no computador. Segundo a especificação, o computador pode conversar com as placas, saber dos recursos que necessitam e configurá-las automaticamente para que não entrem em conflito umas com as outras.

Isso parece muito bom à primeira vista, mas não é nada fácil de implementar. Explicar como isso funciona foge dos limites do nosso curso por ser altamente técnico. O que você precisa saber é que para ter um sistema verdadeiramente PnP você precisa cumprir três condições:

  1. O sistema Operacional precisa ser compatível - O Windows 95 é, mas o Windows NT (todas as versões), por exemplo, não;
  2. A BIOS da placa-mãe tem que ser compatível;
  3. Todas as placas que você usar no computador tem que ser PnP.

Se as condições 1 e 2 não forem satisfeitas, não adianta você comprar placas PnP que isso não vai ajudar. O usuário ainda vai precisar escolher ele mesmo os endereços e interrupções para evitar conflitos. Talvez ele não precise ficar mudando jumpers nas placas, mas vai precisar usar os softwares que vem com as placas.

Se você satisfizer apenas a condição 1 ou apenas a condição 2, você não tem nada.

Você precisa que no mínimo duas dessas condições sejam satisfeitas para ter um mínimo de funcionalidade PnP.


Você pode cair na tentação de afirmar que uma placa que não tem jumpers e/ou pode ter sua configuração ajustada por software é uma placa PnP. Não faça isso. A especificação PnP é muitíssimo mais complexa do que apenas abolir os jumpers. Embora uma placa que você configura sem abrir o computador seja cômoda, ela não é essencialmente PnP. Consulte o manual ou a caixa. Se você não encontrar as palavras "Plug and Play" ou a abreviatura "PnP" destacadas, provavelmente a placa não é compatível.

As portas COM e LPT

As portas seriais (COM) e paralelas (LPT) são um caso especial. Normalmente quando um programa procura por uma placa ele usa seu endereço absoluto, mas quando ele procura por uma porta COM ou LPT ele deve consultar antes uma tabela para saber qual é o endereço atual da porta. No caso, COM e LPT são apenas "apelidos" para as posições na tabela onde se encontram os verdadeiro endereços.

Os endereços padrão para as portas COM e LPT são:


COM 1 3F8 LPT1 03BC
COM 2 2F8 LPT2 0378
COM 3 3E8 LPT3 0278
COM 4 2E8

As portas seriais ou "COM"

No projeto original do PC, só haviam duas portas de comunicação: COM 1 e COM 2 e a elas foram atribuídas as IRQs 4 e 3, respectivamente. Mais tarde chegou-se à conclusão que mais duas portas seriam úteis e então foram criadas as portas COM 3 e COM 4. Mas não havia interrupções de sobra para atribuir a essas portas, por isso o projeto prevê que as novas portas devem "dividir" interrupções com as portas originais. A coisa até hoje ficou da seguinte forma:

  • COM 1 e COM 3 ficaram dividindo a IRQ 4
  • COM 2 e COM 4 ficaram dividindo a IRQ 3

Em teoria, você pode perfeitamente utilizar as 4 portas ao mesmo tempo, desde que as 4 portas não precisem usar as interrupções, ao mesmo tempo.

Como regra geral para evitar problemas, deve-se ter em mente o seguinte:

Se você usar COM 1, não deve usar COM 3;

Se você usar COM 2, não deve usar COM 4;

Poderia parecer a princípio que você poderia fazer o inverso: Usar COM 3 e COM 4 desde que não usasse COM 1 e COM 2. Mas o projeto do PC é cheio de surpresas, como veremos a seguir.

Quando o computador é inicializado, o programa armazenado na BIOS procura em seqüência pela existência de portas nos endereços padrão. À cada porta encontrada é atribuído um apelido, também em seqüência.

Essa atribuição seqüencial de apelidos gera um problema: Se você optar, por exemplo, por instalar uma placa cujo endereço, tecnicamente, seria atribuído a COM 4, essa placa vai receber um apelido que vai depender das portas que você já tem instaladas no sistema. Se você não tiver uma porta COM 2, a BIOS vai atribuir o apelido COM2 à sua placa. Se ainda assim a porta funcionasse seria ótimo, mas é muito mais provável que você tenha um monte de dores de cabeça. BIOS modernas e o Windows 95 podem contornar esse problema, mas é sempre melhor não facilitar para o azar.

As portas paralelas também usam esse mesmo esquema de atribuição seqüencial, mas falaremos nisso mais adiante.

Resumindo: Você deve usar os endereços em seqüência.


As portas paralelas ou "LPT"

O projeto do PC permite a existência de até três portas paralelas:
Denominação Endereço base Interrupção
LPT 1 03BC IRQ 7
LPT 2 0378 IRQ 5
LPT 3 0278 IRQ 5 ou 7

As portas paralelas são menos suscetíveis a conflitos, porque geralmente o que você conecta a elas (impressoras) não utiliza interrupções. Mas se você for utilizar algum dispositivo diferente (como o ZIP Drive para porta paralela) é bom ter em mente que problemas podem ocorrer se você tiver instalado algum dispositivo no seu computador que assume que sua porta paralela não vai usar a interrupção que lhe cabe.

As portas paralelas também sofrem do mesmo tipo de problema de atribuição seqüencial que as portas seriais, mas às vezes isso é útil, porque não importa o endereço da placa que você conecta, o PC vai ter sempre uma porta LPT1. Se você tiver sorte, vai funcionar tudo direitinho ( se você tiver sorte, eu disse. ).

Mas para que eu iria querer usar duas portas paralelas em meu computador?

Por vários motivos:

  • Você pode querer ter duas impressoras: uma colorida e uma monocromática. Na colorida você imprime material importante e na monocromática você imprime rascunhos e documentos que não precisam de cores, poupando assim a vida útil de sua cara impressora colorida.
  • Escritórios que trabalham com notas fiscais e certos tipos de documento ainda precisam usar a barulhenta impressora matricial, porque ela ainda é a única capaz de imprimir duas ou três vias de um documento ao mesmo tempo, com carbono. Esse mesmo escritório poderia ter uma impressora a jato-de-tinta instalada no mesmo computador para imprimir documentos que precisassem de um acabamento melhor.
  • Dispositivos como a QuickCAM fazem uso da sua porta paralela, para serem de fácil instalação. Se você não quiser se aborrecer com a troca de cabos sempre que quiser usar a câmera, instalar uma segunda porta paralela pode ser uma boa opção.

Mas para isso eu não posso usar um chaveador?

O chaveador é uma solução simples e rápida, porque você não tem que abrir o micro e nem se preocupar com interrupções. Mas instalar uma outra porta paralela é uma solução mais elegante, às vezes mais econômica ( se você não tiver que pagar um técnico para instalar) e mais fácil de operar. Sempre que você vai imprimir, você pode escolher entre uma ou outra impressora com no máximo dois cliques do mouse ( no Windows, é claro). É bom ter em mente que não existe um chaveador automático de um micro para duas impressoras. Você só encontra chaveadores automáticos de dois micros para uma impressora. Se você quiser fazer uma conexão de um micro com duas impressoras, vai ter que se contentar com um chaveador manual, se não quiser instalar duas portas paralelas


Porque "serial" e "paralelo" ?

Nas portas seriais, os dados são transferidos um bit por vez, em "série" porque só existe um fio por onde os dados podem passar. Nas portas paralelas, 8 bits são transferidos de cada vez, ao mesmo tempo, "paralelamente", porque existem oito fios para a passagem dos dados.

Como toda a comunicação interna em um computador é "paralela" (sempre 8, 16, 32 ou 64 bits estão sendo transmitidos ao mesmo tempo) a porta serial requer um circuito adicional para converter os sinais de paralelo para serial.

Mas se a porta paralela é no mínimo 8 vezes mais rápida que uma porta serial e requer um circuito menos complexo, então porque as portas seriais ainda existem?

Em sistemas de transmissão de dados é muito mais barato construir complexos circuitos eletrônicos que convertem dados de paralelo para serial de um lado e de serial para paralelo do outro do que multiplicar por oito os fios necessários à transmissão de dados. Além disso, a comunicação paralela só funciona bem até uns poucos metros. Quando a distância aumenta, problemas de interferência eletrônica difíceis de resolver começam a ocorrer no cabo. As portas paralelas tem então aplicações relativamente reduzidas:

  • Transferir dados de um computador para outro que esteja bem perto;
  • Impressão numa distância curta;
  • Conexão com dispositivos especiais;

A comunicação serial é largamente utilizada, mesmo quando você não se apercebe disso:

  • Quando você passa um fax;
  • Quando você acessa a internet;
  • Quando você liga computadores em rede;
  • Etc.

Embora a impressora seja um dispositivo normalmente vendido com uma interface paralela, existem aplicações que exigem que a impressora tenha (ou que possa ter) uma interface serial. São aplicações onde se espera ou se quer que a impressora fique longe do computador:

  • Em um pequeno escritório, onde os dois computadores que precisam usar a mesma impressora estão muito distantes e a instalação de uma rede fique muito cara.
  • Em sistemas de bilhetagem de central telefônica, para colocar a impressora em um local de mais fácil observação;

É importante observar que isso tem um preço: a transmissão de dados do computador para a impressora vai ser 8 vezes mais lenta, no mínimo.


Exemplos de dispositivos seriais:

  • Mouse, trackball e dispositivos apontadores em geral;
  • Impressoras (raramente);
  • Modems externos;
  • A câmera digital Kodak DC20;

Exemplos de dispositivos paralelos:

  • Impressoras ( o tipo mais comum );
  • Plotters ( é um tipo especial de impressora );
  • O Zip Drive;
  • As câmeras digitais como a QuickCam;

É comum você ouvir alguém dizer "saída paralela", "entrada serial" e "saída serial" referindo-se às portas seriais e paralelas. Estas expressões são tecnicamente incorretas, porque tanto as portas seriais quanto as paralelas são bidirecionais ( as informações tanto podem entrar quanto sair por elas). Os defensores das "saídas paralelas" vão teimar que as impressoras, por exemplo, apenas recebem informação vinda do computador, por isso a porta paralela é uma "saída" paralela. Antigamente, na época do PC XT, as portas eram construídas unidirecionais, mas os PCs modernos usam portas bidirecionais. Não adianta discutir ou tentar convencer essas pessoas que elas estão erradas. Entenda o que elas querem dizer mas sempre use o termo "porta" em lugar de "entrada" e "saída".