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

基于P2020處理器的高速數據總線接口設計※

2016-03-10 01:58:47陳崇森
單片機與嵌入式系統應用 2016年2期

陳崇森

(廣州海格通信集團股份有限公司,廣州 510663)

?

基于P2020處理器的高速數據總線接口設計※

陳崇森

(廣州海格通信集團股份有限公司,廣州 510663)

摘要:通過以Freescale公司的P2020雙核處理器為核心的嵌入式硬件平臺,介紹了CPU與FPGA的基于Local Bus接口設計具備DMA傳輸功能及環形緩沖的高速數據總線接口方法,以及基于Linux3.0內核開發此接口的驅動程序的實現方法。該技術已在某寬帶高速設備上應用,實際測試,其實時穩定性、數據吞吐量、鏈路穩定性均滿足設計要求,對同類型嵌入式平臺的高速數據總線接口設計及開發有借鑒意義。

關鍵詞:P2020;Local Bus;DMA;環形緩沖

引言

QorIQ P2平臺是Freescale公司推出的高性能低功耗系列處理器,包括P2020雙核以及P2010單核兩款產品。P2平臺憑借低功耗、高效率雙指令執行、e500 Power核心以及1.33 GHz頻率,提供高效的單線程性能,非常適合應用于聯網和電信線路卡等寬帶通信設備。P2020作為主CPU與大規模FPGA進行通信,采用Local Bus接口連接可實現高速通信,此種連接具有通信可靠、FPGA時序邏輯易于實現等優點,但是Linux不是強實時操作系統,難以實現對高速數據的實時傳輸及處理,所以Local Bus的實時緩沖接口設計成為系統性能實現的關鍵。本文采用中斷觸發、DMA傳輸,開辟了大片環形緩沖內存的數據總線接口設計方法,開發了Linux下的驅動程序,實現了高速數據的實時可靠傳輸。

1P2020的特點及Local Bus接口

1.1P2020的特點

P2020處理器的特點如下:

① 雙核高性能Power Architecture e500核心,36位物理尋址,支持雙精度浮點,每核心32 KB一級指令高速緩存以及32 KB一級數據緩存,高達1.33 GHz時鐘頻率,具有ECC功能的512 KB二級高速緩存,還可配置為SRAM以及緩沖存儲器。

② 3個10/100/1000 Mbps增強型三速以太網控制器(eTSEC),TCP/IP加速、服務質量以及分類功能,支持IEEE1588,無損耗流量控制,支持R/G/MII、R/TBI、SGMII多種網絡物理層芯片接口。

③ 豐富的外設接口,包括4個SerDes 至 3.125 GHz控制器多路復用,3個PCI Express接口,2個串行RapidIO接口,2個SGMII接口,高速USB控制器(USB 2.0),增強型主機控制器接口(EHCI),ULPI連接至PHY、SD/MMC接口,2個I2C控制器、DUART,定時器,增強型Local Bus控制器(eLBC),16個通用I/O信號,以及2個4通道DMA控制器。

④ 內置安全引擎,支持的協議包括SNOW、ARC4、3DES、AES、RSA/ECC、RNG、單通SSL/TLS、Kasumi、XOR加速。

⑤ 支持ECC的64位DDR2/DDR3 SDRAM存儲器控制器。

⑥ 可編程中斷控制器(PIC),符合OpenPIC標準。

1.2P2020的Local Bus接口與FPGA的連接

P2020的增強型Local Bus控制器(eLBC)支持GPCM、 FCM和UPM 三種控制模式,該嵌入式平臺的eLBC采用GPCM控制模式,其功能框圖如圖1所示。

圖1 增強型Local Bus控制器功能框圖

eLBC內部的存儲控制部件提供適應各種設備及外設的16位無縫連接,并負責控制可工作在GPCM、FCM和UPM三種模式的Local Bus的8片尋址片區,支持的設備包括SRAM、EPROM、NOR Flash EEPROM、NAND Flash EEPROM、突發 RAM、DRAM等。通過地址鎖存信號(LALE)實現地址及數據信號引腳復用,以減少設備連接的引腳數,eLBC還具備數據奇偶校驗、寫保護、總線監視等數據檢查及保護功能[1]。

該嵌入式平臺FPGA采用Xilinx公司Spartan-6系列的XC6SLX100芯片,其內部含101 261個邏輯單元,4 824 Kb Block RAM[2]。P2020與XC6SLX100通過Local Bus接口進行數據傳輸,并增加XC6SLX100到P2020的I/O中斷信號,用于觸發CPU端的實時接收數據,74ALVT16373用于鎖存高16位地址信號,具體連接如圖2所示。

圖2 P2020與XC6SLX100的連接

2高速數據總線接口設計

P2020與XC6SLX100的數據傳輸分為自定義數據幀的接收及發送。由于XC6SLX100無數據緩沖,而經過其進行信號處理并解析的數據幀不允許有任何丟包現象,P2020通過Local Bus實時無誤接收數據幀對寬帶設備功能實現尤為重要。

采用的接收策略是,由XC6SLX100通過P2020的IRQ0引腳觸發高優先級的I/O下降沿中斷,當P2020接收到此中斷信號后觸發Local Bus,通過DMA傳輸接收不大于4 KB數據幀到系統內存的環形緩沖區,開辟24 MB地址連續的環形緩沖區作為接收緩沖數據池,即提供6 000幀的數據緩沖,足以保證系統峰值數據傳輸。另外開辟一塊內存用于編排當前接收的數據幀的幀號,便于應用程序查詢當前數據幀幀號,當應用程序的當前幀號與驅動程序接收到的數據幀幀號不一致時,應用程序讀取數據幀。當應用程序及驅動程序的數據幀號達到最大值6 000時,應用程序則歸0重新排號,從而實現應用程序追趕驅動程序數據幀號的數據實時提取功能。

P2020對XC6SLX100的數據發送傳輸為設備主動發起事件,并且傳輸速率與接收不對稱,故將XC6SLX100通過映射Local Bus到對應的寫地址空間,通過查詢寫允許標志寄存器,直接操作XC6SLX100內部的發送數據RAM,從而完成數據幀的發送傳輸。

圖3 Local Bus的接收及發送數據流程圖

Local Bus的接收及發送數據工作流程如圖3所示。DMA的環形緩沖內存示意圖如圖4所示。

圖4 DMA環形緩沖內存示意圖

3基于Liunx3.0內核的驅動開發及實現

在該嵌入式平臺上Local Bus驅動的應用本質上屬于字符設備驅動,驅動程序除了提供常規的Linux驅動程序接口函數實現外,還需要實現IRQ0的I/O中斷驅動程序、DMA觸發及完成中斷驅動程序。采用高效的mmap接口函數實現內核空間的大片DMA緩沖數據直接映射到應用程序的用戶空間的操作方法,避免常規的read接口函數在用戶空間與內核空間傳輸數據的拷貝,大大提高了程序的運行效率及操作實時性。

Local Bus的時序配置關系到通信速率的設置及與FPGA交換數據的穩定性,涉及的增強型Local Bus控制器、控制寄存器及訪問控制寄存器如表1所列。

表1 Local Bus時序配置及訪問控制寄存器

Local Bus在GPCM模式下的讀寫時序如圖5所示。

針對Liunx3.0內核的Local Bus高速數據總線接口驅動設計,程序主體為各個文件操作函數的具體實現[2],文件操作結構體hs_local_bus_fops中的成員函數定義如下:

static const struct file_operationshs_local_bus_fops ={

.owner = THIS_MODULE,

.llseek = hs_local_bus_llseek,

.read = hs_local_bus_read,

.write = hs_local_bus_write,

.unlocked_ioctl = hs_local_bus_ioctl,

.open = hs_local_bus_open,

.release = hs_local_bus _release,

.mmap = hs_local_bus_mmap,

.fasync = hs_local_bus_fasync,

};

驅動程序加載及卸載時執行hs_local_bus_init及hs_local_bus_exit函數,其中hs_local_bus_init完成物理地址到虛擬地址映射、Local Bus的時序配置、中斷號申請及與中斷服務函數的關聯等初始化工作,其執行流程圖如圖6所示。

圖5 Local Bus在GPCM模式讀寫時序圖

圖6 驅動程序加載初始化函數hs_local_bus_init流程圖

P2020雙核工作在1 GHz頻率,平臺時鐘為500 MHz,通過對LCRR控制寄存器設置四分頻,得到的Local Bus時鐘為125 MHz,通過對BR3、OR3及LBCR控制寄存器的配置,實現與FPGA相連的Local Bus的LCS3片區在8個Local Bus時鐘內完成一次16位的讀或寫。

首先IRQ0中斷服務函數完成自定義通信協議的查詢,并按協議查詢結果觸發DMA傳輸變長的數據幀到DMA緩沖內存,然后DMA中斷服務函數完成DMA緩存同步、當前幀號編號、按自定義通信協議對FPGA指定狀態寄存器寫傳輸完成標志,最后清空DMA傳輸完成中斷標志。

文件操作函數hs_local_bus_mmap能夠實現內存物理地址空間直接映射到應用程序的用戶空間。hs_local_bus_mmap將DMA數據緩沖內存、當前幀號記錄內存、Local Bus的物理地址空間都映射到應用程序的用戶空間,以供應用程序高效調用。hs_local_bus_mmap里面調用的關鍵函數為io_remap_pfn_range,實際調用的是remap_pfn_range函數,其位于kernel/mm/memory.c,定義如下:

int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,unsigned long pfn, unsigned long size, pgprot_t prot){

pgd_t *pgd;

unsigned long next;

unsigned long end = addr + PAGE_ALIGN(size);

struct mm_struct *mm = vma->vm_mm;

int err;

if (addr == vma->vm_start && end == vma->vm_end) {

vma->vm_pgoff = pfn;

vma->vm_flags |= VM_PFN_AT_MMAP;

} else if (is_cow_mapping(vma->vm_flags))

return -EINVAL;

vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;

err = track_pfn_vma_new(vma, &prot, pfn, PAGE_ALIGN(size));

if (err) {

vma->vm_flags &= ~(VM_IO | VM_RESERVED | VM_PFNMAP);

vma->vm_flags &= ~VM_PFN_AT_MMAP;

return -EINVAL;

}

BUG_ON(addr >= end);

pfn -= addr >> PAGE_SHIFT;

pgd = pgd_offset(mm, addr);

flush_cache_range(vma, addr, end);

do {

next = pgd_addr_end(addr, end);

err = remap_pud_range(mm, pgd, addr, next,pfn + (addr >> PAGE_SHIFT), prot);

if (err)

break;

} while (pgd++, addr = next, addr != end);

if (err)

untrack_pfn_vma(vma, pfn, PAGE_ALIGN(size));

return err;

}

結語

本文詳細介紹了基于P2020處理器的Local Bus與FPGA的高速總線接口設計及驅動程序實現,該接口設計在嵌入式平臺上的通信速率可達到160 Mbps以上的無誤碼實時傳輸,有效解決了Linux系統下實時數據通信問題,其在苛刻的環境條件下使用仍然表現出良好的穩定性,可用于網絡路由、通信線路卡等領域,對PowerPC+FPGA嵌入式系統開發具有較高的參考價值。

參考文獻

[1] Freescale Semiconductor.P2020 QorIQ Integrated Processor Reference Manual,2011.

[2] 宋寶華.Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.

陳崇森(中級工程師),主要從事嵌入式系統及驅動程序開發。

High-speed Data Bus Interface Based on P2020※

Chen Chongsen

(Guangzhou Haige Communications Group Incorporated Company,Guangzhou 510663,China)

Abstract:Taking the embedded platform using Freescale P2020 dual-core processor as the example,the high-speed data bus interface design based on the local bus between CPU and FPGA is introduced,which has DMA transfer function and the ring buffer.The implementation method of the driver for the interface based on Linux3.0 kernel is also introduced.The technology has been applied in a wide band high speed device.The test results show that the stability,data throughput and link stability all meet the design requirements.The design has reference significance to the same type of embedded platform.

Key words:P2020;Local Bus;DMA;ring buffer

收稿日期:(責任編輯:薛士然2015-08-04)

中圖分類號:TP311

文獻標識碼:A

主站蜘蛛池模板: 精品国产电影久久九九| 欧美一区精品| 波多野结衣二区| 97人人模人人爽人人喊小说| 中文字幕久久亚洲一区| 波多野结衣一区二区三区四区| 在线观看国产精品一区| 伊人精品视频免费在线| 久热中文字幕在线| 国产一级无码不卡视频| 色网站免费在线观看| 亚洲天堂视频网站| 欧美人人干| 国产自在线拍| 色综合婷婷| 亚洲一区二区约美女探花| 特级精品毛片免费观看| 亚洲资源在线视频| 久久99国产乱子伦精品免| 玖玖免费视频在线观看| 国产免费怡红院视频| 永久在线播放| 久久亚洲国产视频| 国产亚洲高清在线精品99| A级全黄试看30分钟小视频| 精品亚洲国产成人AV| 久久这里只有精品23| 国产拍揄自揄精品视频网站| 毛片基地视频| 日韩在线2020专区| 国产最爽的乱婬视频国语对白| 色综合综合网| 国产精品蜜臀| 久久国产精品麻豆系列| 91精品国产情侣高潮露脸| 国产女人爽到高潮的免费视频| 91青青草视频在线观看的| 亚洲永久色| 全裸无码专区| 国产 日韩 欧美 第二页| 欧洲欧美人成免费全部视频| 永久免费无码成人网站| 超清无码熟妇人妻AV在线绿巨人 | 在线看片免费人成视久网下载| 成人在线不卡视频| 亚洲欧洲日韩久久狠狠爱| 国产亚洲精久久久久久无码AV| 香蕉在线视频网站| 国产黄色片在线看| 一区二区三区四区精品视频| 伊人激情综合网| 国产在线视频欧美亚综合| 青草视频在线观看国产| 一级毛片免费观看不卡视频| 无码日韩精品91超碰| 亚洲欧洲一区二区三区| 久久精品中文字幕免费| 少妇被粗大的猛烈进出免费视频| 天天躁夜夜躁狠狠躁图片| 免费毛片网站在线观看| 亚洲毛片网站| 999精品在线视频| 女人毛片a级大学毛片免费| 中文字幕日韩视频欧美一区| 无码乱人伦一区二区亚洲一| 国产成人综合亚洲欧洲色就色| 成人噜噜噜视频在线观看| 91福利国产成人精品导航| 青青青视频蜜桃一区二区| 欧美第九页| 欧美有码在线| 欧美a级在线| 国产特级毛片| 搞黄网站免费观看| 99re这里只有国产中文精品国产精品 | 在线免费亚洲无码视频| 国产sm重味一区二区三区| 99在线观看视频免费| 欧美成人国产| 国产XXXX做受性欧美88| 韩国自拍偷自拍亚洲精品| 日韩午夜福利在线观看|