[發明專利]一種實現ARMCPU用戶態收發報文的方法有效
| 申請號: | 201410232336.0 | 申請日: | 2014-05-29 |
| 公開(公告)號: | CN104050101B | 公開(公告)日: | 2018-02-13 |
| 發明(設計)人: | 高福亮 | 申請(專利權)人: | 漢柏科技有限公司 |
| 主分類號: | G06F12/1036 | 分類號: | G06F12/1036;G06F9/50 |
| 代理公司: | 北京中政聯科專利代理事務所(普通合伙)11489 | 代理人: | 陳超 |
| 地址: | 300384 天津市西青*** | 國省代碼: | 天津;12 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 實現 arm cpu 用戶 收發 報文 方法 | ||
1.一種實現ARM CPU用戶態收發報文的方法,其特征在于,包括以下步驟:
步驟S1,對ARM網口的內核驅動進行整改,除去Linux內核中ARM網口初始化函數中掛載的關于中斷及收發包的函數;
步驟S2,將所述除去的ARM網口初始化函數中關于收發包的函數移植到用戶態;
步驟S3,用戶態在初始化時從內核獲取大塊連續內存,并對這塊物理連續內存進行單獨管理,使得用戶態空間可以訪問到DMA的內存;
其中,所述步驟S3進一步包括:
步驟S31,在Linux內核初始化時,申請大塊連續內存,以備用戶態收發包申請skb使用;
步驟S32,用戶態初始化時,通過ioctl方式從內核獲取已申請的所述大塊連續內存的地址和大小;其中,用戶態初始化時,對申請的內存進行檢測,檢測出該內存的地址和大小,如果檢測到地址和大小相符,則進行獲取;
步驟S33,采用mmap函數將所述大塊連續內存的地址映射為用戶態可操作的虛擬地址,使得收發包使用的skb申請和釋放可以在映射后的這塊內存中進行;
步驟S4,用戶態在初始化時進行與ARM網口收發相關的硬件寄存器的配置,使得收發包過程中用戶態可以讀寫與ARM網口收發相關的硬件控制寄存器;
步驟S5,用戶態收發報文。
2.根據權利要求1所述的方法,其特征在于,所述步驟S2進一步包括:
步驟S21,將與ARM網口收發包相關的處理函數移植到用戶態;
步驟S22,對用戶態中植入后的與ARM網口收發包相關的處理函數進行整改,去掉一些用戶態不需要的操作;
步驟S23,創建線程進行收包,編譯鏈接生成可執行程序。
3.根據權利要求2所述的方法,其特征在于,所述收包采用輪詢方式進行。
4.根據權利要求1所述的方法,其特征在于,所述已申請的所述大塊連續內存的大小為300M。
5.根據權利要求1所述的方法,其特征在于,所述步驟S4進一步包括:
步驟S41,用戶態在初始化時獲取與ARM網口收發相關的硬件寄存器的物理基地址及寄存器空間的大小;
步驟S42,將所述獲取的硬件寄存器的物理基地址及寄存器空間的大小定義為宏,通過mmap函數將硬件寄存器的基地址映射為用戶態虛擬地址。
6.根據權利要求1所述的方法,其特征在于,所述步驟S5進一步包括:
用戶態通過執行ARM網口的收發包初始化函數,分配收發資源,控制寄存器的配置、接口注冊及收發函數掛載,來實現收發報文。
7.根據權利要求6所述的方法,其特征在于,所述分配收發的資源包括隊列、描述符和buffer緩存。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于漢柏科技有限公司,未經漢柏科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410232336.0/1.html,轉載請聲明來源鉆瓜專利網。





