專利名稱:一種以太網(wǎng)串口驅(qū)動(dòng)單元及窄帶撥號(hào)時(shí)數(shù)據(jù)流的傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無(wú)線通信領(lǐng)域數(shù)據(jù)終端設(shè)備部分,尤其涉及一種以太網(wǎng)串口 驅(qū)動(dòng)單元及窄帶撥號(hào)時(shí)數(shù)據(jù)流的傳輸方法。
背景技術(shù):
在基于嵌入式移動(dòng)通信終端窄帶撥號(hào)的過(guò)程中,大部分是用到ttyX(虛 擬終端設(shè)備文件),比如ttyUSBO, ttySO,來(lái)進(jìn)行撥號(hào)。而使用何種ttyX取 決于采用何種硬件來(lái)控制收發(fā)數(shù)據(jù)流,現(xiàn)有的傳輸模式都是將窄帶數(shù)據(jù)流送 入串口 ,經(jīng)串口流入U(xiǎn)SB (通用串行總線)host controller (主控制器)或 者UART (通用異步收發(fā)器)等硬件實(shí)體;如目前主要流行用USB host controller (主控制器)來(lái)收發(fā)數(shù)據(jù),而使用這種USB主控制器來(lái)進(jìn)行窄帶 撥號(hào)過(guò)程中的數(shù)據(jù)傳輸就必須要為此控制器寫(xiě)一層USB串口驅(qū)動(dòng) (ttyUSB0),該驅(qū)動(dòng)主要的工作就是控制該硬件實(shí)體的數(shù)據(jù)收發(fā),流量控制等。 再如在USB主控制器還沒(méi)有問(wèn)世之前,窄帶撥號(hào)主要通過(guò)UART來(lái)進(jìn)行數(shù) 據(jù)的傳輸,同樣也對(duì)應(yīng)一層串口驅(qū)動(dòng)(ttySO)來(lái)控制該硬件實(shí)體的數(shù)據(jù)收發(fā), 流量控制等。
目前數(shù)據(jù)收發(fā)通道的傳輸速率大大提高,而采用現(xiàn)有的串口驅(qū)動(dòng),如 ttySO/ ttyUSBO配合UART/USB來(lái)進(jìn)行窄帶數(shù)據(jù)傳輸時(shí),不能完好的體現(xiàn)數(shù) 據(jù)收發(fā)通道的速率。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種以太網(wǎng)串口驅(qū)動(dòng)單元及窄帶撥號(hào) 時(shí)數(shù)據(jù)流的傳輸方法,能夠?qū)⒄瓗芴?hào)時(shí)的數(shù)據(jù)傳輸速率大大提升更接近其
理論值。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種以太網(wǎng)串口驅(qū)動(dòng)單元,包括
以太網(wǎng)物理層PHY芯片模塊,以太網(wǎng)介質(zhì)訪問(wèn)控制MAC控制器;還包括 串口控制模塊;
所述以太網(wǎng)PHY芯片用于根據(jù)所述以太網(wǎng)MAC控制器下發(fā)的指示, 從以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送;還用于 從以太網(wǎng)中接收數(shù)據(jù)流并送入到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中;
所述串口控制模塊用于接收從用戶層數(shù)據(jù)通信接口送入的窄帶數(shù)據(jù)流, 將其復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中并封裝為以太網(wǎng)數(shù)據(jù)包,然 后通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊將其發(fā)送;還用于從 以太網(wǎng)PHY芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口窄帶數(shù)據(jù)流,并將其 拆包得到窄帶數(shù)據(jù)流,然后將其送出給用戶。
進(jìn)一步的,串口控制模塊將窄帶數(shù)據(jù)流復(fù)制到以太網(wǎng)MAC控制器的數(shù) 據(jù)緩沖區(qū)中并封裝為以太網(wǎng)數(shù)據(jù)包是指
串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取并加上串口包頭封裝成串口 幀,并將所述串口幀從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū),然后將核心態(tài)緩 沖區(qū)中的串口幀復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中,并加上以太網(wǎng) 包頭封裝為以太網(wǎng)數(shù)據(jù)包。
進(jìn)一步的,串口控制模塊通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯 片模塊將窄帶數(shù)據(jù)流發(fā)送是指
串口控制模塊把以太網(wǎng)MAC控制器的傳輸模式設(shè)為直接內(nèi)存訪問(wèn) DMA傳輸方式,讓CPU停止處理其他任務(wù)的處理,并判斷該所述以太網(wǎng) PHY芯片模塊是否正在進(jìn)行數(shù)據(jù)傳輸,如果沒(méi)在進(jìn)行傳輸則通過(guò)以太網(wǎng) MAC控制器指示以太網(wǎng)PHY芯片模塊開(kāi)始傳輸;如果正在進(jìn)行傳輸則等待。
進(jìn)一步的,所述以太網(wǎng)MAC控制器包括MAC驅(qū)動(dòng)子模塊和寄存器;
所述MAC驅(qū)動(dòng)子模塊用于對(duì)寄存器操作以及和以太網(wǎng)PHY芯片之間 通信接口進(jìn)行定義;
所述寄存器至少包括用于指示傳輸模式的第一寄存器和用于指示傳輸
狀態(tài)的第二寄存器;
所述串口控制模塊把以太網(wǎng)MAC控制器的傳輸模式設(shè)為DMA傳輸方 式是指串口控制模塊通過(guò)MAC驅(qū)動(dòng)子模塊將以太網(wǎng)MAC控制器中的第 一寄存器置為表示"DMA傳輸"的值;
所述串口控制模塊通過(guò)以太網(wǎng)MAC控制器通知以太網(wǎng)PHY芯片模塊 開(kāi)始傳輸是指串口控制模塊通過(guò)MAC驅(qū)動(dòng)子模塊將以太網(wǎng)MAC控制器 中的第二寄存器置為表示"開(kāi)始傳輸"的值。
進(jìn)一步的,所述以太網(wǎng)PHY芯片模塊根據(jù)所述以太網(wǎng)MAC控制器下 發(fā)的指示,從以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā) 送是指以太網(wǎng)PHY芯片模塊監(jiān)視以太網(wǎng)MAC控制器中用于指示傳輸狀 態(tài)的寄存器,發(fā)現(xiàn)其被置為表示"開(kāi)始傳輸"的值時(shí),從以太網(wǎng)MAC控制 器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送。
進(jìn)一步的,所述串口控制模塊包括串口控制MAC層子模塊和串口驅(qū)動(dòng) 層子模塊;
串口控制模塊從以太網(wǎng)PHY芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口 窄帶數(shù)據(jù)流,并將其拆包得到窄帶數(shù)據(jù)流是指串口控制MAC層子模塊判 斷以太網(wǎng)PHY芯片模塊所接收到的數(shù)據(jù)流為以太網(wǎng)串口窄帶流還是IP數(shù)據(jù) 流,如果是IP數(shù)據(jù)流則將其送入IP層協(xié)議棧處理單元;如果為以太網(wǎng)串口 窄帶流則去除以太網(wǎng)包頭得到串口幀,并將串口幀從以太網(wǎng)MAC控制器的 數(shù)據(jù)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)中;然后將核心態(tài)緩沖區(qū)中的串口幀送入串 口驅(qū)動(dòng)層子模塊的數(shù)據(jù)寫(xiě)緩沖區(qū),并通知串口驅(qū)動(dòng)層子模塊讀??;串口驅(qū)動(dòng) 層子模塊讀取串口幀后去除串口包頭,得到窄帶數(shù)據(jù)流。
進(jìn)一步的,串口控制模塊將窄帶數(shù)據(jù)流送出給用戶是指串口控制模塊 將數(shù)據(jù)從設(shè)備文件送出給用戶。
本發(fā)明還提供了一種窄帶撥號(hào)時(shí)數(shù)據(jù)流的發(fā)送方法,包括
A、 將窄帶數(shù)據(jù)流送入串口控制模塊;
B、 串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取,復(fù)制到以太網(wǎng)MAC控
制器的數(shù)據(jù)緩沖區(qū)中并封裝成以太網(wǎng)數(shù)據(jù)包,然后指示以太網(wǎng)PHY芯片模 塊進(jìn)行發(fā)送;
C、以太網(wǎng)PHY芯片模塊在收到發(fā)送數(shù)據(jù)的指示后,從以太網(wǎng)MAC控 制器的數(shù)據(jù)緩沖區(qū)取走所述以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送。
進(jìn)一步的,所述步驟B具體包括
Bl、串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取并加上串口包頭封裝成串 口幀后,從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū);
B2、串口控制模塊將核心態(tài)緩沖區(qū)中的串口幀復(fù)制到以太網(wǎng)MAC控制 器的數(shù)據(jù)緩沖區(qū)中,并加入以太網(wǎng)包頭封裝為以太網(wǎng)數(shù)據(jù)包;
B3、串口控制模塊將以太網(wǎng)MAC控制器的傳輸模式設(shè)為DMA傳輸方 式,讓CPU停止處理其他任務(wù)的處理,并指示以太網(wǎng)PHY芯片模塊進(jìn)行發(fā) 送。
進(jìn)一步的,所述步驟B3中,串口控制模塊指示以太網(wǎng)PHY芯片模塊進(jìn) 行發(fā)送是指
串口控制模塊將以太網(wǎng)MAC控制器中用于指示傳輸狀態(tài)的寄存器置為 表示"開(kāi)始傳輸"的值。
進(jìn)一步的,所述步驟C具體為
以太網(wǎng)PHY芯片模塊監(jiān)視以太網(wǎng)MAC控制器中用于指示傳輸狀態(tài)的 寄存器,發(fā)現(xiàn)其被置為表示"開(kāi)始傳輸,,的值后,從以太網(wǎng)MAC控制器的 數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并通過(guò)以太網(wǎng)向?qū)Χ嗽O(shè)備進(jìn)行發(fā)送。
進(jìn)一步的,所述步驟A具體為
用戶以訪問(wèn)設(shè)備文件的形式將窄帶數(shù)據(jù)流送入串口控制模塊。
本發(fā)明還提供了一種窄帶撥號(hào)時(shí)數(shù)據(jù)流的接收方法,包括
a、 以太網(wǎng)PHY芯片模塊從對(duì)端設(shè)備接收到的數(shù)據(jù)流送入到以太網(wǎng)MAC 控制器的數(shù)據(jù)緩沖區(qū)中;
b、 串口控制模塊將接收到的數(shù)據(jù)流中的以太網(wǎng)串口窄帶數(shù)據(jù)流提取出
來(lái),并將其拆包得到窄帶數(shù)據(jù)流;
c、串口控制模塊將所述窄帶數(shù)據(jù)流送出給用戶。
進(jìn)一步的,所述步驟b具體包括
bl、串口控制模塊判斷所述接收到的數(shù)據(jù)流為以太網(wǎng)串口窄帶數(shù)據(jù)流還 是IP數(shù)據(jù)流,如果為以太網(wǎng)串口窄帶數(shù)據(jù)流則去除以太網(wǎng)包頭得到串口幀, 并將串口幀從以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)[
b2、串口控制模塊將核心態(tài)緩沖區(qū)中的串口幀復(fù)制到用戶態(tài)緩沖區(qū),并 去除串口包頭得到窄帶數(shù)據(jù)流。
進(jìn)一步的,所述步驟c具體包括
串口控制模塊將窄帶數(shù)據(jù)流從設(shè)備文件送出給用戶。
本發(fā)明的技術(shù)方案提供了 一種全新的窄帶數(shù)據(jù)流的傳輸模式,采用基于 以太網(wǎng)串口驅(qū)動(dòng)(ttyETHO)的方法來(lái)控制以太網(wǎng)PHY (物理層)的數(shù)據(jù)傳輸, 能夠成功的適配串口和以太網(wǎng)收發(fā)數(shù)據(jù),并且提高了硬件實(shí)體在窄帶撥號(hào)時(shí) 的數(shù)據(jù)流傳輸速率。
圖l是本發(fā)明的以太網(wǎng)串口驅(qū)動(dòng)單元的具體實(shí)施框圖2是本發(fā)明中窄帶數(shù)據(jù)流經(jīng)過(guò)不同步驟后的數(shù)據(jù)包格式示意圖3是本發(fā)明應(yīng)用實(shí)例中窄帶數(shù)據(jù)流的發(fā)送流程圖4是本發(fā)明應(yīng)用實(shí)例中窄帶數(shù)據(jù)流的接收流程圖。
具體實(shí)施例方式
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說(shuō)明。 本發(fā)明提供了一種以太網(wǎng)串口驅(qū)動(dòng)單元,可以放置在移動(dòng)終端內(nèi),如圖 1所示,包括以太網(wǎng)PHY芯片模塊,以太網(wǎng)MAC (媒體接入控制)控制器模塊及串口控制模塊。
所述以太網(wǎng)PHY芯片模塊是一個(gè)數(shù)據(jù)傳輸模塊,是一個(gè)物理數(shù)據(jù)收發(fā) 通道;其根據(jù)所述以太網(wǎng)MAC控制器下發(fā)的指示進(jìn)行數(shù)據(jù)傳輸。
所述以太網(wǎng)MAC控制器是一個(gè)控制模塊,用于控制以太網(wǎng)PHY芯片 的數(shù)據(jù)傳輸,包括若干寄存器和一MAC驅(qū)動(dòng)子模塊,該MAC驅(qū)動(dòng)子模塊 主要是對(duì)寄存器操作以及和以太網(wǎng)PHY芯片之間通信接口進(jìn)行定義。
所述寄存器至少包括用于指示傳輸模式的第一寄存器和用于指示傳輸 狀態(tài)的第二寄存器。
串口控制模塊是該技術(shù)的核心部分,主要用于處理串口層和MAC控制 器之間的關(guān)系;所述串口控制模塊處于操作系統(tǒng)的核心態(tài),對(duì)用戶層而言, 主要通過(guò)設(shè)備文件的形式來(lái)對(duì)所述其進(jìn)行訪問(wèn);對(duì)系統(tǒng)而言,所述串口控制 模塊在核心態(tài)對(duì)以太網(wǎng)MAC控制器進(jìn)行控制,同時(shí)告之系統(tǒng)該MAC控制 器數(shù)據(jù)傳輸是DMA通道方式,進(jìn)而讓CPU停止處理其他任務(wù)的處理,從 而可以通過(guò)對(duì)以太網(wǎng)MAC控制器進(jìn)行控制進(jìn)而來(lái)控制以太網(wǎng)PHY芯片模 塊的數(shù)據(jù)收發(fā)。更具體的說(shuō)串口控制模塊可以分為兩個(gè)部分來(lái)描述串口驅(qū) 動(dòng)層子模塊和串口控制MAC層子模塊,串口驅(qū)動(dòng)層子模塊是linux內(nèi)核中 一塊非常成熟的技術(shù),可以直接使用,串口控制MAC層子模塊可以認(rèn)為是 MAC控制器和串口驅(qū)動(dòng)層中間的適配層,這層適配層主要是對(duì)MAC控制 器操作。
串口控制模塊用于接收從用戶層數(shù)據(jù)通信接口送入的窄帶數(shù)據(jù)流,將其 復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中并封裝為以太網(wǎng)數(shù)據(jù)包,然后通 過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊將其發(fā)送;還用于從以太 網(wǎng)PHY芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口窄帶數(shù)據(jù)流,并將其拆包 得到窄帶數(shù)據(jù)流,然后將其送出給用戶。
串口控制模塊用于接收從用戶層數(shù)據(jù)通信接口送入的窄帶數(shù)據(jù)流是指 串口驅(qū)動(dòng)層子模塊接收用戶以訪問(wèn)設(shè)備文件(/dev/ttyETHO)的形式所送入的 窄帶數(shù)據(jù)流;可以但不限于將數(shù)據(jù)流送入本串口驅(qū)動(dòng)層子模塊的數(shù)據(jù)讀緩沖 區(qū)中。
串口控制模塊將窄帶數(shù)據(jù)流復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中 并封裝為以太網(wǎng)數(shù)據(jù)包具體是指串口驅(qū)動(dòng)層子模塊將所述窄帶數(shù)據(jù)流進(jìn)行 截取并加上串口包頭封裝成串口幀;串口控制MAC層子^f莫塊將所述串口幀 從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)(也可稱為公用緩沖區(qū)),然后將核心 態(tài)緩沖區(qū)中的串口幀復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中,并加入以 太網(wǎng)包頭封裝為以太網(wǎng)數(shù)據(jù)包。
串口控制模塊通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊將窄 帶數(shù)據(jù)流發(fā)送具體是指串口控制MAC層子模塊把以太網(wǎng)MAC控制器的 傳輸模式設(shè)為DMA (直接內(nèi)存訪問(wèn))傳輸方式,讓CPU停止處理其他任務(wù) 的處理,并判斷該所述以太網(wǎng)PHY芯片模塊是否正在進(jìn)行數(shù)據(jù)傳輸,如果 沒(méi)在進(jìn)行傳輸則通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊開(kāi)始傳 輸;如果正在進(jìn)行傳輸則等待。
串口控制MAC層子才莫塊把以太網(wǎng)MAC控制器的傳輸模式設(shè)為DMA (直接內(nèi)存訪問(wèn))傳輸方式是指串口控制MAC層子模塊通過(guò)所述MAC 驅(qū)動(dòng)子模塊將以太網(wǎng)MAC控制器中的第一寄存器置為表示"DMA傳輸" 的值。
串口控制MAC層子模塊指示以太網(wǎng)PHY芯片模塊進(jìn)行發(fā)送是指串 口控制MAC層子模塊通過(guò)所述MAC驅(qū)動(dòng)子模塊將以太網(wǎng)MAC控制器中 的第二寄存器置為表示"開(kāi)始傳輸"的值。
相應(yīng)的,所述以太網(wǎng)PHY芯片模塊用于監(jiān)視以太網(wǎng)MAC控制器中的 第二寄存器,發(fā)現(xiàn)其被置為表示"開(kāi)始傳輸"的值時(shí),從以太網(wǎng)MAC控制 器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并通過(guò)以太網(wǎng)向?qū)Χ嗽O(shè)備進(jìn)行發(fā)送;還用 于從以太網(wǎng)中接收數(shù)據(jù)流并送入到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中。
串口控制模塊從以太網(wǎng)PHY芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口 窄帶數(shù)據(jù)流,并將其拆包得到窄帶數(shù)據(jù)流具體是指串口控制MAC層子模 塊判斷以太網(wǎng)PHY芯片模塊所接收到的數(shù)據(jù)流為以太網(wǎng)串口窄帶流還是IP 數(shù)據(jù)流,如果是IP數(shù)據(jù)流則將其送入IP層協(xié)議棧處理單元;如果為以太網(wǎng) 串口窄帶流則去除以太網(wǎng)包頭得到串口幀,并將串口幀從以太網(wǎng)MAC控制 器的數(shù)據(jù)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)中;然后將核心態(tài)緩沖區(qū)中的串口幀送
入串口驅(qū)動(dòng)層子模塊的數(shù)據(jù)寫(xiě)緩沖區(qū),并通知串口驅(qū)動(dòng)層子模塊讀??;串口
驅(qū)動(dòng)層子模塊讀取串口幀后去除串口包頭,得到窄帶數(shù)據(jù)流。
串口控制模塊將窄帶數(shù)據(jù)流送出給用戶是指串口驅(qū)動(dòng)層子模塊將數(shù)據(jù)
從用戶層數(shù)據(jù)通信接口 ,也就是從設(shè)備文件送出給用戶。
本發(fā)明還提供了一種窄帶撥號(hào)時(shí)數(shù)據(jù)流的傳輸方法,分為發(fā)送方法和接 收方法兩個(gè)部分。
窄帶撥號(hào)時(shí)數(shù)據(jù)流的發(fā)送方法包括如下步驟
A、 用戶將窄帶數(shù)據(jù)流送入串口控制模塊。
本步驟中,用戶通過(guò)用戶層數(shù)據(jù)通信接口將窄帶數(shù)據(jù)流送入串口控制模 塊,如果用戶層數(shù)據(jù)通信接口為設(shè)備文件形式,則用戶以訪問(wèn)設(shè)備文件 (/dev/ttyETHO)的形式將窄帶數(shù)據(jù)流送入串口控制模塊;可以但不限于送入串 口控制模塊所包含的串口驅(qū)動(dòng)層子模塊的數(shù)據(jù)讀緩沖區(qū)。
B、 串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取,復(fù)制到以太網(wǎng)MAC (介 質(zhì)訪問(wèn)控制層)控制器的數(shù)據(jù)緩沖區(qū)中并封裝成以太網(wǎng)數(shù)據(jù)包,然后指示以 太網(wǎng)PHY (物理層)芯片模塊發(fā)送。
本步驟具體可以包括
Bl、串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取并加上串口包頭封裝成串 口幀后,從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)(也可稱為公用緩沖區(qū))。 所述串口包頭可以同現(xiàn)有技術(shù)中 一致。
本步驟可以具體為串口驅(qū)動(dòng)層子模塊將其數(shù)據(jù)讀緩沖區(qū)中的窄帶數(shù)據(jù) 流進(jìn)行截取并加上串口包頭,封裝成串口幀;串口控制模塊所包含的串口控 制MAC層子模塊將所述串口幀從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)。
B2、串口控制模塊將核心態(tài)緩沖區(qū)中的串口幀復(fù)制到以太網(wǎng)MAC控制 器的數(shù)據(jù)緩沖區(qū)中,并加入以太網(wǎng)包頭封裝為以太網(wǎng)數(shù)據(jù)包。
所述以太網(wǎng)包頭可以同現(xiàn)有4支術(shù)中 一致。
本步驟可以具體為串口控制MAC層子模塊將核心態(tài)緩沖區(qū)中的串口 幀以調(diào)用函數(shù)接口的形式送入以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中,并加入 以太網(wǎng)包頭封裝為以太網(wǎng)數(shù)據(jù)包。
B3、串口控制模塊將以太網(wǎng)MAC控制器的傳輸模式設(shè)為DMA (直接 內(nèi)存訪問(wèn))傳輸方式,讓CPU停止處理其他任務(wù)的處理,并指示以太網(wǎng)PHY 芯片模塊進(jìn)行發(fā)送。
本步驟中,將以太網(wǎng)MAC控制器的傳輸模式設(shè)為DMA (直接內(nèi)存訪 問(wèn))傳輸方式,讓CPU停止處理其他任務(wù)的處理是指串口控制MAC層 子模塊將以太網(wǎng)MAC控制器中用于指示傳輸模式的寄存器置為表示"DMA 傳輸"的值;并對(duì)DMA寄存器寫(xiě)入開(kāi)始數(shù)據(jù)傳輸標(biāo)志位,從而向CPU通 知已經(jīng)開(kāi)始DMA數(shù)據(jù)傳輸,讓CPU停止其他任務(wù)的處理。
本步驟中,串口控制MAC層子模塊先判斷該所述以太網(wǎng)PHY芯片模 塊是否正在進(jìn)行數(shù)據(jù)傳輸,如果沒(méi)在進(jìn)行傳輸則通過(guò)以太網(wǎng)MAC控制器指 示以太網(wǎng)PHY芯片模塊開(kāi)始傳輸;如果正在進(jìn)行傳輸則等待。
本步驟中,串口控制模塊指示以太網(wǎng)PHY芯片模塊進(jìn)行發(fā)送是指串 口控制模塊將以太網(wǎng)MAC控制器中用于指示傳輸狀態(tài)的寄存器置為表示 "開(kāi)始傳輸"的值。
C、以太網(wǎng)PHY芯片模塊在收到發(fā)送數(shù)據(jù)的指示后,從以太網(wǎng)MAC控 制器的數(shù)據(jù)緩沖區(qū)取走所述以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送。
本步驟具體可以包括以太網(wǎng)PHY芯片模塊監(jiān)視以太網(wǎng)MAC控制器 中用于指示傳輸狀態(tài)的寄存器,發(fā)現(xiàn)其被置為表示"開(kāi)始傳輸,,的值后,從 以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并通過(guò)以太網(wǎng)向?qū)Χ嗽O(shè) 備進(jìn)行發(fā)送。
窄帶數(shù)據(jù)流經(jīng)過(guò)上述不同步驟后的數(shù)據(jù)包格式如圖2所示。 窄帶撥號(hào)時(shí)數(shù)據(jù)流的接收方法包括如下步驟
a、 以太網(wǎng)PHY芯片模塊從對(duì)端設(shè)備接收到的數(shù)據(jù)送入到以太網(wǎng)MAC 控制器的數(shù)據(jù)緩沖區(qū)中。
b、 串口控制^t塊將接收到的數(shù)據(jù)流中的以太網(wǎng)串口窄帶數(shù)據(jù)流提取出 來(lái),并將其拆包得到窄帶數(shù)據(jù)流。
本步驟具體包括
bl、判斷所述接收到的數(shù)據(jù)流為以太網(wǎng)串口窄帶數(shù)據(jù)流還是IP數(shù)據(jù)流, 如果是IP數(shù)據(jù)流則送入IP層協(xié)議棧處理單元,按現(xiàn)有技術(shù)進(jìn)行相應(yīng)處理; 如果為以太網(wǎng)串口窄帶數(shù)據(jù)流則去除以太網(wǎng)包頭得到串口幀,并將串口幀從 以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)中。
本步驟可以由串口控制MAC層子模塊完成。
b2、將核心態(tài)緩沖區(qū)中的串口幀復(fù)制到用戶態(tài)緩沖區(qū),并去除串口包頭 得到窄帶數(shù)據(jù)流。
本步驟具體可以為串口控制MAC層子才莫塊將核心態(tài)緩沖區(qū)中的串口 幀送入串口驅(qū)動(dòng)層子模塊的數(shù)據(jù)寫(xiě)緩沖區(qū);送入后通知串口控制模塊中包含 的串口驅(qū)動(dòng)層子模塊讀取該串口幀;串口驅(qū)動(dòng)層讀取串口幀后去除串口包 頭,得到窄帶數(shù)據(jù)流。
c、串口控制模塊將所述窄帶數(shù)據(jù)流從用戶層數(shù)據(jù)通信接口送出給用戶。 本步驟具體可以為串口控制模塊中包含的串口驅(qū)動(dòng)層子模塊將窄帶數(shù) 據(jù)流從設(shè)備文件送出給用戶。
下面用本發(fā)明的一個(gè)應(yīng)用實(shí)例進(jìn)一步加以說(shuō)明。
在本應(yīng)用實(shí)例中,假設(shè)通信兩端都采用了本發(fā)明的技術(shù)方案。
在發(fā)送端,如圖3所示
101 、窄帶數(shù)據(jù)流進(jìn)入用戶層數(shù)據(jù)通信接口 。
本應(yīng)用實(shí)例中,用戶層數(shù)據(jù)通信接口以設(shè)備文件的形式提供,因此本步 驟也可描述為用戶將窄帶數(shù)據(jù)流向設(shè)備文件中寫(xiě)入。
102、 窄帶數(shù)據(jù)流進(jìn)入串口驅(qū)動(dòng)層子模塊的數(shù)據(jù)讀緩沖區(qū)中。
103、 串口驅(qū)動(dòng)層子模塊將所述窄帶數(shù)據(jù)流加上串口包頭封裝為串口幀, 然后串口控制MAC層子模塊將所述串口幀從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩 沖區(qū)。
到這個(gè)步驟以后,就可以在核心層得到該窄帶數(shù)據(jù)流。
104、 串口控制MAC層子^f莫塊在核心層把所述串口幀加入以太網(wǎng)包頭 封裝為以太網(wǎng)數(shù)據(jù)包后以調(diào)用函數(shù)接口的形式送入以太網(wǎng)MAC控制器的數(shù) 據(jù)緩沖區(qū)。
105、 串口控制MAC層子模塊將以太網(wǎng)MAC控制器傳輸模式置為DMA 模式。
本步驟即串口控制MAC層子模塊將以太網(wǎng)MAC控制器中的的第一 寄存器置為表示"DMA傳輸"的值
106:串口控制MAC層子模塊將以太網(wǎng)MAC控制器的傳輸狀態(tài)置為開(kāi) 始傳輸。
本步驟即串口控制MAC層子模塊將以太網(wǎng)MAC控制器中的的第二 寄存器置為表示"開(kāi)始傳輸"的值。
107、串口控制MAC層子模塊向DMA寄存器寫(xiě)入開(kāi)始數(shù)據(jù)傳輸標(biāo)志位。 108:串口控制MAC層子模塊向CPU通知已經(jīng)開(kāi)始DMA數(shù)據(jù)傳輸, 讓CPU停止其他任務(wù)的處理。
109:以太網(wǎng)PHY芯片模塊進(jìn)行發(fā)送。
本步驟具體為以太網(wǎng)PHY芯片模塊發(fā)現(xiàn)以太網(wǎng)MAC控制器中的的 第二寄存器被置為表示"開(kāi)始傳輸,,的值時(shí),從以太網(wǎng)MAC控制器的數(shù)據(jù) 緩沖區(qū)中得到所述以太網(wǎng)數(shù)據(jù)包并通過(guò)以太網(wǎng)發(fā)送到對(duì)端設(shè)備。
通過(guò)以上步驟,該窄帶數(shù)據(jù)流從設(shè)備文件到達(dá)了對(duì)端設(shè)備。
在接收端,如圖4所示
110、 對(duì)端設(shè)備的以太網(wǎng)PHY芯片模塊接收到數(shù)據(jù)流。
111、 以太網(wǎng)PHY芯片模塊將接收到的數(shù)據(jù)流以自定義組播方式送入到 以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中。
112、 串口控制MAC層子模塊判斷接收到的數(shù)據(jù)流是IP數(shù)據(jù)包還是以 太網(wǎng)串口窄帶數(shù)據(jù)流,如果是以太網(wǎng)串口窄帶數(shù)據(jù)流則進(jìn)行步驟113,如果
是IP數(shù)據(jù)包則進(jìn)行步驟114。
步驟111中是以自定義組播方式將數(shù)據(jù)送到了以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中,因此可以根據(jù)自定義組播方式來(lái)判斷出該回顯數(shù)據(jù)流是IP數(shù) 據(jù)包還是以太網(wǎng)串口窄帶數(shù)據(jù)流。
113、 串口控制MAC層子模塊將以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中的 以太網(wǎng)串口窄帶數(shù)據(jù)流去除以太網(wǎng)包頭得到串口幀,并復(fù)制到核心態(tài)緩沖 區(qū);進(jìn)行115。
114、 將IP數(shù)據(jù)包送入IP層協(xié)議單元處理;按現(xiàn)有技術(shù)繼續(xù)處理,本 文中不再贅述。
115、 串口控制MAC層子模塊將所述串口幀從核心態(tài)緩沖區(qū)復(fù)制到串 口驅(qū)動(dòng)層子模塊的數(shù)據(jù)寫(xiě)緩沖區(qū),并向串口驅(qū)動(dòng)層子模塊發(fā)送信號(hào)讓其從寫(xiě) 緩沖區(qū)中讀走數(shù)據(jù)。
116:串口驅(qū)動(dòng)層子模塊讀取所述串口幀后去除串口包頭得到窄帶數(shù)據(jù) 流,并將其從用戶層數(shù)據(jù)通信接口,也就是從設(shè)備文件送出給用戶。
當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的 形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、一種以太網(wǎng)串口驅(qū)動(dòng)單元,包括以太網(wǎng)物理層PHY芯片模塊,以太網(wǎng)介質(zhì)訪問(wèn)控制層MAC控制器;其特征在于,還包括串口控制模塊;所述以太網(wǎng)PHY芯片用于根據(jù)所述以太網(wǎng)MAC控制器下發(fā)的指示,從以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送;還用于從以太網(wǎng)中接收數(shù)據(jù)流并送入到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中;所述串口控制模塊用于接收從用戶層數(shù)據(jù)通信接口送入的窄帶數(shù)據(jù)流,將其復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中并封裝為以太網(wǎng)數(shù)據(jù)包,然后通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊將其發(fā)送;還用于從以太網(wǎng)PHY芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口窄帶數(shù)據(jù)流,并將其拆包得到窄帶數(shù)據(jù)流,然后將其送出給用戶。
2、 如權(quán)利要求1所述的以太網(wǎng)串口驅(qū)動(dòng)單元,其特征在于,串口控制 模塊將窄帶數(shù)據(jù)流復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中并封裝為以太 網(wǎng)數(shù)據(jù)包是指串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取并加上串口包頭封裝成串口幀,并將所述串口幀從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū),然后將核心態(tài)緩 沖區(qū)中的串口幀復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中,并加上以太網(wǎng) 包頭封裝為以太網(wǎng)數(shù)據(jù)包。
3、 如權(quán)利要求1所述的以太網(wǎng)串口驅(qū)動(dòng)單元,其特征在于,串口控制 模塊通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊將窄帶數(shù)據(jù)流發(fā)送 是指串口控制模塊把以太網(wǎng)MAC控制器的傳輸模式設(shè)為直接內(nèi)存訪問(wèn) DMA傳輸方式,讓CPU停止處理其他任務(wù)的處理,并判斷該所述以太網(wǎng) PHY芯片模塊是否正在進(jìn)行數(shù)據(jù)傳輸,如果沒(méi)在進(jìn)行傳輸則通過(guò)以太網(wǎng) MAC控制器指示以太網(wǎng)PHY芯片^^莫塊開(kāi)始傳輸;如果正在進(jìn)行傳輸則等待。
4、 如權(quán)利要求3所述的以太網(wǎng)串口驅(qū)動(dòng)單元,其特征在于 所述以太網(wǎng)MAC控制器包括MAC驅(qū)動(dòng)子模塊和寄存器; 所述mac驅(qū)動(dòng)子模塊用于對(duì)寄存器操作以及和以太網(wǎng)phy芯片之間 通信接口進(jìn)行定義;所述寄存器至少包括用于指示傳輸模式的第一寄存器和用于指示傳輸 狀態(tài)的第二寄存器;所述串口控制模塊把以太網(wǎng)mac控制器的傳輸模式設(shè)為dma傳輸方 式是指串口控制模塊通過(guò)mac驅(qū)動(dòng)子模塊將以太網(wǎng)mac控制器中的第 一寄存器置為表示"dma傳輸"的值;所述串口控制模塊通過(guò)以太網(wǎng)mac控制器通知以太網(wǎng)phy芯片模塊 開(kāi)始傳輸是指串口控制模塊通過(guò)mac驅(qū)動(dòng)子模塊將以太網(wǎng)mac控制器 中的第二寄存器置為表示"開(kāi)始傳輸"的值。
5、 如權(quán)利要求4所述的以太網(wǎng)串口驅(qū)動(dòng)單元,其特征在于,所述以太 網(wǎng)phy芯片模塊根據(jù)所述以太網(wǎng)mac控制器下發(fā)的指示,從以太網(wǎng)mac 控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送是指以太網(wǎng)phy芯片 模塊監(jiān)視以太網(wǎng)mac控制器中用于指示傳輸狀態(tài)的寄存器,發(fā)現(xiàn)其被置為 表示"開(kāi)始傳輸"的值時(shí),從以太網(wǎng)mac控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng) 數(shù)據(jù)包并進(jìn)行發(fā)送。
6、 如權(quán)利要求1所述的以太網(wǎng)串口驅(qū)動(dòng)單元,其特征在于所述串口 控制模塊包括串口控制mac層子模塊和串口驅(qū)動(dòng)層子模塊;串口控制模塊從以太網(wǎng)phy芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口 窄帶數(shù)據(jù)流,并將其拆包得到窄帶數(shù)據(jù)流是指串口控制mac層子模塊判 斷以太網(wǎng)phy芯片模塊所接收到的數(shù)據(jù)流為以太網(wǎng)串口窄帶流還是ip數(shù)據(jù) 流,如果是ip數(shù)據(jù)流則將其送入ip層協(xié)議棧處理單元;如果為以太網(wǎng)串口 窄帶流則去除以太網(wǎng)包頭得到串口幀,并將串口幀從以太網(wǎng)mac控制器的 數(shù)據(jù)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)中;然后將核心態(tài)緩沖區(qū)中的串口幀送入串 口驅(qū)動(dòng)層子模塊的數(shù)據(jù)寫(xiě)緩沖區(qū),并通知串口驅(qū)動(dòng)層子模塊讀取;串口驅(qū)動(dòng) 層子模塊讀取串口幀后去除串口包頭,得到窄帶數(shù)據(jù)流。
7、 如權(quán)利要求1所述的以太網(wǎng)串口驅(qū)動(dòng)單元,其特征在于,串口控制 模塊將窄帶數(shù)據(jù)流送出給用戶是指串口控制模塊將數(shù)據(jù)從設(shè)備文件送出給用戶。
8、 一種窄帶撥號(hào)時(shí)數(shù)據(jù)流的發(fā)送方法,其特征在于,包括A、 將窄帶數(shù)據(jù)流送入串口控制模塊;B、 串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取,復(fù)制到以太網(wǎng)MAC控 制器的數(shù)據(jù)緩沖區(qū)中并封裝成以太網(wǎng)數(shù)據(jù)包,然后指示以太網(wǎng)PHY芯片模 塊進(jìn)行發(fā)送;C、 以太網(wǎng)PHY芯片模塊在收到發(fā)送數(shù)據(jù)的指示后,從以太網(wǎng)MAC控 制器的數(shù)據(jù)緩沖區(qū)取走所述以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送。
9、 如權(quán)利要求8所述的發(fā)送方法,其特征在于,所述步驟B具體包括 Bl 、串口控制模塊將所述窄帶數(shù)據(jù)流進(jìn)行截取并加上串口包頭封裝成串口幀后,從用戶態(tài)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū);B2、串口控制^t塊將核心態(tài)緩沖區(qū)中的串口幀復(fù)制到以太網(wǎng)MAC控制 器的數(shù)據(jù)緩沖區(qū)中,并加入以太網(wǎng)包頭封裝為以太網(wǎng)數(shù)據(jù)包;B3、串口控制模塊將以太網(wǎng)MAC控制器的傳輸模式設(shè)為DMA傳輸方 式,讓CPU停止處理其他任務(wù)的處理,并指示以太網(wǎng)PHY芯片模塊進(jìn)行發(fā) 送。
10、 如權(quán)利要求9所述的發(fā)送方法,其特征在于,所述步驟B3中,串 口控制模塊指示以太網(wǎng)PHY芯片模塊進(jìn)行發(fā)送是指串口控制模塊將以太網(wǎng)MAC控制器中用于指示傳輸狀態(tài)的寄存器置為 表示"開(kāi)始傳輸"的值。
11、 如權(quán)利要求IO所述的發(fā)送方法,其特征在于,所述步驟C具體為以太網(wǎng)PHY芯片模塊監(jiān)視以太網(wǎng)MAC控制器中用于指示傳輸狀態(tài)的 寄存器,發(fā)現(xiàn)其被置為表示"開(kāi)始傳輸"的值后,從以太網(wǎng)MAC控制器的 數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并通過(guò)以太網(wǎng)向?qū)Χ嗽O(shè)備進(jìn)行發(fā)送。
12、 如權(quán)利要求8到11中任一項(xiàng)所述的發(fā)送方法,其特征在于,所述 步驟A具體為 用戶以訪問(wèn)設(shè)備文件的形式將窄帶數(shù)據(jù)流送入串口控制模塊。
13、 一種窄帶撥號(hào)時(shí)數(shù)據(jù)流的接收方法,其特征在于,包括a、 以太網(wǎng)PHY芯片模塊從對(duì)端設(shè)備接收到的數(shù)據(jù)流送入到以太網(wǎng)MAC 控制器的數(shù)據(jù)緩沖區(qū)中;b、 串口控制模塊將接收到的數(shù)據(jù)流中的以太網(wǎng)串口窄帶數(shù)據(jù)流提取出 來(lái),并將其拆包得到窄帶數(shù)據(jù)流;c、 串口控制模塊將所述窄帶數(shù)據(jù)流送出給用戶。
14、 如權(quán)利要求13所述的接收方法,其特征在于,所述步驟b具體包括bl、串口控制模塊判斷所述接收到的數(shù)據(jù)流為以太網(wǎng)串口窄帶數(shù)據(jù)流還 是IP數(shù)據(jù)流,如果為以太網(wǎng)串口窄帶數(shù)據(jù)流則去除以太網(wǎng)包頭得到串口幀, 并將串口幀從以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)復(fù)制到核心態(tài)緩沖區(qū)[b2、串口控制模塊將核心態(tài)緩沖區(qū)中的串口幀復(fù)制到用戶態(tài)緩沖區(qū),并 去除串口包頭得到窄帶數(shù)據(jù)流。
15、 如權(quán)利要求14所述的接收方法,其特征在于,所述步驟c具體包括串口控制模塊將窄帶數(shù)據(jù)流從設(shè)備文件送出給用戶。
全文摘要
本發(fā)明公開(kāi)了一種以太網(wǎng)串口驅(qū)動(dòng)單元及窄帶撥號(hào)時(shí)數(shù)據(jù)流的傳輸方法;以太網(wǎng)串口驅(qū)動(dòng)單元包括以太網(wǎng)MAC控制器、以太網(wǎng)PHY芯片,用于根據(jù)所述以太網(wǎng)MAC控制器下發(fā)的指示,從以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)取走以太網(wǎng)數(shù)據(jù)包并進(jìn)行發(fā)送;還用于從以太網(wǎng)中接收數(shù)據(jù)流并送入到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中;及串口控制模塊,用于接收從用戶層數(shù)據(jù)通信接口送入的窄帶數(shù)據(jù)流,將其復(fù)制到以太網(wǎng)MAC控制器的數(shù)據(jù)緩沖區(qū)中并封裝為以太網(wǎng)數(shù)據(jù)包,然后通過(guò)以太網(wǎng)MAC控制器指示以太網(wǎng)PHY芯片模塊將其發(fā)送;還用于從以太網(wǎng)PHY芯片模塊接收的數(shù)據(jù)流中提取以太網(wǎng)串口窄帶數(shù)據(jù)流,并將其拆包得到窄帶數(shù)據(jù)流,然后將其送出給用戶。
文檔編號(hào)H04L12/02GK101183948SQ20071019527
公開(kāi)日2008年5月21日 申請(qǐng)日期2007年12月5日 優(yōu)先權(quán)日2007年12月5日
發(fā)明者任安濤, 濤 盧, 張明昊, 李云濤, 胡全勝, 范志剛, 陳浩乾 申請(qǐng)人:中興通訊股份有限公司