(1)初始化過程
主CPU對(duì)輸入緩沖區(qū)進(jìn)行初始化,順序如下:①輸入數(shù)據(jù)包準(zhǔn)備好狀態(tài)字節(jié)清零;②信號(hào)燈字節(jié)清零,即空閑;③根據(jù)需要設(shè)備中斷使能位;④初始化狀態(tài)置為0x12345678。386EX對(duì)輸出緩沖區(qū)進(jìn)行初始化,順序如下:①輸出數(shù)據(jù)包準(zhǔn)備好狀態(tài)字節(jié)清零;②信號(hào)燈字節(jié)清零,即空閑狀態(tài);③根據(jù)需要設(shè)備中斷使能位;④初始化狀態(tài)置為0x12345678。
(2)信號(hào)燈和狀態(tài)字節(jié)的定義及操作
為了保證雙邊CPU都充分發(fā)揮其作用,發(fā)生在NP104板上雙口RAM的數(shù)據(jù)通信,不采用阻塞式的握手線方式,而是采用非阻塞式的信號(hào)燈的通信方式。基本操作原則為:當(dāng)CPU要對(duì)某一緩沖區(qū)數(shù)據(jù)進(jìn)行讀或?qū)懖僮鲿r(shí),需首先檢查相應(yīng)的信號(hào)燈字節(jié),若信號(hào)燈處于空閑,則把信號(hào)燈設(shè)置為忙。之后,就可對(duì)相應(yīng)緩沖區(qū)進(jìn)行操作了,操作完成后,再把信號(hào)燈設(shè)置為空閑。如果僅僅是查詢狀態(tài),不需要操作信號(hào)燈。對(duì)緩沖區(qū)進(jìn)行任何操作的前提是緩沖區(qū)的初始化狀態(tài)字(長(zhǎng)整型)已被設(shè)置為0x12345678。
(3)系統(tǒng)主CPU與386EX數(shù)據(jù)通信過程
在PC104系統(tǒng)主CPU與NP104通信過程中,主CPU與386EX通過雙口RAM進(jìn)行數(shù)據(jù)的收發(fā)工作。系統(tǒng)CPU向輸出緩沖寫入數(shù)據(jù),則386EX從輸出緩沖區(qū)讀取數(shù)據(jù)。相應(yīng)地,386EX從網(wǎng)絡(luò)中接收數(shù)據(jù)并寫放輸入緩沖區(qū)中,然后,系統(tǒng)CPU從輸入緩沖區(qū)中讀取數(shù)據(jù)。這里,輸入及輸出緩沖區(qū)都是相對(duì)于系統(tǒng)主CPU而言的。
(4)中斷使能字節(jié)及使用
NP104卡支持主CPU采用中斷方式來讀取輸入緩沖區(qū)的數(shù)據(jù),之前主CPU需進(jìn)行設(shè)置相應(yīng)的中斷使能位為1的操作。當(dāng)386EX把RcvDatRdy置1時(shí),NP104卡有專門的硬件邏輯檢測(cè)這一操作,從而設(shè)置對(duì)主CPU的中斷請(qǐng)求線IRQ#為1;當(dāng)主CPU把RcvDatRdy清0時(shí),NP104卡將使中斷請(qǐng)求線IRQ#復(fù)0。相應(yīng)地,386EX也可以采用中斷方式來讀取輸出緩沖區(qū)的數(shù)據(jù),之間386EX需進(jìn)行設(shè)置相應(yīng)的中斷使能位1的操作。當(dāng)主CPU把SndDatRdy置1時(shí),NP104卡有專門的硬件邏輯檢測(cè)這一操作,并設(shè)置對(duì)386EX的中斷請(qǐng)求線INT3(IRQ7)為1;當(dāng)386EX把SndDatTdy清0時(shí),NP104卡將使中斷請(qǐng)求線INT3復(fù)為0。
(5)資源分配說明
雙口RAM在386EX的存儲(chǔ)空間映射區(qū)域?yàn)锳8000H~A8FFFH;雙口RAM在PC104空間映射區(qū)域?yàn)镈8000H~D8FFFH;512K電子盤的頁地址寄存器口地址為0X300H。
3 模塊驅(qū)動(dòng)程序設(shè)計(jì)及測(cè)試
嵌入式應(yīng)用軟件典型的開發(fā)方式是“宿主機(jī)/目標(biāo)機(jī)”方式。首先,利用宿主機(jī)上豐富的資源及良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件。
然后,通過串行口或網(wǎng)絡(luò)將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上。最后,目標(biāo)機(jī)在特定的環(huán)境下運(yùn)行。
PC104正常工作必須要有驅(qū)動(dòng)程序的支持。此驅(qū)動(dòng)程序采用ANSI C語言編寫,由于系統(tǒng)PC兼容的程序運(yùn)行環(huán)境,因此可以充分利用PC上現(xiàn)有的廉價(jià)軟件資源,而無需專門的開發(fā)調(diào)試系統(tǒng)。程序在Borland C3.0集成開發(fā)環(huán)境下實(shí)現(xiàn)。通過與封裝好的TCP/IP協(xié)議棧的鏈接,NP104提供了雙口RAM的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序由包含幾個(gè)源文件的工程文件通過編譯連接TCP/IP協(xié)議棧而生成.EXE文件,通過BC遠(yuǎn)程下載到NP104硬件系統(tǒng)的電子盤中。系統(tǒng)BIOS對(duì)此.EXE文件進(jìn)行調(diào)用,一旦嵌入式擴(kuò)展模塊的設(shè)備正常運(yùn)行,系統(tǒng)就具備了網(wǎng)絡(luò)通信能力,其基本的程序流程框圖如圖2所示。由此可見,在系統(tǒng)正常工作狀態(tài)下,NP104一直處于循環(huán)檢查以太網(wǎng)及中斷響應(yīng)主系統(tǒng)命令的狀態(tài),以保證主系統(tǒng)設(shè)備與網(wǎng)絡(luò)的正常通信。相應(yīng)地,對(duì)于主系統(tǒng)而言,NP104的接口驅(qū)動(dòng)程序包括12個(gè)功能調(diào)用,即雙口RAM初始化、初始化以太網(wǎng)接口、建立與關(guān)閉TCP連接、讀取TCP/IP網(wǎng)絡(luò)接口數(shù)據(jù)及發(fā)送數(shù)據(jù)至TCP/IP網(wǎng)絡(luò)接口等功能。本系統(tǒng)中的軟件是在基于DOS操作系統(tǒng)之上運(yùn)行的,另外本系統(tǒng)亦可提供基于多任務(wù)RTOS如VRTX、DeltaOS的應(yīng)用環(huán)境。
系統(tǒng)測(cè)試時(shí),NP104與PC104主板構(gòu)成基本環(huán)境,NP104與局域網(wǎng)相接,PC104主板上的測(cè)試程序(采用BC編寫)通過調(diào)用NP104接口程序,與LAN上的上位機(jī)進(jìn)行通信。同時(shí),在LAN上連接上位PC機(jī),運(yùn)行相應(yīng)的測(cè)試程序(采用VC編寫),以檢驗(yàn)NP104的通信功能。在系統(tǒng)測(cè)試過程中,盡可能地考慮了通信過程中可能出現(xiàn)的各種異常情況,并采取了相應(yīng)的處理措施。比如在通信過程中,NP104運(yùn)行異常中止并重新復(fù)位運(yùn)行后,此時(shí)PC104能夠及時(shí)檢查到NP104的復(fù)位信息;另外,當(dāng)PC104主機(jī)出現(xiàn)異常重新啟動(dòng)后,可使用InitNP104()函數(shù)重新啟動(dòng)NP104。在此函數(shù)中,通過軟件的方式實(shí)現(xiàn)了硬件的復(fù)位,以確保NP104正常通信。
結(jié)束語
利用Intel嵌入式微處理器386EX設(shè)計(jì)的基于PC104總線的智能網(wǎng)絡(luò)擴(kuò)展模塊可以滿足基于PC104總線或工業(yè)PC的智能電子設(shè)備的快速上網(wǎng)需求,在中國(guó)電力科學(xué)研究院電力電子公司的現(xiàn)場(chǎng)應(yīng)用中,利用此方法設(shè)計(jì)的模塊已能正常運(yùn)行。隨著嵌入式應(yīng)用的日益深入,各種現(xiàn)場(chǎng)應(yīng)用對(duì)高性能及實(shí)時(shí)性的求也不斷增加,RTOS將在嵌入式系統(tǒng)設(shè)計(jì)中占據(jù)主導(dǎo)地位,嵌入式Linux也將在嵌入式系統(tǒng)中得到越來越廣泛的應(yīng)用;赑owerPC、MIPS、StrongARM微處理器的產(chǎn)品也將不斷出現(xiàn)在未來的現(xiàn)場(chǎng)應(yīng)用中。





