Os comandos PCI são instruções enviadas por um host (normalmente uma CPU) para um dispositivo PCI para controlar sua operação. Eles não são uma lista simples e prontamente memorizada, como algumas dezenas de comandos; Em vez disso, há uma estrutura complexa e uma ampla gama de funcionalidades, dependendo do dispositivo específico. Os comandos geralmente são categorizados e operam no espaço de configuração do PCI.
Aqui está um detalhamento dos principais aspectos e tipos de comandos PCI:
1. Comandos de acesso à configuração: Estes são comandos fundamentais usados para ler e gravar no espaço de configuração do dispositivo. Esse espaço contém informações sobre os recursos do dispositivo, recursos (como endereços de memória e portas de E/S) e status. Os comandos principais aqui são:
*
Configuração Leia: Lê um registro específico dentro do espaço de configuração.
*
Configuração Escreva: Grava dados em um registro específico dentro do espaço de configuração.
Esses comandos são tratados por meio de acessos específicos de porta de E/S ditados pelas especificações do barramento PCI. O endereço para o qual você escreve contém os números de barramento, dispositivo e função para especificar o dispositivo de destino e o deslocamento do registro em seu espaço de configuração.
2. Acessos de E/S e memória: Embora não seja estritamente "comandos" no sentido de códigos de operações específicas, acessar o espaço de E/S e o espaço mapeado pela memória do dispositivo são cruciais. O host utiliza as informações obtidas do espaço de configuração para determinar os endereços apropriados para esses acessos. Eles são iniciados pela CPU através de operações de leitura/gravação de memória ou instruções de E/S, mas o hardware subjacente direciona essas operações para o dispositivo PCI específico.
3. Comandos específicos do dispositivo: Muitos dispositivos PCI implementam seus próprios comandos além do acesso básico de configuração. Esses comandos são altamente variados, dependendo da função do dispositivo e são definidos na folha de dados do dispositivo. Exemplos podem incluir:
*
Operações de partida/parada: Comandos para iniciar uma transferência de dados, iniciar um processo ou interromper a operação.
*
Manipulação do registro de controle: Modificando vários bits de controle em registros específicos para alterar o comportamento do dispositivo (por exemplo, gerenciamento de energia, interrupção Ativar/desativar).
*
Comandos de transferência de dados (relacionados com DMA): Comandos relacionados às operações de acesso à memória direta (DMA). Isso permite que os dispositivos acessem diretamente a memória do sistema sem intervenção contínua da CPU. Estes são altamente específicos de dispositivos, geralmente envolvendo a criação de descritores de DMA.
em resumo: Não há uma lista simples de "comandos PCI", como você pode encontrar em um conjunto de instruções da CPU. A interação é mais sutil:
* O host usa comandos de acesso à configuração (leituras/gravações) para entender e configurar o dispositivo PCI.
* Em seguida, ele usa o acesso à memória e as instruções de E/S guiadas pela configuração para interagir com a função do dispositivo.
* Finalmente, muitos dispositivos têm seu próprio conjunto de comandos, específicos para sua funcionalidade e descritos em sua documentação individual.
Para entender os comandos específicos para um dispositivo PCI específico, você precisa consultar sua folha de dados. A especificação do PCI define principalmente os mecanismos de acesso ao espaço de configuração e a arquitetura geral do barramento.