主機(jī)環(huán)境下高速fc總線數(shù)據(jù)接收及緩沖方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)通信技術(shù),具體涉及通信網(wǎng)絡(luò)中一種主機(jī)環(huán)境下高速FC總線數(shù)據(jù)接收及緩沖方法。
【背景技術(shù)】
[0002]在通信系統(tǒng)開(kāi)發(fā)過(guò)程中,需要實(shí)現(xiàn)將接收到的高速FC總線數(shù)據(jù)提交主機(jī)應(yīng)用進(jìn)行處理。FC總線傳輸速率在1.0625Gbps以上,但很多主機(jī)應(yīng)用需要實(shí)現(xiàn)的是低速數(shù)據(jù)處理,如將接收到FC消息數(shù)據(jù)發(fā)送至CAN、1553B、RS422、以太網(wǎng)等傳輸速率比FC總線低很多的網(wǎng)絡(luò)上,這就容易造成由于主機(jī)無(wú)法及時(shí)處理而導(dǎo)致的FC原始數(shù)據(jù)丟失。因此,為了避免這種情況,需要提供一種高速FC總線數(shù)據(jù)接收及緩沖的實(shí)現(xiàn)方法。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是,提供一種主機(jī)環(huán)境下高速FC總線數(shù)據(jù)接收及緩沖方法,避免高速FC總線數(shù)據(jù)在低速主機(jī)應(yīng)用過(guò)程中的數(shù)據(jù)丟失。
[0004]本發(fā)明的技術(shù)解決方案是,
[0005]主機(jī)環(huán)境下高速FC總線數(shù)據(jù)接收及緩沖方法,其特殊之處在于:包括以下步驟:
[0006]I】將FC接口單元的主機(jī)接口與主機(jī)單元的處理器通過(guò)標(biāo)準(zhǔn)總線進(jìn)行互聯(lián);所述FC接口單元還包括與主機(jī)接口相連的DMA引擎、DMA控制寄存器、中斷管理寄存器和接收管理邏輯,以及與接收管理邏輯相連的接收管理寄存器組,DMA引擎與DMA控制寄存器連接,DMA引擎還與接收管理邏輯連接;所述接收管理寄存器組包括消息ID寄存器、FC消息接收緩沖區(qū)頭指針和FC消息接收緩沖區(qū)尾指針;
[0007]2】處理器對(duì)主機(jī)接口進(jìn)行初始化操作;處理器通過(guò)主機(jī)接口對(duì)DMA控制寄存器進(jìn)行配置,并根據(jù)配置信息在主機(jī)單元的存儲(chǔ)器內(nèi)部建立FC消息接收緩沖區(qū)和環(huán)形緩沖區(qū);
[0008]3】FC接口單元的接收管理邏輯判斷是否有新的FC消息數(shù)據(jù)發(fā)來(lái);
[0009]4】若有新的FC消息數(shù)據(jù)信息發(fā)來(lái),接收管理邏輯啟動(dòng)DMA引擎,將接收到的FC消息數(shù)據(jù)由主機(jī)接口經(jīng)標(biāo)準(zhǔn)總線寫(xiě)入主機(jī)單元存儲(chǔ)器內(nèi)的FC消息接收緩沖區(qū),中斷管理寄存器經(jīng)主機(jī)接口向處理器上報(bào)FC消息接收中斷,更新對(duì)應(yīng)的FC消息接收緩沖區(qū)尾指針,繼續(xù)步驟5】;若未接收到FC消息數(shù)據(jù),則重復(fù)步驟3】;
[0010]5】處理器響應(yīng)FC消息接收中斷,通過(guò)讀取接收管理寄存器組中的消息ID寄存器判斷當(dāng)前接收到的是哪一條FC消息數(shù)據(jù),根據(jù)FC消息接收緩沖區(qū)頭指針,從對(duì)應(yīng)的FC消息接收緩沖區(qū)讀取接收到的FC消息數(shù)據(jù)并寫(xiě)入環(huán)形緩沖區(qū),更新當(dāng)前FC消息接收緩沖區(qū)頭指針和環(huán)形緩沖區(qū)尾指針;環(huán)形緩沖區(qū)內(nèi)的數(shù)據(jù)等待應(yīng)用處理;
[0011]6】判斷主機(jī)單元的處理器是否具備應(yīng)用處理?xiàng)l件;
[0012]7】若主機(jī)單元的處理器具備應(yīng)用處理?xiàng)l件,則轉(zhuǎn)步驟8】;若不具備應(yīng)用處理?xiàng)l件,則重復(fù)步驟6】;
[0013]8】處理器查詢環(huán)形緩沖區(qū)頭指針和環(huán)形緩沖區(qū)尾指針,根據(jù)環(huán)形緩沖區(qū)頭指針讀取環(huán)形緩沖區(qū)內(nèi)待處理的FC消息數(shù)據(jù),并將該數(shù)據(jù)提交給相應(yīng)的主機(jī)應(yīng)用處理,更新環(huán)形緩沖區(qū)頭指針。
[0014]上述FC消息接收緩沖區(qū)的大小為FC最大幀長(zhǎng),采用固定緩沖深度,所述FC消息接收緩沖區(qū)的數(shù)量與FC消息數(shù)據(jù)的數(shù)量一致。
[0015]DMA控制寄存器包括DMA源地址寄存器、DMA目的地址寄存器、DMA數(shù)據(jù)長(zhǎng)度寄存器。
[0016]上述環(huán)形緩沖區(qū)的大小為單個(gè)FC消息數(shù)據(jù)最大幀長(zhǎng),用以存放多個(gè)FC消息接收緩沖區(qū)內(nèi)部主機(jī)無(wú)法及時(shí)處理的數(shù)據(jù)。
[0017]上述主機(jī)接口為PCI或PCIe或Rapid1標(biāo)準(zhǔn)總線接口。
[0018]本發(fā)明的優(yōu)點(diǎn)是:
[0019]主動(dòng)DMA方式共享主機(jī)存儲(chǔ)器,實(shí)現(xiàn)FC消息數(shù)據(jù)高速接收:FC消息接收緩沖區(qū)位于主機(jī)存儲(chǔ)器,通過(guò)主動(dòng)DMA方式共享主機(jī)存儲(chǔ)空間,F(xiàn)C接口與處理器采用高速標(biāo)準(zhǔn)串行總線進(jìn)行互聯(lián),通過(guò)主動(dòng)DMA方式共享主機(jī)存儲(chǔ)器,將接收到的FC消息DMA寫(xiě)入主機(jī)存儲(chǔ)器中對(duì)應(yīng)的FC消息接收緩沖區(qū),實(shí)現(xiàn)FC消息數(shù)據(jù)高速接收;
[0020]基于標(biāo)準(zhǔn)主機(jī)接口設(shè)計(jì):FC接口與處理器采用高速標(biāo)準(zhǔn)串行總線進(jìn)行耦合,提高FC總線接口的集成開(kāi)發(fā)與兼容性;
[0021]建立特有緩沖機(jī)制:建立主機(jī)環(huán)境下數(shù)據(jù)緩沖機(jī)制,實(shí)現(xiàn)高速FC總線數(shù)據(jù)緩沖,保證提交應(yīng)用處理數(shù)據(jù)的完整性。
【附圖說(shuō)明】
[0022]圖1是主機(jī)環(huán)境下高速FC總線數(shù)據(jù)接收及緩沖實(shí)現(xiàn)框圖;
[0023]圖2是主機(jī)環(huán)境下高速FC總線數(shù)據(jù)接收管理流程圖。
【具體實(shí)施方式】
[0024]下面結(jié)合附圖對(duì)實(shí)施方式進(jìn)行具體說(shuō)明。
[0025]首先對(duì)實(shí)現(xiàn)架構(gòu)進(jìn)行介紹,如圖1所示:
[0026]主機(jī)環(huán)境下高速FC總線數(shù)據(jù)接收管理是通過(guò)建立在FC接口單元與主機(jī)單元上的專(zhuān)有機(jī)制進(jìn)行實(shí)現(xiàn)。
[0027]FC接口單元包括主機(jī)接口,以及與主機(jī)接口連接的DMA引擎、DMA控制寄存器、中斷管理寄存器和接收管理邏輯,以及與接收管理邏輯連接的接收管理寄存器組,DMA引擎與DMA控制寄存器和接收管理邏輯連接;接收管理寄存器組包括消息ID寄存器、FC消息接收緩沖區(qū)頭指針和FC消息接收緩沖區(qū)尾指針。
[0028]主機(jī)單元包括處理器以及存儲(chǔ)器,所述存儲(chǔ)器內(nèi)部開(kāi)辟有FC消息接收緩沖區(qū)和環(huán)形緩沖區(qū);
[0029]將FC接口單元的主機(jī)接口與主機(jī)單元的處理器通過(guò)標(biāo)準(zhǔn)總線PCIe或Rapdi1或PCI進(jìn)行互聯(lián)。
[0030]FC接口單元內(nèi)部設(shè)計(jì)接收管理邏輯,實(shí)現(xiàn)對(duì)FC消息數(shù)據(jù)接收的管理和控制。
[0031 ] FC接口單元集成DMA引擎,并設(shè)計(jì)DMA控制寄存器,通過(guò)主動(dòng)DMA方式實(shí)現(xiàn)共享主機(jī)單元的存儲(chǔ)器,將接收到的FC消息數(shù)據(jù)DMA寫(xiě)入主機(jī)單元的存儲(chǔ)器中的FC消息接收緩沖區(qū),實(shí)現(xiàn)FC接口數(shù)據(jù)的高速收發(fā)。
[0032]DMA控制寄存器包括DMA源地址寄存器、DMA目的地址寄存器、DMA數(shù)據(jù)長(zhǎng)度寄存器。處理器在對(duì)FC接口初始化過(guò)程中,通過(guò)主機(jī)接口對(duì)DMA控制寄存器進(jìn)行配置。當(dāng)接收到FC消息數(shù)據(jù)時(shí),接收管理邏輯啟動(dòng)DMA引擎。DMA引擎根據(jù)DMA控制寄存器中的源地址、目的地址、數(shù)據(jù)長(zhǎng)度信息、FC消息數(shù)據(jù)ID信息以及當(dāng)前FC消息接收緩沖區(qū)頭尾指針信息,計(jì)算當(dāng)前DMA操作的目的地址,將接收到的FC消息數(shù)據(jù)DMA寫(xiě)入到當(dāng)前消息對(duì)應(yīng)的主機(jī)存儲(chǔ)器內(nèi)部的FC消息接收緩沖區(qū)。待DMA發(fā)送完畢,接收管理邏輯更新當(dāng)前FC消息接收緩沖區(qū)的尾指針,向處理器上報(bào)FC消息接收中斷。由于標(biāo)準(zhǔn)總線上DMA操作提供的高帶寬數(shù)據(jù)傳輸,保證了從FC接口到FC消息接收緩沖區(qū)過(guò)程中FC消息數(shù)據(jù)的高速接收。
[0033]接收管理寄存器組包括與η個(gè)FC消息數(shù)據(jù)對(duì)應(yīng)的η組接收緩沖區(qū)頭指針和η組接收緩沖區(qū)尾指針;處理器通過(guò)讀取消息