999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Linux系統下PCIE to RapidIO橋驅動設計與實現

2018-07-10 11:17:08李紅兵
雷達與對抗 2018年2期
關鍵詞:設備系統

李紅兵

(中國電子科技集團公司第十研究所, 成都 610036)

0 引 言

目前,國內二次雷達系統的顯控終端通常采用X86架構CPU為核心的硬件平臺,對外數據交互通過千兆以太網或者PCIE接口,以完成雷達系統的控制、狀態顯示和人機交互等功能。[1]千兆以太網存在速率低、包開銷大、對處理器有特定要求等問題。PCIE總線形成樹形層級架構,適合點對點通信,不支持多設備間數據交換功能。為了滿足二次雷達系統高速通信的需求,使用新的總線來替代原有的通信接口。

RapidIO總線是當前廣泛應用的一種嵌入式系統內部互聯架構,具有高帶寬、低延遲、支持多處理器等特征。它比千兆以太網提供更高的傳輸速率,比PCIE更適合組建平行通信網絡,能滿足當前二次雷達系統中的數據傳輸需求。

本文在某型二次雷達系統的工程研制中設計并實現了Linux操作系統下PCIE to RapidIO橋芯片Tsi721的驅動程序,將RapidIO總線技術成功應用于顯控終端,使得整個二次雷達系統形成基于RapidIO網絡的高速互聯架構,提高了該雷達系統的作戰性能。

1 Tsi721橋芯片介紹

Tsi721是美國IDT公司生產的PCIE to RapidIO橋接芯片。它提供了在PCIE與RapidIO總線間進行協議無縫轉換的硬件解決方案。Tsi721芯片能夠將數據傳輸從PCIE總線轉換到RapidIO總線,或者相反從RapidIO總線轉換到PCIE總線,并保證數據傳輸在轉換過程中的高效性和可靠性。[2]通過Tsi721,可以設計一個系統以提供基于RapidIO的網絡連接性能,同時使用只有PCIE能夠支持的處理器結構。圖1為Tsi721的功能框圖。

該芯片具有以下硬件特性:

◆ PCIE接口兼容PCIE 2.1規范,速率支持5/2.5Gbps,物理鏈路支持x4/x2/x1連接,12KB輸入輸出阻塞/非阻塞TLP緩存;

◆ RapidIO接口兼容RapidIO串行協議2.1規范,速率支持5/3.125/2.5/1.25Gbps,物理鏈路支持x4/x2/x1連接;

◆ 集成映射引擎,實現PCIE到RapidIO地址轉換(PC2SR)和RapidIO到PCIE地址轉換(SR2PC);

◆ 集成消息引擎,實現PCIE接口與RapidIO接口之間的消息通信,包含8路輸出消息DMA通道和8路輸入消息DMA通道,消息中傳送的數據最大可達4 KB;

◆ 集成BDMA引擎,支持塊DMA傳輸,每個BDMA通道均以鏈式描述符的方式工作,用于數據包或維護包的讀寫訪問。

顯控終端使用Tsi721芯片實現RapidIO接口功能,使得顯控終端能通過RapidIO接口連接到圖2所示的二次雷達系統中。

該雷達系統以交換模塊為核心,顯控終端、信號處理、信息處理、綜控等各個模塊通過交換模塊連接在一起。每個模塊與交換模塊之間都存在一條單獨的x1 RapidIO通道。模塊通過唯一的節點ID來定位。節點間數據包傳輸采用RapidIO協議中的Nwrite和Nread命令。數據傳輸可以是點對點、廣播或者組播的形式。相比以太網或者PCIE總線的樹形架構,該系統內部通信方式更靈活,性能更高。

2 Tsi721驅動設計與實現

Linux內核集成的RapidIO子系統驅動在內核中形成了全局層、總線層和設備層共3層數據結構,用于維護、管理RapidIO網絡中各節點的枚舉、地址分配、路由表建立、節點動態入網出網等。[3]內核把Tsi721芯片虛擬為一個以太網設備,驅動通過RapidIO的message機制通信。這就要求RapidIO網絡上其他設備節點也通過message機制和Tsi721芯片通信。本文的二次雷達系統要求RapidIO網絡中各節點間采用Nwrite命令和Nread命令通信,這就不能滿足系統要求。因此本文借助Linux字符設備的驅動框架,將Tsi721芯片實現的RapidIO節點設計成為一個字符設備,對應用層提供字符設備的讀寫訪問方式,驅動采用全局共享存儲器的方式實現Nwrite命令和Nread命令。[4]

Tsi721橋芯片驅動由PCIE設備驅動、Tsi721及RapidIO子系統配置及字符設備驅動部分組成。

2.1 Tsi721的PCIE設備驅動

PCIE總線是一種即插即用的總線,在Linux內核的支持下,當探測到設備以后能夠確定其總線號、設備號和功能號[5],然后自動地為設備分配所需要的IO端口、內存資源和中斷號。

如圖3所示,驅動作為模塊加載以后,tsi721_probe函數先根據Tsi721芯片的設備標識Device ID(0x80A)和供應商標識Vendor ID(0x111D)遍歷內核中PCIE設備鏈表,一一進行匹配。匹配之后,從pci_device結構中獲取內核分配給Tsi721芯片設備的資源。然后,調用函數pci_enable_device把Tsi721配置空間的Command域的bit 0和bit 1置成1,從而達到開啟該PCIE設備的目的,再調用函數pci_request_regions通知內核該設備對應的IO端口和內存資源已經使用。其他的PCIE設備不能再使用這個區域。調用pci_ioremap_bar把剛剛申請到得物理內存映射成為虛擬內存以供驅動訪問。再根據分配的中斷號調用函數reques_irq掛載中斷服務程序,中斷服務程序處理BDMA中斷、doorbell中斷和message中斷等。

2.2 Tsi721及RapidIO子系統配置

Tsi721作為PCIE設備初始化完成以后,驅動就可以通過PCIE的配置空間訪問Tsi721芯片內部的寄存器,以完成芯片的其他初始化工作。如圖4所示,函數tsi721_init_pc2sr_mapping和tsi721_init_sr2pc_mappin實現PC2SR和SR2PC引擎的初始化,逐一配置8個輸出、輸入窗口。然后,驅動調用tsi721_bdma_maint_init初始化塊DMA通道,申請DMA緩存為每個通道建立鏈式描述符,用于維護包的讀寫訪問。tsi721_doorbell_init函數使能輸入doorbell的接收,建立doorbell接收緩存隊列。函數tsi721_messages_init配置消息請求和相應的超時時間,清除上電中斷標志位及狀態位。tsi721_setup_mport函數向RapidIO子系統注冊Tsi721作為RapidIO網絡的管理端口。函數rio_request_inb_dbell注冊doorbell的回調函數,用于收到doorbell之后的處理。驅動最后調用函數rio_map_inb_region映射dma_alloc_coherent申請的DMA緩存區到RapidIO子系統,用于全局共享存儲器的方式實現Nwrite命令和Nread命令。

2.3 Tsi721字符設備驅動

Linux系統字符設備是能夠像字節流一樣被訪問的設備,即對數據的讀寫是以字節為單位的,應用程序通過字符設備文件(比如/dev/xyz)來訪問對應的硬件設備。[6]Tsi721字符設備驅動設計包括字符設備初始化及文件操作函數(open、close、read、write 等標準系統調用)的實現。

Tsi721字符設備的初始化步驟如5所示。先調用cdev_init函數初始化一個字符設備tsi721_cdev,并注冊其操作函數結構體tsi721_file_operations,然后調用alloc_chrdev_region為該字符設備動態分配“主設備號”和“次設備號”,再調用cdev_add函數向內核中增加該字符設備tsi721_cdev,驅動最后調用class_create( )函數和device_create( )函數,在sysfs中注冊該字符設備自己的class以及在/dev目錄下創建一個tsi721的設備文件,當系統啟動時udev能自動產生相應的設備節點/dev/tsi721_rio。驅動中實現的字符設備文件操作函數如圖6所示。

(1) tsi721_dev_read讀函數

static ssize_t tsi721_dev_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos)

當二次雷達系統中信號處理模塊、信息處理模塊或綜控模塊通過RapidIO寫入數據到顯控終端的內存中后,通過“門鈴”消息機制通知顯控終端,驅動程序從本地內存中讀取數據,然后調用copy_to_user( )將size個內核數據復制到用戶空間buf中。

(2) tsi721_dev_write讀函數

static ssize_t tsi721_dev_write(struct file *filp, const char __user *buf, size_t size, loff_t *ppos)

驅動程序調用copy_from_user( )從用戶空間buf中將size個數據拷貝到內核地址空間,然后調用tsi721_nwrite( )函數啟動BDMA向其他RapidIO節點的內存中寫入數據。

(3) tsi721_dev_open函數

static int tsi721_dev_open(struct inode *inode, struct file *filp)

設備打開函數,該函數主要實現獲取設備資源信息。

(4) tsi721_dev_ioctl函數

static long tsi721_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)

該函數提供設備相關控制命令的實現,如命令RIO_LC_WRITE(本地配置寫Tsi721寄存器)、RIO_LC_READ(本地配置讀Tsi721寄存器)、RIO_DBELL_TX(門鈴發送)、RIO_DBELL_RX(門鈴接收)、RIO_LOCAL_ID_SET(本地RapidO節點ID設置)。

(5) tsi721_dev_release函數

static int tsi721_dev_release(struct inode *inode, struct file *filp)

設備釋放函數,該函數釋放注冊的中斷資源等。

(6) 驅動測試

Tsi721驅動以內核模塊的形式編譯及加載[7],以方便對驅動程序的修改和測試,最后為該驅動程序編寫1個簡單的Makefile文件:

obj-m=tsi721.o

KVERSION=$(shell uname-r)

all:

make-C/lib/modules/$(KVERSION)/build M=$(PWD) modules

clean:

make-C/lib/modules/$(KVERSION)/build M=$(PWD) clean

在控制臺窗口使用insmod tsi721.ko命令將裝載該驅動。

3 驅動性能測試

測試平臺見圖2。RapidIO網絡的速率為2.5 GHz,物理連接方式為x1。顯控終端分別安裝windows 7操作系統和基于Linux內核的Centos 7操作系統。windows平臺下Tsi721的驅動由芯片廠家IDT公司提供。Centos平臺下驅動由自己開發,分別測試在不同操作系統平臺下RapidIO網絡的通信速率。

模塊間通信速率主要取決于Tsi721芯片的BDMA傳輸速度及內存讀寫速度,二者均受到硬件條件限制。測試用數據包大小分別設置為4、8、16、32、64、128、256、512 KB和1 MB。測試流程如圖7所示。顯控終端使用Nwrite命令類型發送數據,經過交換模塊寫入綜控模塊的內存中。寫入數據前后分別記錄當前的系統時間,然后根據時間和數據包大小計算出寫速率。使用Nread命令類型從綜控模塊的內存中讀取數據,讀取數據前后分別記錄當前的系統時間,然后根據時間和數據包大小計算出讀速率。測試結果見表1。從表1可以看出,基于Linux內核的顯控終端通信速率遠高于基于windows系統的顯控終端。

表1 通信速率對比結果 (MByte/s)

4 結束語

經過測試,基于Linux系統開發的Tsi721橋芯片驅動程序實現了RapidIO通信的主要功能,通信速率相比windows系統下有明顯提升。該驅動程序已經成功應用于某型號二次雷達顯示終端中,取得了良好的經濟、社會效益。X86+Linux的構架為各種嵌入式顯示應用提供了一個友好的開發平臺。本文基于模塊化開發的驅動程序可以廣泛應用于其他基于Linux內核的X86平臺上。

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 亚洲日韩第九十九页| 性欧美精品xxxx| 精品成人一区二区| 在线观看国产网址你懂的| 欧美成人影院亚洲综合图| 四虎影视库国产精品一区| 午夜国产精品视频| 亚洲人成网站观看在线观看| 伊人久久婷婷| 亚洲另类第一页| 国产丝袜第一页| 三级国产在线观看| 色男人的天堂久久综合| h视频在线播放| 99re66精品视频在线观看| 最新国产在线| 亚洲无码视频一区二区三区 | 很黄的网站在线观看| 91精品国产一区自在线拍| 久久精品国产免费观看频道| 2020久久国产综合精品swag| 五月天香蕉视频国产亚| 久草性视频| 亚洲青涩在线| 国产精品所毛片视频| 亚洲 欧美 日韩综合一区| 国产污视频在线观看| 亚洲第一成网站| 九九线精品视频在线观看| 亚洲精品无码人妻无码| 72种姿势欧美久久久久大黄蕉| 亚洲无码视频图片| 欧亚日韩Av| 在线免费观看a视频| 国产h视频免费观看| 亚洲丝袜第一页| 亚洲第一中文字幕| 91精品国产91久久久久久三级| 国产自在自线午夜精品视频| 人妻精品久久无码区| 毛片在线区| 九九热视频在线免费观看| 老司机精品一区在线视频| 久久香蕉国产线看观看亚洲片| 亚洲美女操| 亚洲天堂网在线观看视频| 国产在线观看人成激情视频| 欧美一区二区啪啪| 久久精品人人做人人爽97| 亚洲一本大道在线| 亚洲免费三区| 国产乱人伦精品一区二区| 国产精品无码一二三视频| 亚洲av日韩综合一区尤物| 无码中文AⅤ在线观看| 国产极品嫩模在线观看91| 亚洲一区二区视频在线观看| 成AV人片一区二区三区久久| 狠狠色婷婷丁香综合久久韩国 | 亚洲天堂首页| 国产午夜人做人免费视频中文| 国产一区二区网站| 成人伊人色一区二区三区| 国产一区二区三区免费观看| 一本一本大道香蕉久在线播放| 波多野结衣久久精品| 亚洲视屏在线观看| 精品乱码久久久久久久| 欧美视频在线播放观看免费福利资源 | 免费A级毛片无码免费视频| 美女扒开下面流白浆在线试听 | 亚洲无码高清免费视频亚洲| 国产人妖视频一区在线观看| 麻豆精品久久久久久久99蜜桃| 国产精品一区在线麻豆| 国产剧情国内精品原创| 国产一区亚洲一区| 亚洲无线观看| 美美女高清毛片视频免费观看| 亚洲精品无码久久久久苍井空| 99激情网| 国产视频自拍一区|