Primeiramente, vale ressaltar que apenas o software de gerenciamento de recursos (BIOS e sistema operacional plug and play) deve ter acesso aos registradores de configuração (ver Figura 1) de cada dispositivo.
Existem dois mecanismos para acessar o espaço de endereçamento de um slot.
No primeiro mecanismo, programa-se uma palavra de controle de 32 bits (nos endereços de I/O CF8h a CFBh) que contém determinados campos, especificando qual o barramento a ser acessado (0 a 255), qual o número do dispositivo (0 a 39), a função (0 a 3) e o índice do registrador de configuração (0 a 63). O dado a ser lido ou escrito na localização especificada pela palavra de controle é acessado com uma leitura ou escrita no endereço CFCh.
No segundo mecanismo, desprotege-se o espaço de configuração PCI através de uma escrita conveniente no endereço CF8h. Após isto ser feito, o primeiro slot fica mapeado a partir do endereço C000h, o segundo a partir de C100h e assim por diante, sempre saltando 256 endereços por slot. Dets aforma, o registrador de comando do terceiro slot fica mapeado nos endereços C204h e C205h, podendo ser normalmente acessado por instruções IN e OUT.
As figuras 3 e 4 ilustram o espaço de endereçamento gerado pelos dois mecanismos.
 clique para ampliar Figura 3: Espaço de endereçamento gerado pelo primeiro mecanismo.
 clique para ampliar Figura 4: Espaço de endereçamento gerado pelo segundo mecanismo.
Na verdade, o mecanismo adotado é automaticamente definido pelo chipset PCI da máquina em questão.
O segundo mecanismo tem a vantagem de ser de programação bastante simples, contudo é impróprio para implementações de máquinas com múltiplos processadores, pois, para a sincronização dos ciclos de barramento, o sistema fica bastante lento e caro.
A BIOS oferece diversos serviços aos aplicativos e sistema operacional, pela INT 1Ah do modo real ou outras funções, de forma que estes possam ter acesso a dados provenientes do resultado da configuração de recursos estabelecida pleo gerenciamento plug and play.
Para saber mais:
|