基于異步非透明橋的數(shù)據(jù)傳輸方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)通訊技術(shù),尤其涉及一種基于異步非透明橋的數(shù)據(jù)傳輸方法及系統(tǒng)。
【背景技術(shù)】
[0002]在兩個(gè)控制器之間的通訊,目前常用的是同步傳輸?shù)姆绞?,但是由于同步傳輸?shù)拇鷥r(jià)很高,有著CPU利用率過高以及通訊時(shí)延過高的問題,而較高的通訊時(shí)延又會(huì)影響整個(gè)通訊的并發(fā)及吞吐量,
【發(fā)明內(nèi)容】
[0003]基于上述問題,本發(fā)明提供一種基于異步非透明橋的數(shù)據(jù)傳輸方法及系統(tǒng),該方法通過在整個(gè)通訊過程中使用異步調(diào)用,降低了計(jì)算資源的開銷和通訊的時(shí)延。
[0004]根據(jù)上述目的,本發(fā)明提供了一種基于異步非透明橋的數(shù)據(jù)傳輸方法,其特征在于,所述方法包括:
[0005]第一終端設(shè)備初始化非透明橋NTB通訊模塊;
[0006]使用注冊函數(shù)向所述NTB通訊模塊注冊通訊通道,與第二終端設(shè)備建立通訊連接;
[0007]通過所述通訊通道,所述第一終端設(shè)備向所述第二終端設(shè)備發(fā)送數(shù)據(jù)。
[0008]其中,所述第一終端設(shè)備初始化所述NTB通訊模塊的過程具體包括:
[0009]申請所述NTB通訊模塊的接收緩沖區(qū);
[0010]將所述緩沖接收區(qū)映射到基址寄存器;
[0011]初始化門鈴寄存器、中斷處理函數(shù)和數(shù)據(jù)寄存器;
[0012]創(chuàng)建發(fā)送線程。
[0013]其中,所述第一終端設(shè)備向所述第二終端設(shè)備發(fā)送待傳輸數(shù)據(jù)的過程具體包括:
[0014]調(diào)用發(fā)送函數(shù),申請記錄結(jié)構(gòu)以保存發(fā)送請求的各項(xiàng)參數(shù),并將所述記錄結(jié)構(gòu)插入到發(fā)送隊(duì)列中,喚醒所述發(fā)送線程;
[0015]所述發(fā)送線程根據(jù)所述發(fā)送隊(duì)列中的發(fā)送請求發(fā)送數(shù)據(jù)并更新所述第二終端設(shè)備的數(shù)據(jù)寄存器的已發(fā)送數(shù)據(jù)通道標(biāo)識,然后觸發(fā)所述門鈴寄存器并將所述發(fā)送線程置于休眠狀態(tài);
[0016]在所述中斷處理函數(shù)接收到所述第二終端設(shè)備的中斷信號后,從所述門鈴寄存器中得知所述數(shù)據(jù)發(fā)送完成,然后喚醒所述發(fā)送線程;
[0017]所述發(fā)送線程查看數(shù)據(jù)發(fā)送完成后的所述第二終端設(shè)備的數(shù)據(jù)寄存器中已讀取數(shù)據(jù)的通道標(biāo)識,并對與所述數(shù)據(jù)發(fā)送完成后的所述第二終端設(shè)備的數(shù)據(jù)寄存器中已讀取數(shù)據(jù)的通道標(biāo)識對應(yīng)的通道標(biāo)識的所有發(fā)送請求調(diào)用數(shù)據(jù)回調(diào)函數(shù)進(jìn)行處理。
[0018]其中,所述方法還包括:
[0019]當(dāng)所述第一終端設(shè)備檢測到所述第二終端設(shè)備斷開或處于設(shè)備切換狀態(tài)時(shí),所述NTB通訊模塊調(diào)用所有未發(fā)送完成的數(shù)據(jù)對應(yīng)的數(shù)據(jù)回調(diào)函數(shù)通知所述第一終端設(shè)備發(fā)送數(shù)據(jù)失敗,并調(diào)用所有注冊的通訊通道的事件回調(diào)函數(shù)進(jìn)行事件通知。
[0020]根據(jù)本發(fā)明的另一個(gè)方面,提供一種基于異步非透明橋的數(shù)據(jù)傳輸方法,其特征在于,所述方法包括:
[0021 ] 第二終端設(shè)備初始化非透明橋NTB通訊模塊;
[0022]使用注冊函數(shù)向所述NTB通訊模塊注冊通訊通道,與第一終端設(shè)備建立通訊連接;
[0023]通過所述通訊通道,所述第二終端設(shè)備接收所述第一終端設(shè)備發(fā)送的數(shù)據(jù)。
[0024]其中,所述第一終端設(shè)備初始化所述NTB通訊模塊的過程具體包括:
[0025]申請所述NTB通訊模塊的接收緩沖區(qū);
[0026]將所述緩沖接收區(qū)映射到基址寄存器;
[0027]初始化門鈴寄存器、中斷處理函數(shù)、環(huán)形緩沖區(qū)和數(shù)據(jù)寄存器;
[0028]創(chuàng)建接收線程。
[0029]其中,所述第二終端設(shè)備接收所述第一終端設(shè)備發(fā)送的待傳輸數(shù)據(jù)的過程具體包括:
[0030]所述第二終端設(shè)備的中斷處理函數(shù)收到所述第一終端設(shè)備的中斷信號后,從所述門鈴寄存器中得知收到數(shù)據(jù),喚醒所述第二終端設(shè)備的接收線程;
[0031]所述接收線程查看所述數(shù)據(jù)寄存器中所述第一終端設(shè)備的已發(fā)送數(shù)據(jù)的通道標(biāo)識,從所述環(huán)形緩沖區(qū)中讀取對應(yīng)的數(shù)據(jù),并根據(jù)所讀取的數(shù)據(jù)頭部的通道標(biāo)識調(diào)用對應(yīng)的數(shù)據(jù)回調(diào)函數(shù)進(jìn)行數(shù)據(jù)處理;
[0032]所述數(shù)據(jù)處理完成之后,更新所述數(shù)據(jù)寄存器的已讀取數(shù)據(jù)的通道標(biāo)識,觸發(fā)門鈴寄存器。
[0033]根據(jù)本發(fā)明的又一個(gè)方面,提供一種基于異步非透明橋的數(shù)據(jù)發(fā)送裝置,其特征在于,所述裝置包括:
[0034]初始化單元,用于初始化非透明橋NTB通訊模塊;
[0035]通道注冊單元,用于使用注冊函數(shù)向所述NTB通訊模塊注冊通訊通道,并與第二終端設(shè)備建立通訊連接;
[0036]數(shù)據(jù)發(fā)送單元,用于通過所述通訊通道,向所述第二終端設(shè)備發(fā)送數(shù)據(jù)。
[0037]根據(jù)本發(fā)明的又另一個(gè)方面,提供一種基于異步非透明橋的數(shù)據(jù)接收裝置,其特征在于,所述裝置包括:
[0038]初始化單元,用于初始化非透明橋NTB通訊模塊;
[0039]通道注冊單元,用于使用注冊函數(shù)向所述NTB通訊模塊注冊通訊通道,與第一終端設(shè)備建立通訊連接;
[0040]數(shù)據(jù)接收單元,用于通過所述通訊通道,接收所述第一終端設(shè)備發(fā)送的數(shù)據(jù)。
[0041]根據(jù)本發(fā)買那個(gè)的又另一個(gè)方面,提供一種基于異步非透明橋的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述系統(tǒng)包括上述的數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置。
[0042]本發(fā)明的基于異步非透明橋的數(shù)據(jù)傳輸方法及系統(tǒng),采用異步通訊架構(gòu),使得整個(gè)通訊過程對于數(shù)據(jù)的發(fā)送和接收都可以進(jìn)行完全的異步處理,降低計(jì)算資源開銷和通訊時(shí)延,并通過環(huán)形緩沖區(qū)的方式充分利用有限的NTB通訊緩沖區(qū),使得多個(gè)數(shù)據(jù)的發(fā)送可以并發(fā)執(zhí)行,擴(kuò)大了對整個(gè)緩沖器的利用率,增加了并發(fā)處理能力,進(jìn)一步提高了通訊效率。
【附圖說明】
[0043]通過參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理解為對本發(fā)明進(jìn)行任何限制,在附圖中:
[0044]圖1示出了本發(fā)明的第一實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的流程圖。
[0045]圖2示出了本發(fā)明的第一實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的步驟Sll的流程圖。
[0046]圖3示出了本發(fā)明的第一實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的步驟S13的流程圖。
[0047]圖4示出了本發(fā)明的第二實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的流程圖。
[0048]圖5示出了本發(fā)明的第二實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的步驟S22的流程圖。
[0049]圖6示出了本發(fā)明的第二實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的步驟S23的流程圖。
[0050]圖7示出了本發(fā)明的第三實(shí)施例的基于異步非透明橋的數(shù)據(jù)發(fā)送裝置的結(jié)構(gòu)框圖。
[0051]圖8示出了本發(fā)明的第四實(shí)施例的基于異步非透明橋的數(shù)據(jù)接收裝置的結(jié)構(gòu)框圖。
[0052]圖9示出了本發(fā)明的第五實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)框圖
【具體實(shí)施方式】
[0053]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0054]本實(shí)施例中,第一終端設(shè)備和第二終端設(shè)備使用注冊函數(shù)向NTB通訊模塊注冊一個(gè)或多個(gè)通訊通道,然后通過注冊的通訊通道進(jìn)行第一終端設(shè)備和第二終端設(shè)備之間的數(shù)據(jù)傳輸。
[0055]下面將結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述。
[0056]實(shí)施例一
[0057]圖1示出了本發(fā)明的第一實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的流程圖。
[0058]參照圖1,本實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法如下:
[0059]Sll,第一終端設(shè)備初始化非透明橋NTB通訊模塊;
[0060]圖2示出了本發(fā)明的第一實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的步驟Sll的流程圖。
[0061 ] 如圖2所示,該步驟Sll具體包括:
[0062] S111、申請所述NTB通訊模塊的接收緩沖區(qū);
[0063]S112、將所述緩沖接收區(qū)映射到基址寄存器;
[0064]S113、初始化門鈴寄存器、中斷處理函數(shù)和數(shù)據(jù)寄存器;
[0065]S114、創(chuàng)建發(fā)送線程。
[0066]S12,使用注冊函數(shù)向所述NTB通訊模塊注冊通訊通道,與第二終端設(shè)備建立通訊連接;
[0067]在注冊通道的過程中,使用的參數(shù)有通道地址ID,處理數(shù)據(jù)發(fā)送接收異步的數(shù)據(jù)回調(diào)函數(shù)data_callback,處理鏈接斷開事件通知的事件回調(diào)函數(shù)event_calIback等。
[0068]S13,通過所述通訊通道,所述第一終端設(shè)備向所述第二終端設(shè)備發(fā)送數(shù)據(jù)。
[0069]圖3示出了本發(fā)明的第一實(shí)施例的基于異步非透明橋的數(shù)據(jù)傳輸方法的步驟S13的流程圖。
[0070]如圖3所示,該步驟S13具體包括:
[0071]S131、調(diào)用發(fā)送函數(shù),申請記錄結(jié)構(gòu)保存發(fā)送請求的各項(xiàng)參數(shù),并將記錄結(jié)構(gòu)其插入到發(fā)送隊(duì)列中,喚醒所述發(fā)送線程;
[0072]S132、所述發(fā)送線程根據(jù)所述發(fā)送隊(duì)列中的發(fā)送請求發(fā)送數(shù)據(jù)并更新所述第二終端設(shè)備的數(shù)據(jù)寄存器的已發(fā)送數(shù)據(jù)通道標(biāo)識,然后觸發(fā)所述門鈴寄存器并將所述發(fā)送線程置于休眠狀態(tài);
[0073]S133、在所述中斷處理函數(shù)接收到所述第二終端設(shè)備的中斷信號后,從所述門鈴寄存器中得知所述數(shù)據(jù)發(fā)送完成,然后喚醒所述發(fā)送線程;
[0074]S134、所述發(fā)送線程查看數(shù)據(jù)發(fā)送完成后的所述第二終端設(shè)備的數(shù)據(jù)寄存器中已讀取數(shù)據(jù)的通道標(biāo)識,并對與所述數(shù)據(jù)發(fā)送完成后的所述第二終端設(shè)備的數(shù)據(jù)寄存器中已讀取數(shù)據(jù)的通道標(biāo)識對應(yīng)的通道標(biāo)識的所有發(fā)送請求調(diào)用數(shù)據(jù)回調(diào)函數(shù)進(jìn)行處理。
[0075]在上述方法中,當(dāng)?shù)谝唤K端設(shè)備檢測到第二終端設(shè)備斷開或設(shè)備正在切換時(shí),所述NTB通訊模塊調(diào)用所有未發(fā)送完成的數(shù)據(jù)對應(yīng)的數(shù)據(jù)回調(diào)函數(shù)data_callback通知所述第一終端設(shè)備發(fā)送數(shù)據(jù)失敗,并調(diào)用所有注冊的通訊通道ID的事件回調(diào)函數(shù)event_callback進(jìn)行事件通知。
[0076]在本實(shí)施例中,在