• Jueves 14 de Noviembre de 2024, 23:09

Autor Tema:  Enumeración de los PCI-s: casi pero no lo consigo  (Leído 1759 veces)

simpleThings

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Enumeración de los PCI-s: casi pero no lo consigo
« en: Viernes 5 de Febrero de 2010, 06:56 »
0
Hola a todos!

Estaba tratando de escribir un codigo lo maximo breve posible(he de conseguir meterlo en el bootsector). El codigo escanea el PCI bus en busca del CDROM, una vez encontrado el dicho device, necesito obtener el IRQ que usa el dispositivo.

La cosa es que no encuentra el CDROM.

El codigo no falla, seguro, lo he revizado muchas veces. Estoy seguro pero que me falla la lógica del programa/codigo.
A continuacion pongo el pseudocodigo(no pongo el ASM que es mogollon y cuesta mas leerlo):

Código: C
  1.  
  2. for (i=0; i<256; i++){
  3.      for(j=0; j<32; j++){
  4.           if (Device(Bus:i, Device:j).VendorID != 0ffffh){
  5.                 if (Device(Bus:i, Device:j).ClassCode == CDROMClassCode){
  6.                      readIRQRegister(Bus:i, Device:j);
  7.                 } else if (Device(Bus:i, Device:j).ClassCode == PCIBridgeFamilyClassCode){
  8.                       if (readSecondaryBusRegister(Bus:i, Device:j) != 0){
  9.                             indexingIntoTableOcuppedBusNumber(readSecondaryBusRegister(Bus:i, Device:j));
  10.                       } else {
  11.                            SubordinaryBusNumber(Bus:i, Device:j) = 0ffh;
  12.                            SecondaryBusNumber(Bus:i, Device:j) = (queryFromTableUnOcuppedBusNumber());
  13.                       }
  14.                 }
  15.           }
  16.      }
  17. }
  18.  
  19.  

No se si en algun momento les debo mandar algun comando a los PCI-Bridges o configurar tambien algo mas para poder sumergir me mas en la raiz de los PCI-s....

Puesto que al pasar por el PCI-bridge, ése me convierte los mensajes tipo 1 a tipo 0, he pasado totalmente de los mensajes tipo 0. He hecho bien?

Está claro que tengo una que otra laguna importante. Agradeceria cualquier ayuda o consejo.

Adios!