Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
13/07/1998

< Portas Seriais VII: Final >


Vocês certamente hão de lembrar que esta série começou com a mensagem de um leitor que viu o procedimento de instalação de seu modem interno aninhá-lo na porta serial COM3 quando ele o queria na COM2, que estava livre e desimpedida. E lembrarão ainda de sua estranheza diante da solução: acessar o setup do micro e desabilitar a segunda porta serial. Para ele não fazia sentido desabilitar justamente a porta onde queria o modem.

Hoje, finalmente, resolveremos o aparente mistério.

Um modem é um dispositivo cuja função é modular (transformar dados digitais em sons a serem transmitidos por uma linha telefônica) e desmodular (digitalizar sons recebidos pela linha telefônica). Ele comunica-se com o computador através de uma porta serial. Os externos, meus preferidos, conectam-se a uma das portas seriais existentes no micro. Eles cuidam da modulação e desmodulação e a porta serial cuida da troca de dados com a CPU, como convém. Já os internos agregam a seus componentes uma UART e todos os circuitos necessários para trocar dados com a CPU, ou seja, o hardware de uma porta serial. Em outras palavras: um modem interno, além do modem propriamente dito, incorpora a seus circuitos uma porta serial completa. Uma porta física, evidentemente, já que se trata de hardware.

Na era do byte lascado cabia ao heróico usuário configurar seu modem interno, atribuindo-lhe uma interrupção e um endereço de memória (porta lógica). Isto geralmente era feito ajustando jumpers (pequenas peças de metal revestidas de plástico que se encaixam em pinos metálicos fechando o circuito elétrico entre eles) ou "dip switches" (interruptores miniatura) na própria placa. Erros eventuais, como adotar um endereço de memória ou interrupção já em uso por outro dispositivo, corriam por conta do usuário, que tinha que quebrar a cabeça para resolver o conflito.

Hoje há o plug and play, que pode ser traduzido (um tanto livremente) por "espete e use". Espeta-se a nova placa em um slot, liga-se a máquina e o dispositivo está pronto para o uso. Detalhes de configuração correm por conta do próprio micro e do sistema operacional. No caso do modem interno, que provocou esta série, quando a máquina é ligada e "percebe" que ele foi acrescentado, interrompe a carga do sistema operacional e inicia o processo de configuração sem nenhuma intervenção do usuário, procurando uma porta serial e uma interrupção livres para atribui-las ao modem, Depois, carrega os drivers (componentes do sistema operacional) que o modem usará e prossegue impávido a carga do sistema operacional, Quando termina, exibe orgulhosamente um modem configurado e pronto para o uso. Isto, naturalmente, quando funciona...

O problema descrito lá em cima deriva da própria forma pela qual o plug and play executa a configuração, atribuindo ao dispositivo o primeiro recurso que encontra livre. Durante a configuração inicial do modem interno, a primeira porta serial (física) estava ocupada pelo mouse, configurada como porta lógica COM1, portanto foi deixada em paz. Não havia dispositivo algum conectado à segunda, logo ela aparentemente estava livre. Mas só aparentemente: no setup, seu hardware (porta física) estava habilitado e a ela havia sido atribuído um endereço de memória, no caso o correspondente à porta lógica COM2. Logo, do ponto de vista do sistema, a porta lógica COM2 estava ocupada e o hardware correspondente estava habilitado e em condições de ser conectado a um dispositivo externo. Ela foi então deixada de lado e o processo de configuração prosseguiu, procurando a próxima porta serial (lógica) livre. Encontrou a COM3 e a atribuiu ao modem interno, ou seja, configurou a porta serial física existente na placa do modem como porta lógica COM3. Por isto o processo de configuração resultou no modem ocupando a COM3.

Depois, o usuário acessou o setup e "desabilitou a COM2" (tecnicamente, o que de fato ele fez foi desabilitar o hardware da segunda porta serial, uma porta física, e não "COM2", termo que deve ser usado apenas para designar uma porta lógica). O efeito prático disto foi fazer o hardware da segunda porta serial do micro ser ignorado pelo sistema, como se tivesse sido fisicamente removido. A partir daí, a porta lógica COM2 tornou-se efetivamente livre, pois o hardware a que havia sido atribuída "desapareceu". Mais tarde, quando o processo de instalação plug and play foi repetido, encontrou a porta lógica COM2 livre e a atribuiu à porta física do modem. Foi por isto que o modem aninhou-se na COM2 depois que a segunda porta serial do micro foi desabilitada.

A razão do paradoxo é a confusão que se faz entre portas físicas e lógicas. No setup, o que se desabilita é a segunda porta física do micro (não a porta lógica COM2). Com ela desabilitada, a segunda porta (física) passou a ser a do modem. Que, como era de se esperar, recebeu o endereço de memória correspondente à segunda porta lógica, COM2.

Mistério esclarecido. Eu não disse que era simples?

B. Piropo