- 相關(guān)推薦
在Windows2000下用多線程實(shí)現(xiàn)1394串行總線通信
摘 要:基于Windows2000環(huán)境開(kāi)發(fā)了1394主控機(jī)與1394設(shè)備機(jī)間進(jìn)行串行總線通信的軟硬件系統(tǒng),其中采用了多線程技術(shù),并利用臨界區(qū)實(shí)現(xiàn)線程間共享資源的同步,從而有效地解決了串行通信中的實(shí)時(shí)響應(yīng)問(wèn)題,降低了數(shù)據(jù)的丟失率,提高了系統(tǒng)的可靠性。
關(guān)鍵詞:多線程;1394總線;線程同步
1 引言
為了便于LS-1394物理層、鏈路層芯片設(shè)計(jì)課題的研究,我們采用FPGA和ISA總線開(kāi)發(fā)了基于TI公司的TSB41AB3和TSB12LV01的ISA-1394的1394總線接口卡,并在Windows2000環(huán)境下開(kāi)發(fā)了一套利用多線程技術(shù)實(shí)現(xiàn)1394主控機(jī)與1394設(shè)備機(jī)之間進(jìn)行串行通信的軟件系統(tǒng)。
2 硬件部分
硬件部分主要包括:1394主控機(jī)、1394設(shè)備機(jī)、PCI-1394卡、ISA-1394卡。其中,PCI-1394卡是TI公司的1394總線接口芯片控制卡,該卡插在1394主控機(jī)的PCI插槽中;ISA-1394卡是利用一塊型號(hào)為EPM7256AETC144-5的FPGA、一塊TI公司的TSB12LV01鏈路層芯片和一塊TSB41AB3物理層芯片自行設(shè)計(jì)的1394總線接口芯片控制卡,該卡插在1394設(shè)備機(jī)的ISA插槽中。1394主控機(jī)和1394設(shè)備機(jī)之間通過(guò)1394接口進(jìn)行串行通信,傳輸介質(zhì)為1394線纜。硬件結(jié)構(gòu)圖如圖1所示。
3 軟件部分
軟件設(shè)計(jì)主要包括1394主控機(jī)端和1394設(shè)備機(jī)端兩大部分,由于1394主控機(jī)端有現(xiàn)成的demo應(yīng)用程序,所以軟件設(shè)計(jì)主要針對(duì)1394設(shè)備機(jī)端。1394設(shè)備機(jī)端的編程環(huán)境是WinDriver 5.0 和VC++6.0。
3.1軟件設(shè)計(jì)思想
1394串行總線有兩種通信方式:等時(shí)通信和異步通信。異步通信采用的是請(qǐng)求/應(yīng)答模式,數(shù)據(jù)傳輸可靠性較高,因此這里主要討論異步通信。1394串行總線異步通信的原理為:發(fā)送數(shù)據(jù)包時(shí),等待發(fā)送器空閑,將數(shù)據(jù)包寫到1394鏈路層芯片的發(fā)送FIFO中發(fā)送出去;接收數(shù)據(jù)包時(shí),一旦有數(shù)據(jù)包到達(dá),接收器會(huì)將數(shù)據(jù)包放到1394鏈路層芯片的接收FIFO,接收到數(shù)據(jù)包后必須立即發(fā)送一個(gè)應(yīng)答包,否則,對(duì)方會(huì)重發(fā)此數(shù)據(jù)包,直到重發(fā)次數(shù)到。需注意的是,用戶必須自行訪問(wèn)接收FIFO查看是否有數(shù)據(jù)包并及時(shí)地取出數(shù)據(jù)包,否則就會(huì)使接收FIFO溢出,丟失數(shù)據(jù),造成通信出錯(cuò)。
在串行通信程序設(shè)計(jì)中,通常采用定時(shí)查詢或中斷來(lái)解決上述問(wèn)題,其中采用中斷的方法比定時(shí)查詢法擁有更高的工作效率和可靠性,因此本系統(tǒng)采用中斷法來(lái)完成1394串行總線的數(shù)據(jù)通信。
為了實(shí)現(xiàn)數(shù)據(jù)處理和數(shù)據(jù)接收及發(fā)送的分離,本系統(tǒng)引入了多線程技術(shù)。在應(yīng)用程序的主線程之外再創(chuàng)建一個(gè)用戶線程,即中斷處理線程,在中斷處理線程中實(shí)現(xiàn)數(shù)據(jù)包的接收和發(fā)送。如果接收中斷到來(lái),中斷處理線程就負(fù)責(zé)取出接收FIFO中的數(shù)據(jù),放到用戶定義的接收緩沖區(qū)rBuf中;如果發(fā)送中斷到來(lái),中斷處理線程就負(fù)責(zé)從用戶定義的發(fā)送緩沖區(qū)sBuf中取出數(shù)據(jù)放到發(fā)送FIF
[1] [2] [3] [4] [5]
【在Windows下用多線程實(shí)現(xiàn)1394串行總線通信】相關(guān)文章:
基于USB總線通信數(shù)據(jù)采集器的設(shè)計(jì)與實(shí)現(xiàn)04-26
總線通信錯(cuò)誤引發(fā)的故障04-26
基于PCI總線的多路數(shù)據(jù)總線接口設(shè)計(jì)與實(shí)現(xiàn)04-28
航空電子總線測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)04-29
多通道俄制軍用串行總線FPGA的IP核設(shè)計(jì)04-27
IEEE 1394應(yīng)用于航空電子系統(tǒng)圖像通信的研究04-29
基于PCI總線數(shù)據(jù)分路/發(fā)送機(jī)制及實(shí)現(xiàn)04-30
隊(duì)列與多線程技術(shù)在交通監(jiān)控系統(tǒng)通信軟件中的應(yīng)用04-26
基于CAN總線的機(jī)載通信系統(tǒng)協(xié)議設(shè)計(jì)04-30
實(shí)時(shí)通信在調(diào)車作業(yè)中的設(shè)計(jì)與實(shí)現(xiàn)04-27