<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 網(wǎng)絡(luò)與存儲(chǔ) > 設(shè)計(jì)應(yīng)用 > 片上PowerPC在VxWorks下的UDP千兆網(wǎng)通信

          片上PowerPC在VxWorks下的UDP千兆網(wǎng)通信

          作者:中國(guó)科學(xué)院光電技術(shù)研究所 張峰 任國(guó)強(qiáng) 時(shí)間:2008-06-10 來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 收藏

            當(dāng)前,向著面積更小、速度更高的方向發(fā)展,百兆網(wǎng)已不能滿足人們的生產(chǎn)和工作需要,用成為工作中迫切的要求。用FPGA實(shí)現(xiàn),有二種模式可以選擇:其一,編寫(xiě)一個(gè)IP軟核;其二,用FPGA內(nèi)嵌的MAC內(nèi)核。方法一的靈活性大,但要實(shí)現(xiàn)并不容易,因此,賽靈公司將其歸為收費(fèi)IP;方法二中,MAC的三態(tài)可配置特性為實(shí)現(xiàn)通信提供了可能。本設(shè)計(jì)就是基于此內(nèi)嵌的Ethernet MAC模塊,在Vx-Works操作系統(tǒng)下成功實(shí)現(xiàn)了千兆網(wǎng)的通信。

          本文引用地址:http://www.ex-cimer.com/article/83944.htm

            1 Virtex4 FX系列FPGA中內(nèi)嵌的千兆通信硬核架構(gòu)

            Virtex4 FX系列FPGA中內(nèi)嵌了多個(gè)用于千兆通信的硬核。以XC4VFX20為例,如圖1所示,它通過(guò)一個(gè)主機(jī)接口連接了2個(gè)EMAC核。2個(gè)EMAC可以一起使用,也可以只使用其中的一個(gè)。

            Virtex4中嵌入的Ethernet MAC硬核主要特點(diǎn):

            ◆支持半雙工和(或)全雙工操作;

            ◆設(shè)計(jì)符合IEEE 802.3-2002標(biāo)準(zhǔn);

            ◆支持3種操作模式:1 Gb/s、100 Mb/s、10 Mb/s;

            ◆支持MII、GMII、RGMII、SGMII通信方式;

            ◆為不限長(zhǎng)度的VLAN幀和JUMBO幀提供技術(shù)支持;

            ◆提供了可選的網(wǎng)絡(luò)管理特性,包括基于每個(gè)分組的統(tǒng)計(jì)數(shù)據(jù)矢量和流程控制。

            通過(guò)一個(gè)與處理器無(wú)關(guān)的接口,可以對(duì)TEMAC核進(jìn)行配置和監(jiān)控,其為用戶選擇適合其應(yīng)用的理想處理器提供了附加的靈活性。

            在1 Gb模式下,TEMAC支持千兆位級(jí)媒體獨(dú)立接口(GMII)和降低千兆位級(jí)媒體獨(dú)立接口(RGMII)。GMII是一個(gè)運(yùn)行頻率為125 MHz的字節(jié)寬并行SDR接口,而RGMII是一個(gè)運(yùn)行頻率為25 MHz的半位元組并行DDR接口,可以提供的總帶寬為1 Gb/s。而且,在100 Mb/s和10 Mb/s模式下,TEMAC均支持MII接口。MII接口是4位寬,在100 Mb/s模式下其工作頻率為25 MHz。在10 Mb/s模式下,MII接口的工作頻率為2.5 MHz。

            由于Virtex4中嵌入了Ethernet MAC硬核,同時(shí),F(xiàn)X系列還嵌入了,這樣,就可以用控制Ethernet MAC實(shí)現(xiàn)千兆網(wǎng)的通信。

            2 下BSP的移植

             操作系統(tǒng)是美國(guó)WindRiver公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)。它采用微內(nèi)核的結(jié)構(gòu),具有支持多種處理器、豐富的網(wǎng)絡(luò)協(xié)議、良好的兼容性和裁剪性等特點(diǎn),同時(shí)具有程序動(dòng)態(tài)鏈接和下載的功能。自從20世紀(jì)80年代問(wèn)世以來(lái),以其不斷推出的升級(jí)版本、高性能內(nèi)核以及友好的用戶開(kāi)發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域逐漸占據(jù)一席之地,尤其以成功應(yīng)用于火星探測(cè)車(chē)和愛(ài)國(guó)者導(dǎo)彈等高科技產(chǎn)品而聞名。的板級(jí)支持包BSP (Board Support Package)是介于底層硬件和上層軟件之間的底層軟件開(kāi)發(fā)包,主要功能是屏蔽硬件,提供操作系統(tǒng)的驅(qū)動(dòng)。具體功能包括:

            ◆單板硬件初始化,主要是CPU的初始化,為整個(gè)軟件系統(tǒng)提供底層硬件支持;

            ◆為操作系統(tǒng)提供設(shè)備驅(qū)動(dòng)和系統(tǒng)中斷服務(wù)程序;

            ◆定制操作系統(tǒng)的功能,為軟件系統(tǒng)提供一個(gè)實(shí)時(shí)多任務(wù)的運(yùn)行環(huán)境;

            ◆初始化操作系統(tǒng),為操作系統(tǒng)的正常運(yùn)行做準(zhǔn)備。

            在嵌入式系統(tǒng)設(shè)計(jì)中,BSP的開(kāi)發(fā)是一項(xiàng)非常復(fù)雜而繁瑣的工作,Xilinx公司提供的EDK套件,可以在很大程度上減輕開(kāi)發(fā)者的工作負(fù)擔(dān)。EDK中的 BSP生成器(BSPgen)可以根據(jù)不同的微處理器、外設(shè)和RTOS組合自動(dòng)產(chǎn)生用戶可裁剪的BSP。它包含了系統(tǒng)所必需的支持軟件,包括Boot代碼、設(shè)備驅(qū)動(dòng)和RTOS的初始化。利用BSPgen可以把Xilinx器件驅(qū)動(dòng)打包到BSP的子目錄下,并且把Xilinx器件驅(qū)動(dòng)與VxWorks及其 Tornado集成開(kāi)發(fā)環(huán)境無(wú)縫集成,充分縮短開(kāi)發(fā)周期。

            但是,BSPgen生成的BSP只是一個(gè)固定的BSP模板,并不能正確地反映RAM/ROM的存儲(chǔ)器映射,不支持用戶通過(guò)BSPgen流程自定義的核/驅(qū)動(dòng)等。因此還需要對(duì)BSPgen產(chǎn)生的BSP進(jìn)行修改。

            對(duì)BSP開(kāi)發(fā)人員來(lái)講,借助EDK的BSPgen,還必須要做以下幾項(xiàng)工作:

            ①修改config.h和Makefile中的RAM、ROM地址及串口速率;

           ?、谛薷膕ysSerial.c,對(duì)串口進(jìn)行正確的設(shè)置;

           ?、墼黾硬荒芘cVxWorks無(wú)縫集成的器件的驅(qū)動(dòng)文件,關(guān)鍵性中斷、GPIO接口等;

            ④配置sysNet.c中的以太網(wǎng)參數(shù),設(shè)置MAC地址;

           ?、莞鶕?jù)EDK中的配置,禁止或使能Cache;


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();