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