Linux PCIe Endereço do barramento físico

1

Estou trabalhando no design de uma placa PCI-Express personalizada.

Estou tentando escrever um módulo do kernel que será meu cartão personalizado DMA.

Agora, quando conecto o cartão no Linux, nenhum dispositivo PCI válido é exibido (o que significa que provavelmente tenho um erro do meu jeito, eu sei), no entanto, se eu parar o sistema na inicialização do bootloader (uboot), para acessar diretamente o cartão como eu sei no uboot o endereço de memória física que é mapeado para o meu dispositivo.

Existe uma maneira de acessar o cartão de maneira semelhante no Linux?

    
por Without me Its just Aweso 31.08.2010 / 22:41

2 respostas

1

O seu cartão está devolvendo FFFFFFFF para o ID do dispositivo ou do fornecedor? Você ainda pode acessar no U-Boot por meio do comando pci , mas como isso significa que nenhum dispositivo está presente em uma varredura de dispositivo, o Linux não o atenderia. Eu poderia estar muito errado sobre isso (eu presumo que esta é uma plataforma ARM desde que você menciona o U-Boot - talvez funcione de forma diferente em diferentes arquiteturas de CPU ...)

É possível que o Linux esteja lendo o barramento PCI incorretamente. Outros dispositivos PCI além do seu personalizado funcionam? Se não, verifique se você está usando o kernel correto para sua placa ou talvez precise examinar suas opções make menuconfig mais de perto ao construir seu kernel.

/dev/mem permite acessar diretamente endereços de memória não mapeados. Você pode usar ferramentas como dd e outras, embora fazer leituras e gravações específicas em endereços únicos através de bash não seja agradável ou fácil. Não tenho conhecimento de uma ferramenta do Linux que funciona como um "monitor", lendo e gravando diretamente a memória ou um dispositivo (talvez gdb , mas opera no espaço do usuário ...)

    
por 03.01.2014 / 22:34
0

Informações básicas de diagnóstico sobre placas PCI podem ser obtidas com lspci -vvv .

    
por 01.09.2010 / 01:21