新聞中心

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

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

        作者:中國科學(xué)院光電技術(shù)研究所 張峰 任國強(qiáng) 時(shí)間:2008-06-10 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 收藏

          ⑥修改sysL ib.c,以顯示正確的信息;

        本文引用地址:http://www.104case.com/article/83944.htm

          ⑦設(shè)置主機(jī)IP地址。

          經(jīng)過以上修改之后,將新的BSP放在Tornado的安裝目錄Tornado_root\target\config下。根據(jù)這個(gè)BSP,在Tornado集成環(huán)境下生成一個(gè)新的工程,然后就可以進(jìn)行一般的嵌入式操作系統(tǒng)開發(fā)了。

          EDK中RAM和ROM的地址映射如表1所列。

                

          若為表1所列的工程,則在config.h和Makfile文件中要進(jìn)行如下修改:

               

          sysNet.c中通過以下語句定義了網(wǎng)絡(luò)的MAC地址,必須根據(jù)真實(shí)的MAC地址進(jìn)行修改,如本文的MAC地址:00:0A:35:01:88:25

               

          sysSerial.c對(duì)串口進(jìn)行初始化,因?yàn)橐_地指定串口ID,sysLib.c中可以顯示鏡像的信息,因此也要進(jìn)行相應(yīng)的修改,如將

               

          通過對(duì)EDK下牛成的BSP的修改,并在Tornado集成環(huán)境下生成正確的鏡像后,可以將其下載到FPGA中。觀察串口的輸出是否正確,可以進(jìn)行相應(yīng)的調(diào)試工作,以確定BSP的移植是正確的。

          3 服務(wù)器/客戶端程序

          對(duì)VxWorks BSP進(jìn)行正確的配置和修改后,在useAppInit.c中書寫自己的服務(wù)器端程序。本設(shè)計(jì)用基于socket的

          網(wǎng)絡(luò)一般可通過socket實(shí)現(xiàn)。socket編程均采用客戶機(jī)/服務(wù)器模式,VxWorks提供了標(biāo)準(zhǔn)的BSDsocket調(diào)用,支持UDP協(xié)議。UDP協(xié)議即數(shù)據(jù)傳輸協(xié)議,它允許創(chuàng)建和維護(hù)與遠(yuǎn)程計(jì)算機(jī)的連接,使其彼此可以進(jìn)行數(shù)據(jù)傳輸。過程如圖2所示。

          服務(wù)器首先調(diào)用socket()建立一個(gè)套接字socket,然后調(diào)用bind()將套接字與一個(gè)本地網(wǎng)絡(luò)地址(IP地址和端口號(hào))捆綁在一起,以保證客戶端正確識(shí)別。接著服務(wù)器再調(diào)用listen()使套接字處于被動(dòng)的準(zhǔn)備接收狀態(tài),同時(shí)規(guī)定它的請(qǐng)求隊(duì)列長度,隨后調(diào)用accept()來接收客戶連接。服務(wù)器進(jìn)程隨即進(jìn)入阻塞狀態(tài)。客戶與服務(wù)器的關(guān)系是不對(duì)稱的。服務(wù)器先啟動(dòng)。然后在某時(shí)刻客戶主動(dòng)發(fā)出請(qǐng)求,服務(wù)器被動(dòng)應(yīng)答。

          客戶端程序首先調(diào)用socket(),這個(gè)函數(shù)產(chǎn)生用于與各分系統(tǒng)連接的套接口,并為每個(gè)套接口返回一個(gè)ID號(hào)。然后初始化一個(gè)套接口結(jié)構(gòu)體,為其賦上該 ID號(hào)以及服務(wù)端的IP地址和端口號(hào),并將其作為函數(shù)connect()的參數(shù).調(diào)用connect()函數(shù)主動(dòng)去連接服務(wù)端。

          當(dāng)服務(wù)端與客戶端建立連接之后,就可以發(fā)送(write)和接收(read)數(shù)據(jù)。部分代碼如下:

               

          客戶端應(yīng)用程序在Windows下用VC實(shí)現(xiàn),代碼略。

          4 實(shí)驗(yàn)結(jié)果

          結(jié)合工程實(shí)際開發(fā)的順序,分2步對(duì)VxWorks下通信進(jìn)行測試:

          第1步,在usrAppInit.c中打印hello the world,若出現(xiàn)圖3所示窗口,則證明VxWorks內(nèi)核已正確加載,以及BSP移植的正確性。程序跑到用戶編寫的usrAppInit.c。

          第2步,對(duì)編寫的UDP服務(wù)器/客戶端進(jìn)行測試,結(jié)果如表2所列。

          5 結(jié) 論

          由于FPGA中嵌入了處理器及用于通信的Ethernet MAC,這樣,為利用FPGA實(shí)現(xiàn)高速網(wǎng)絡(luò)通信奠定了基礎(chǔ)。本文在VxWorks操作系統(tǒng)下實(shí)現(xiàn)了UDP的通信,實(shí)測速度達(dá)到294.68 Mb/s,吞吐量達(dá)到近30%。


        上一頁 1 2 下一頁

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 临西县| 信阳市| 台江县| 静乐县| 长武县| 广州市| 翁牛特旗| 会泽县| 鄂伦春自治旗| 孙吴县| 湘潭县| 大港区| 乌兰察布市| 南部县| 定日县| 蒙自县| 白银市| 麦盖提县| 贺兰县| 沙田区| 普兰县| 安化县| 孟州市| 黄骅市| 西和县| 舞阳县| 乌鲁木齐市| 兴隆县| 汕尾市| 兴化市| 修文县| 江源县| 中方县| 宣威市| 论坛| 新兴县| 桂平市| 县级市| 桐梓县| 元谋县| 拉孜县|