PCI Bus Configuration and Enumeration
9/8/2008
Configuração de barramento PCI
Primeiro, driver de barramento PCI configura o PCI barramento, se um carregador inicializar ou de sistema do BIOS não configurou dispositivos PCI antes de executar - imagem tempo é carregado. Essa etapa será ignorada se a valor do Registro NoConfig é defina igual a dword:1 Sob a PCI chave Registro.
Observação
Ignorando a etapa configuração é útil para CEPCs, pois o BIOS já configura o barramento PCI. Alguns CEPCs não a configurar todos os dispositivos PCI possíveis, como CardBus. Para dispositivos ao trabalho que não estão configurados em um CEPC, definido NoConfig igual a 1.
Em seguida, o driver barramento PCI examina o barramento PCI, coleta informações do recurso as pontes PCI-to-PCI e os dispositivos encontrados. Como o driver descobre cada dispositivo, ele procura o Registro para um compatível driver Modelo Ou Instância chave Registro. Ao encontrar a melhor correspondência, com base no dispositivo identificadores como Classe, SubClass, VendorID, e assim por diante, o driver examina o correspondente chave do Registro a presença da ConfigEntry valor. Se ConfigEntry existe, o driver barramento PCI carrega o driver DLL e chama a rotina configuração descrita por ConfigEntry Para auxiliar na alocação e colocar os recursos.
Observação
Se ConfigEntry e ConfigDll Valores existir, então o DLL descrito por ConfigDll é carregado instead of o driver DLL. O valor da DLL subchave é o driver DLL. Esse processo é usado principalmente para configurar os recursos não-em conformidade com, como recursos não nos registradores configuração PCI. Ele também é usado para limite de recursos exigido pelo dispositivo, que é útil para sistemas com pequenas janelas PCI.
Observação
Esse processo usa as funções configuração dispositivo de Gdcfg.dll. Ele executa o gerenciamento recurso PCI-Compliant usual e fornece gerenciamento recurso para a expansão ROM. Driver de barramento PCI ignora a expansão ROM. Para obter mais informações sobre as funções configuração dispositivo, consulte Funções de configuração do dispositivo.
Quando todos os recursos forem encontrados, incluindo memória e janelas E/S, driver de barramento PCI coloca os recursos dentro de janela barramento PCI. Quaisquer dispositivos que foram colocados anteriormente, tais como aqueles usados para depuração serviços, permanecem como eles foram e driver de barramento PCI coloca os recursos ao redor delas. Driver de barramento PCI aloca o dispositivo números IRQ, usando a OAL para mapa (n.); mapear (v.) o PCI IRQ para o sistema de IRQ. Todos os recursos alocados para os dispositivos pelo driver de barramento PCI são solicitados a partir de I/O Resource Manager para garantir não haja nenhuma sobreposição com outros interno dispositivos. Para obter mais informações, consulte IOCTL_HAL_REQUEST_SYSINTR.
Enumeração de barramento PCI
Driver de barramento PCI, em seguida, enumera o barramento PCI, verificando-lo novamente. Quando um dispositivo é descoberto, o Registro é procurado o correspondente Modelo Ou Instância chave. Driver de barramento PCI procura uma correspondência melhor usando identificadores dispositivo como Classe, SubClass, VendorID, e assim por diante. Se uma correspondência exata é encontrada com um Instância chave, significará o dispositivo já tiver sido configurado e colocado. Todos os dispositivos possuem um associado Instância chave após um inicialização a quente, ou se o Registro tem persistentes. Se uma correspondência melhor for encontrada com um Modelo chave, o Modelo informações são copiadas para um Instância chave para o driver, along with os valores configurados recurso. Se você estiver usando um driver non-Stream, o Instância chave é a chave passado para ponto de entrada do driver quando o driver é carregado. Se não, o Chave valor em ativo do dispositivo a chave é definido como o Instância chave do driver.
Ponte PCI-para registro configuração
Pontes PCI-para talvez precise ter registradores definido para configurar barramento latências e outros parâmetros quadro-específicos. Essas são as possibilidades para configurar o dispositivo ponte PCI-to-PCI:
- A OAL pode enumerar o barramento PCI no avançado, descobrir as pontes e configurar o barramento PCI apropriadamente.
- Driver de barramento PCI pode carregar um driver de dispositivo para a ponte para fazer a configuração, você pode carregar este driver na rotina de configuração. Após concluir a configuração, o driver barramento PCI deve descarregar o driver de dispositivo que carregá-lo.
Você também pode definir comum configuração PCI registra no Registro para o dispositivo ponte PCI-to-PCI. Esses registradores incluem Comando, BridgeControl, A latência, SecondaryLatency, e NoConfig. Quando NoConfig é definido como iguais a 1, o driver barramento PCI não modifica a memória e janelas E/S para esta ponte PCI-to-PCI.
Enumeração do Registro do driver de barramento PCI
Depois que o barramento PCI é configurado e enumerado, driver de barramento PCI parece sob a Instância chave para um A DLL valor. Enumera este DLL, BusEnum.dll, geralmente o Instância chave para carregar os drivers dispositivo para cada uma das instâncias dispositivo encontrados no barramento. O enumerador barramento carrega drivers de dispositivo e chama seus pontos entrada de acordo com o Ordem valor para cada instância driver. Se Sinalizadores é igual a 0x0001, em seguida, o driver não carregado get. Isso é útil para reservar e alocação de recursos para um driver que já está carregado pela OAL, such as a depuração Ethernet adaptador. Para obter mais informações sobre outros válido valores Sinalizadores, consulte ActivateDeviceEx.