Módulo EPOS para Interface Paralela Bidirecional Assíncrona
Padrão IEEE 1284
Introdução/Objetivos
O objetivo da comunicação
paralela é, tão somente, enviar dados de uma aplicação
a um dispositivo conectado a uma porta paralela e, por vezes, vice versa.
Para que essa comunicação possa ocorrer, é necessário
que a aplicação selecione um dos dispositivos conectados
a uma das portas paralelas. Somente uma aplicação pode fazer
uso de um dispositivo ao mesmo tempo. Ainda, uma aplicação
pode fazer uso de mais de um dispositivo simultaneamente.
Antes de se iniciar a comunicação,
precisa haver uma negociação entre a aplicação
e o dispositivo mediada pelo sistema operativo (SO), a fim de se estabelecer
um modo de transferência de dados adequado às necessidades
da aplicação e às limitações lógicas
ou físicas do dispositivo. Esta negociação é
tarefa exclusiva do SO, de forma que a aplicação se limita
apenas a apresentar as características desejadas para a comunicação.
Quando uma aplicação exigir
um modo de transferência com características além do
permitido pelo dispositivo, sua compilação deve negar o pedido,
embora ainda seja possível haver uma verificação da
natureza do dispositivo em tempo de execução. No caso de
haver mais de um dispositivo conectado à mesma porta, será
de responsabilidade do SO manter informações sobre os modos
de transferência negociados com cada um dos dispositivos.
É importante notar que, em nível
de SO, uma porta paralela é utilizada de acordo com o regime de
compartilhamento por tempo.
O padrão IEEE
Quatro documentos especificam várias
funcionalidades, requeridas e opcionais, para a implementação
de interfaces paralelas e de dispositivos que se conectam a estas interfaces.
O primeiro documento foi publicado em 1994
e foi substituído por outro no ano 2000. Este documento-base (IEEE
Std 1284-2000) especifica os métodos de sinalização
elétrica a serem implementados pelos hospedeiros e pelos dispositivos
interfaceadores. Além disto especifica um formato de string
para identificação de dispositivos conectados à porta,
bem como o método para que este dado seja enviado ao hospedeiro
sem que o canal de dados seja utilizado para tal tarefa.
Os dispositivos que podem ser conectados
na porta paralela são tipicamente impressoras. Entretanto podem
ser conectados àquela dispositivos de qualquer natureza que requeiram
comunicação de dados paralela assíncrona, bidirecional
ou não.
O documento-padrão IEEE Std 1284.1
foi, na realidade, publicado em 1997, depois da publicação
do primeiro documento-base em 1994; continuando, entretanto atual nos dias
de hoje. O padrão 1284.1 especifica a comunicação
entre hospedeiro e impressoras de forma independente de camada física
de comunicação e é, portanto, utilizado também
para especificar comunicação entre hospedeiros e impressoras
conectadas a outros hospedeiros através de uma rede tal qual TCP/IP
ou NetBios. Como trata especificamente de impressoras e o protocolo definido
é independente da camada física utilizada, não se
tratará deste protocolo neste trabalho.
O documento-padrão IEEE Std 1284.3
trata do uso avançado das portas paralelas conectando vários
dispositivos ao hospedeiro simultaneamente, através de daisy
chaining e multiplexação. Trata também de uma
arquitetura de programação de drivers que tem como
objetivo ser implementável em várias arquiteturas e sistemas
operacionais, além de especificar o esquema de uma camada de ligação
que roteia corretamente informações entre diversos sistemas
de software e os dispositivos usados por estes. Este padrão, juntamente
com o padrão-base serão contemplados na análise do
sistema de software e implementados efetivamente.
O último documento (IEEE Std 1284.4),
publicado no ano 2000, trata de um protocolo de comunicação
de nível correspondente aos níveis OSI de transporte e sessão.
Serve na prática para permitir que computadores e outros dispositivos
possam se comunicar entre si através de um canal que suporta múltiplas
conexões lógicas, garantia de integridade dos pacotes, controle
de fluxo etc. Este protocolo será estudado e levado em consideração
na análise, mas não será incluído na implementação
deste trabalho.
A figura abaixo ilustra as relações
entre os padrões publicados.
IEEE 1284
Como introduzido anteriormente, o padrão IEEE 1284 especifica as
características eletrofísicas e um método de identificação
de dispositivos aos hospedeiros.
Figura 1-pinagem da porta paralela (IEEE 1284-A)
Significado dos pinos da figura acima, conforme o modo de compatibilidade:
- D0 - D7: porta de saída DATA
- S3, S4, S5, S6, nS7: porta de entrada STATUS
- nC3, C2, nC1, nC0: porta de saída CONTROL
- 18-25: aterramento/neutro
Modos de Operação e Fases de Operação em Cada
Modo
Modo de Compatibilidade
O modo de compatibilidade possibilita que dispositivos anteriores à
nova especificação ainda possam tirar proveito das interfaces
paralelas de hospedeiros produzidas segundo o novo padrão. Os modos
adicionais nibble e byte servem para permitir que haja comunicação
bidirecional sem que os modos avançados sejam usados. Interfaces
conformantes com o padrão devem suportar, no mínimo, os modos
de compatibilidade e o modo nibble.
Fases:
Modo Nibble
Modo em que o dispositivo pode enviar dois lotes de quatro bytes por vez
para o host. É utilizado juntamente (mas não simultaneamente)
com o modo de compatibilidade para implementar um canal de comunicação
bidirecional.
Fases:
transferência de dados dispositivo->host
host ocupado e dados disponíveis para transferência
host ocupado e nenhum dado disponível para transferência
ocioso reverso (dispositivo não tem nada a transmitir)
interrupção (dispositivo causa interrupção
no host para avisar que tem dados a transferir)
Modo Byte
Similar ao modo nibble, exceto pelo fato de que a comunicação
dsipositivo-host é feita pelos oito canais de dados em modo reverso.
Fases: exatamente as mesmas do modo nibble.
Modo ECP (Extended Capabilities Port)
Método que se utiliza de um controlador de DMA para transferência
de dados a taxas mais altas que os modos acima. Provê um canal de
comunicação bidirecional parecido com o modo byte. Direcionado
principalmente a impressoras.
Fases:
Modo EPP (Extended Parallel Port)
Similar ao modo ECP. Utiliza DMA e o canal de comunicação
é bidirecional. Direcionado a dispositivos que requeiram alta taxa
de transferência em um canal paralelo (ZIP drives, discos rígidos
externos, gravadores de CD etc.).
Fases:
ocioso inicial (o padrão diz que há uma fase de ociosidade
inicial, ou seja, antes de qualquer operação ter sido executada,
que é diferente da fase ociosa depois disto)
transferência de dados ou endereço em ambas as direções
ocioso
terminação iniciada pelo hospedeiro
Fases de Operação
A figura abaixo ilustra as atividades e os estados que a interface paralela
pode assumir no decorrer de sua operação, bem como as transições
possíveis entre eles.
Análise de Domínio
Para cuidar das tarefas de acesso a dispositivo físico tais quais
realização de transferências em rajada e manutenção
do estado da interface, definiu-se um novo mediador chamado ParPort.
Na figura abaixo tem-se o diagrama correspondente.
Como há um padrão que define
métodos e protocolos para seleção de dispositivos
conectados simultaneamente na porta paralela através de daisy-chain
e multiplexing, pode-se encarar o sistema formado por estes dispositivos
ligados destas duas maneiras como um barramento. Há, entretanto,
ressalvas a se fazer em relação ao acesso ao barramento,
que deve ser de uma aplicação por vez.
Na figura abaixo, as famílias de abstrações
importantes para a abstração de comunicação
paralela.
Na família IO definiu-se um barramento
paralelo, que servirá de abstração para o "barramento"
formado pelos dispositivos conectados de acordo com as duas formas supracitadas.
Abaixo a figura da abstração
Parallel_Bus.
Note-se que o barramento paralelo faz uso
do mediador ParPort, se utilizando de suas capacidades de controle
do dispositivo físico. Outro componente utilizado é a abstração
Function_IH,
que é utilizada para tratar interrupções de hardware
geradas pela porta paralela em consonância com os pedidos dos dispositivos
a esta ligados. Também, pode existir duas arquiteturas de barramento
ou a combinação das duas conforme restrições
expressas, são elas
daisy-chain e multiplexador. Pode
haver, no máximo um dispositivo de controle de barramento do tipo
multiplexador e, no máximo, quatro dispositivos do tipo daisy-chain,
sendo que não pode haver multiplexador que não esteja ligado
diretamente à porta paralela.
Os dispositivos que podem ser conectados
a uma porta paralela são representados como subclasses de Basic_Parallel_Device,
conforme figura abaixo.
Código-fonte do EPOS