Como o dispositivo é determinado na enumeração PCI? (barramento / dispositivo / função)

3

Estou confuso sobre a enumeração barramento PCI / dispositivo / função. Olhando para a página da Wikipedia para a configuração PCI, vejo que para um determinado barramento, o mestre solicitará ID do fornecedor e ID do dispositivo para todos os dispositivos que usam a função 0. Se todos os 0xFFs forem retornados, nenhum dispositivo estará lá e a enumeração será movida. Se um ID de dispositivo e um ID de fornecedor válidos forem encontrados, haverá uma unidade PCI ali e ela será enumerada. Não tenho certeza de como o dispositivo no bus.device.function é determinado.

Por exemplo, digamos que eu tenha uma CPU com um barramento PCI e um periférico PCI conectado a ela. Eu entendo que a CPU irá procurar no barramento 0 (por padrão) e verificará todos os números de dispositivos que estão na função 0. Como o número do dispositivo do periférico é determinado?

    
por simple_symbols 26.03.2016 / 01:03

1 resposta

2

O dispositivo é determinado por um IDSEL de linha de hardware que é uma entrada para cada ponto de extremidade PCI. Durante as transações de configuração, o IDSEL é usado para indicar a um ponto de extremidade (ou ponte) PCI que está selecionado no momento. Em termos de determinar o número real do dispositivo, isso é feito pelo hardware do host. Se, por exemplo, uma placa-mãe tiver dois slots de pontos de extremidade PCI, haverá duas linhas IDSEL distintas da CPU para os pontos de extremidade. Isso é visto na figura abaixo:

Alémdisso,pareceque,naprática,écomumvincularessaslinhasIDSELaummapeamentoaquentedobarramentodedados/endereçode32bits.Quandoumaconfiguraçãoestáocorrendo,alinhadeendereçodeterminaráumendereçoativo,como0x00000010.Obitdoendereço/barramentodedadosserátrazidocomooIDSELparaumendpointespecífico.Comoexistem32dispositivospossíveisporbarramento,issofuncionamuitobem.Comoexemplodisso,suponhaqueexistaumaplaca-mãecom5dispositivospossíveis.Oseguintepoderiaserumexemplodemapeamento.

    
por 30.03.2016 / 03:50

Tags