PCI設(shè)備可以在地址空間中重定位是其重要功能之一,使得系統(tǒng)可合理地分配資源,甚至完全相同的兩塊PCI卡也能夠在同一總線內(nèi)工作而不會(huì)產(chǎn)生地址沖突?;刂芳拇嫫鞯墓δ苁欠峙?/span>PCI設(shè)備的系統(tǒng)地址空間,在基地址寄存器中,位0(最低位)均為只讀位并且用來(lái)標(biāo)識(shí)是存儲(chǔ)器空間還是I/O地址空間。如果該位為0,表示映射到存儲(chǔ)器空間。映射到I/O空間的基址寄存器寬度總是32 bit,其中位0值為1 (用硬件實(shí)現(xiàn)),位1為保留位并且其讀出值必須為0,其余各位用來(lái)把設(shè)備映射到I/O空間。映射到存儲(chǔ)器空間的基址寄存器可以是32 bit寬度,也可以是64 bit寬度。其中位0也要用硬件方式使其恒為0。位2和位1兩位用來(lái)表示映射類型,其余各位用來(lái)將設(shè)備映射到存儲(chǔ)器空間。
系統(tǒng)配置軟件通過向基址寄存器寫入全“1”后再讀回的方式確定設(shè)備要求的地址空間范圍,與地址空間無(wú)關(guān)的位其返回值為0。
在VxWorks操作系統(tǒng)下實(shí)現(xiàn)CompactPCI總線設(shè)備的驅(qū)動(dòng)過程主要包括下面步驟: