PCI konfigurációs terület

A PCI konfigurációs tér a PCI konfiguráció címtere , a  tipikus memória és I/O címterek mellett.

A PCI busz egyik fő fejlesztése a többi I/O architektúrához képest a konfigurációs mechanizmusa, amelynek konfigurációs címtere 256 bájt, amelyet a PCI buszszám, az eszközszám és az eszköz funkciószámának ismeretében lehet megcímezni. A 256 bájtból az első 64 bájt szabványosított, a többi regiszter az eszközgyártó döntése szerint használható.

Szabványosított regiszterek

A szállítóazonosító és az eszközazonosító regiszter azonosítja az eszközt, és általában PCI azonosítóként hivatkoznak rájuk . A tizenhat bites Vendor ID regisztert a PCI SIG adja ki . A tizenhat bites Device ID regisztert az eszköz gyártója rendeli hozzá. Van egy projekt az összes ismert regiszterérték – Szállítóazonosító és eszközazonosító – adatbázis létrehozására . (Lásd a hivatkozások listáját .)

A konfigurációs címtér első 16 dupla szava (a PCI Local Bus Specification 2.2 szerint ):

Cím 31      ...      24 23      ...      16 15      ...       8 7       ...       0
0x00 Eszköz azonosító VendorID
0x04 Állapot parancs
0x08 osztály kódja revízióazonosító
0x0C BIST Fejléc típusa Késés időzítő Gyorsítótár vonal mérete
0x10 Alapcímregiszter 0
0x14 Alapcímregiszter 1
0x18 Alapcímregiszter 2
0x1C Alapcímregiszter 3
0x20 Alapcímregiszter 4
0x24 Alapcímregiszter 5
0x28 Cardbus CIS mutató
0x2C Alrendszer-azonosító Alrendszer szállítói azonosítója
0x30 Bővítő ROM alapcím
0x34 Fenntartott Képességmutató
_
0x38 Fenntartott
0x3C Max_Lat Min_Gnt Megszakítás Pin Megszakítási vonal

A DeviceID , VendorID , Status , Command , Class Code , Revision ID , Header Type regiszterek minden PCI-eszközhöz szükségesek (sok eszköztípushoz az alrendszer-azonosító és az alrendszer-szállító-azonosító regiszter is szükséges ).

Az összes többi regiszter nem kötelező.

Automatikus hardver inicializálás konfigurációs térrel

Annak érdekében, hogy a memória vagy I/O címterén keresztül hozzáférjen az eszközhöz, a rendszerszoftver vagy az operációs rendszer beprogramozza az alapcímregisztereket ( az angol  Base Address Registers , más néven BAR), konfigurációs parancsokat küldve a PCI-vezérlőnek. A rendszerindítás kezdetén minden PCI eszköz inaktív állapotban van, nincs hozzájuk rendelve cím, amelyen az eszközillesztők kommunikálni tudnak velük. Vagy a BIOS , vagy maga az operációs rendszer hozzáfér a PCI-nyílásokhoz, és beállítja a BAR-okat a konfigurációs címtérben. A BAR értékek mindaddig érvényesek, amíg a rendszer be van kapcsolva. A tápellátás kikapcsolásakor ezeknek a regisztereknek az értékei elvesznek a következő rendszerindításig, amely során a beállítási eljárás megismétlődik. Mivel ez a folyamat teljesen automatizált, a számítógép-felhasználó megszabadul a PCI-buszra csatlakoztatott új hardverek konfigurálásának nehéz feladatától (ellentétben pl. az ISA-busszal , amelyhez csatlakozó eszközök alapcímét jumperekkel, ill. kapcsolók).

Bármely nem áthidaló PCI-eszköz (lásd: PCI-PCI Bridge Architecture Specification. Revision 1.1 ) legfeljebb hat BAR-ral rendelkezhet, amelyek mindegyike egy adott címtartományért felelős a memóriában vagy az I/O-címtérben. Ezenkívül az eszköznek lehet firmware -je ).

PCI hozzáférés I/O portokon keresztül

A PC-AT és a kompatibilis gépek PCI-busszal való működéséhez két fő port van kijelölve.
0CF8h -W cím port Cím
0CFCh RW adatport Adat
Mindkét port 32 bites.
A címport a következő 32 bites felépítésű: A címport a busz, az eszköz és a regiszter címét határozza meg az eszköz konfigurációs területén. Durván szólva az eszköz egy fizikailag jelen lévő eszköz. A függvény egy logikai eszköz. С  — eszköz hozzáférési jelző. A címportban a legkisebb jelentőségű két bit mindig 0. Ha végzett az eszközzel, állítsa vissza a címet 0-ra.

+---+---------+-------+----------+--------+---------------+-+-+
|31 |30     24|23   16|15      11|10     8|7             2|1|0|
+---+---------+-------+----------+--------+---------------+-+-+
| с | резерв  |шина   |устройство| функция|Индекс регистра|0|0|
+---+---------+-------+----------+--------+---------------+-+-+



Ha a nulla regiszter lekérdezésére 0FFFFh kerül vissza, akkor az eszköz nem létezik. Szállítói azonosító (gyártói azonosító) - Intel esetében ez 8086h, de nem lehet 0FFFFh.
Eszközazonosító (eszközazonosító) - különböző értékeket vesz fel

Revízióazonosító (Revision ID) – az eszköz gyártó által hozzárendelt verziószámát jelzi.

Osztálykód (Class Code) - három részből áll

+---------------+--------------+---------------------+
|23           16|15           8|7                   0|
+---------------+--------------+---------------------+
|Base Class Code|Sub Class Code|Programming Interface|
+---------------+--------------+---------------------+

Base Class Code – alaposztály, rövidítve BCC.
Alosztály kódja - egy alosztály, rövidítve SCC.
Programozói felület - interfész, rövidítve PI.

Fejléc típusa – Ha a 7. bit értéke 1, akkor az eszköz több funkciót is tartalmaz.
Ha a 6. bit értéke 0, akkor a fejléc szabványos. Szabványos fejlécek:
00 – lásd a fenti szabványt.
01 - szabvány a PCI-PCI
hídhoz 02 - szabvány a CardBus hídhoz.

Linkek