新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)總線接口芯片及其ISA模式應(yīng)用

單片機(jī)總線接口芯片及其ISA模式應(yīng)用

作者: 時(shí)間:2012-02-20 來(lái)源:網(wǎng)絡(luò) 收藏

2.3 串行EEPROM的配置

相比,PCI支持三個(gè)物理空間:存儲(chǔ)器地址空間、I/O地址空間和配置空間。配置空間是PCI所特有的一個(gè)空間,所有的PCI設(shè)備必須提供配置空間。串行EEPROM存儲(chǔ)了PCI9052重要的配置信息,如設(shè)備號(hào)DID、制造商號(hào)VID、子設(shè)備號(hào)SDID、子制造商號(hào)SVID、中斷號(hào)、設(shè)備類型號(hào)、局部空間基地址、局部空間描述符、片選響應(yīng)以及局部響應(yīng)控制CNTRL等信號(hào)。EEPROM的內(nèi)容非常重要,它直接關(guān)系到整個(gè)板卡能否正常工作,在設(shè)計(jì)時(shí)要非常注意。

系統(tǒng)加電時(shí),通過(guò)PCI的RST復(fù)位以后,PCI9052首先檢測(cè)EEPROM是否存在。如果檢測(cè)到EEPROM首字不是FFFFH,PCI9052將依次讀取EEPROM的內(nèi)容來(lái)初始化內(nèi)部寄存器。PCIBIOS根據(jù)配置寄存器的內(nèi)容進(jìn)行系統(tǒng)資源分配,這樣,整個(gè)PCI設(shè)備的資源才不會(huì)發(fā)生沖突,從而實(shí)現(xiàn)了PCI的即插即用的特性。

PCI9052的內(nèi)部寄存器為總線的設(shè)計(jì)與實(shí)現(xiàn)提供了最大的靈活性,這些寄存器可以分為兩類:PCI配置寄存器和局部配置寄存器。PCI配置寄存器有6個(gè)基地址寄存器,這些基地址是在系統(tǒng)中的物理地址。其中,基地址0和基地址1分別是以內(nèi)存方式和I/O方式訪問(wèn)局部配置寄存器的基地址,基地址2和基地址3分別映射到局部基地址0和局部基地址1。局部總線配置寄存器用于設(shè)定局部總線的工作方式,如基地址和地址范圍等。實(shí)際上,9052在PCI和總線之間起到一個(gè)翻譯作用,要訪問(wèn)端地址只需對(duì)PCI端基地址進(jìn)行操作就可以了。對(duì)于我們的設(shè)計(jì),EEPROM的值及裝入順序如表1所示。

24.jpg

表1中,DID和VID是PLX公司的標(biāo)志,一般不能更改。操作系統(tǒng)就是通過(guò)DID、VID、SDID、SVID及設(shè)備類型碼來(lái)識(shí)別不同廠家的設(shè)備的。

在ISA下,局部空間1必須映射為I/O空間,局部空間0必須映射為內(nèi)存空間。另外要注意:在ISA下雖然不存在片選信號(hào),但我們必須設(shè)置它,使它的值和局部空間1的基地址和范圍相匹配,否則,局部地址空間無(wú)法響應(yīng)PCI的控制指令。同樣,如果用到局部地址空間0,也要設(shè)置它的值。

對(duì)于PCI9052,它的配置寄存器的內(nèi)容是在復(fù)位時(shí)通過(guò)串行EEPROM加載的。在ISA下,串行EEPROM一定不能省略,我們一般使用松下公司的NM93CS46或與之兼容的存儲(chǔ)器。配置寄存器的內(nèi)容編寫(xiě)完以后,可以用編程器寫(xiě)入EEPROM中。另外,也可以通過(guò)主機(jī)在線燒寫(xiě),但由于各種原因,成功率很低。

3 板卡調(diào)試

板卡做好以后,就可以插入主機(jī)板的PCI插槽中進(jìn)行調(diào)試。在調(diào)試的過(guò)程中,為了跟蹤信號(hào)的變化通常要用到數(shù)字示波器,另外,還需要一個(gè)軟件調(diào)試工具。PLX公司提供了一個(gè)905X的專用調(diào)試軟件PLXmon,我們可以從它的網(wǎng)站免費(fèi)下載。PLXmon包括以下功能:PCI總線的探測(cè)與選擇;配置寄存器的檢查和修改;內(nèi)存空間的顯示、修改和填充;EEPROM內(nèi)容的讀寫(xiě)等。利用這個(gè)工具,我們可以很清楚地看到EEPROM的內(nèi)容以及PCI配置寄存器和局部端配置寄存器的內(nèi)容,另外,用戶還可以進(jìn)行內(nèi)存和I/O端口的讀寫(xiě)。

此外,我們也可以用WinDriver或SoftICE軟件進(jìn)行板卡調(diào)試,但總的來(lái)說(shuō),使用起來(lái)都不如PLXmon方便。有了開(kāi)發(fā)工具,設(shè)計(jì)者就可以根據(jù)板卡的具體要求進(jìn)行調(diào)試了。

4 驅(qū)動(dòng)程序的編寫(xiě)

板卡調(diào)試成功以后就可以編寫(xiě)驅(qū)動(dòng)程序了。目前,編寫(xiě)驅(qū)動(dòng)程序最常用的工具是VtoolsD和WinDriver,它們都是專門(mén)的驅(qū)動(dòng)開(kāi)發(fā)工具。尤其是WinDriver,開(kāi)發(fā)人員不需要掌握WINDOWS驅(qū)動(dòng)編程的知識(shí),利用它的向?qū)Чぞ撸芎芸斓亻_(kāi)發(fā)出高質(zhì)量的驅(qū)動(dòng)程序。

在Windows9x環(huán)境下,操作系統(tǒng)統(tǒng)一管理硬件資源,出于安全性考慮,ring3層程序不能直接訪問(wèn)硬件(I/O端口訪問(wèn)除外),因此,必須編寫(xiě)運(yùn)行在ring0層的虛擬設(shè)備驅(qū)動(dòng)程序(VxD)來(lái)響應(yīng)系統(tǒng)底層的中斷。如果板卡只有I/O操作,而沒(méi)有用到中斷和內(nèi)存操作,可以不用編寫(xiě)驅(qū)動(dòng)程序,直接在程序里實(shí)現(xiàn)輸入輸出就可以了。編程的方法是先找到板卡,再找到卡中與我們用到的局部空間相對(duì)應(yīng)的PCI基地址,然后就可以根據(jù)要求對(duì)這個(gè)基地址進(jìn)行操作了。如果在WINDOWS98以上版本的操作系統(tǒng)下,就要編寫(xiě)WDM設(shè)備驅(qū)動(dòng)程序了。

5 結(jié)束語(yǔ)

由于PCI總線數(shù)據(jù)吞吐量大,傳輸速率高,在微機(jī)設(shè)計(jì)中,基于PCI總線的設(shè)計(jì)成為主流。PCI9052是一款優(yōu)秀的PCI,設(shè)計(jì)者用它可避免直接面對(duì)復(fù)雜的PCI總線協(xié)議,降低了設(shè)計(jì)難度,從而使用戶可以集中精力解決具體的問(wèn)題,縮短了開(kāi)發(fā)周期。實(shí)踐證明,PCI9052為開(kāi)發(fā)作為總線接口目標(biāo)設(shè)備的產(chǎn)品,特別是對(duì)基于ISA總線的接口板向PCI的轉(zhuǎn)換提供了極大的方便。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉