PCI enumeration

-
Salut à tous,
Dans le cadre d'un projet scolaire portant sur l'architecture des ordinateurs, je dois réaliser un programme pouvant énumérer les bus PCI d'un ordinateur.
Ce programme est divisé en deux "couches" :
- Une couche d'énumération qui se charge d'énumérer les différents bus ainsi que les devices dans chacun de ces bus. Elle doit ensuite utiliser une structure de données pour stocker ces informations (Tree ?) ainsi que différentes informations sur le device (vendor id, device id, functions). Elle doit générer un arbre pour représenter toutes ces données (bus + devices). Cette couche sera intégré dans le kernel land (fictif).

- Une couche d'affichage qui doit prendre la structure de données en question et l'afficher (en utilisant des points, des tirets, des couleurs, des espaces, bref que ça ressemble à quelque chose).

Pour réaliser ce projet, je peux utiliser les langages assembleurs ou le langage C. Je n'ai le doit d'utiliser aucune API. Je dois m'adresser directement au matériel ou en utilisant des routines BIOS. Je dois rendre le projet sous forme de binaire exécutable sur win32 ou linux.

N'ayant que des notions d'assembleur (hello world :/), je ne vois pas du tout comment entamer ce projet. Je me suis renseigné sur OsDev et j'ai plus ou moins compris le fonctionnement (utiliser deux boucles imbriqués qui parcourent les bus et les devices et vérifier pour chaque device/bus s'il existe et s'il a des functions). Mais je ne vois pas comment mettre ça en place d'un point de vue code.

C'est pourquoi je m'adresse à vous pour recevoir un peu d'aide. Bien entendu, je ne demande pas de code pré-fait, je suis très motivé pour apprendre.

Merci.
Afficher la suite