《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Petalinux的Socket網絡通信系統設計與實現
基于Petalinux的Socket網絡通信系統設計與實現
來源:微型機與應用2012年第8期
楊 謝,武傳華,路后兵,楊 標
(合肥電子工程學院,安徽 合肥230037)
摘要: 介紹了一款針對MicroBlaze軟核處理器特別開發的嵌入式操作系統Petalinux,成功地實現了其在ML402開發板上的移植,并且在該系統上實現了基于TCP/IP協議的套接字接口Socket的網絡通信。
Abstract:
Key words :

摘  要: 介紹了一款針對MicroBlaze軟核處理器特別開發的嵌入式操作系統Petalinux,成功地實現了其在ML402開發板上的移植,并且在該系統上實現了基于TCP/IP協議的套接字接口Socket的網絡通信。
關鍵詞: FPGA;MicroBlaze軟核處理器;Petalinux移植;Socket網絡通信

    嵌入式系統是為特定目的而構建的一類計算機設備。該設備具有體積小、功耗低、可靠性穩定、高度自動化、響應速度快等特點,特別適合要求實時和多任務的體系[1]。Petalinux是由PetaLogix公司專門為在Xilinx FPGA的MicroBlaze軟核處理器上運行而開發的嵌入式Linux。Petalinux發布的版本中包含定制的Linux2.4/2.6內核原碼、U-boot內核編碼、相關的開發工具以及開發板參考硬件平臺配置,極大地方便了開發人員的使用,縮短了產品的開發周期。
    對于如何在嵌入式系統上實現遠程網絡通信這一問題,本文給出了一種基于Xilinx開發板ML402的嵌入式網絡通信系統的設計與實現方案,成功實現了開發板與PC機的實時網絡通信。
1 硬件工程設計
1.1 底層硬件平臺的選取與設計

    本設計方案采用Xilinx EDK 10.1在ML402開發板搭建一個最簡化的硬件平臺,結構如圖1所示。

xil

 

    圖中各部件在FPGA 內部以IP核的形式構建并連接,系統以帶有32 bit MicroBlaze軟核的FPGA作為控制中心,SysACE用于存放文件系統和應用程序配置文件;INTC用來實現中斷控制;串口可在調試時輸出系統的運行信息;以太網控制器用來實現以太網功能;DDR_SDRAM通過XCL總線與處理器相連,用于對片外存儲器進行訪問[2]。
1.2 軟件平臺的配置
    在移植Petalinux之前,必須配置BSP(Board Support Package)。所謂BSP,就是為給定的板子提供特定操作系統支持的代碼。介于主板硬件和操作系統之間,屬于操作系統的一部分,主要目的是為了支持操作系統,使之能夠更好地運行于硬件主板。
    Xilinx EDK已經包括相應的BSP產生器,因此,第一步只需要把解壓的Petalinux文件夾下的hardware/edk_user_repository/PetaLogix/bsp/petalinux_v1_00_b文件夾拷貝到EDK文件夾下的\sw\lib\bsp目錄下進行相應的配置即可。接下來打開已建立的硬件工程,進行軟件平臺配置,點擊Software菜單,啟動Software Platform Setting。系統會彈出軟件平臺的配置窗口,可以看到共有3個可配置項——Software Platform、OS and Libraries和Drivers。右方的窗口為可配置選項的參數。首先對Software Platform進行配置,點擊Software Platform,在窗口右側可以看到可配置參數,包括兩個子窗口,其一是processor parameters,其中包括處理器主頻信息、交叉編譯器等選項。其中,extra compiler flag指定了在生成BSP與庫的過程中,交叉編譯器所用的編譯標志,archiver和compiler分別指定了生成BSP與庫所用的工具鏈,在這里只需保持默認即可。在OS and Library settings子窗口中打開OS的下拉菜單,選擇Petalinux,版本只有1.00.b,如果第一步沒有完成,則在點開OS的下拉菜單后,沒有Petalinux選項。
    完成上一步之后,選中OS and Library可配置選項,這里主要是針對開發板對?滋Clinux的BSP進行配置,包括Flash與Memory以及輸入輸出調試端口的配置,在這里主要對以下參數進行修改:
    Lmb memory:dlmb_crtlr
    Main memory:DDR_SDRAM
    Stdin:RS232_Uart
    Stdout:RS232_Uart
    最后點擊OK,退出,基于Petalinux的MicroBlaze軟件平臺配置完成。下一步是根據軟件平臺的配置生成針對MicroBlaze處理器的BSP與庫,使Petalinux與開發板的信息交互成為可能。進入EDK的Software菜單,點擊Generate BSP and Libraries,系統會自動生成板級支持包與庫。之后就可以在microblaze_0/libsrc/petalinux_v1_00_b文件夾下生成auto-config.in文件[3]。
1.3 Petalinux操作系統的移植
    軟件平臺完成后需要對內核進行配置,嵌入式系統開發一般采用交叉編譯的方法,通過PC機對內核和應用程序進行編譯,具體步驟如下:
    (1)將工程所在目錄復制到Petalinux解壓目錄下的
~/hardware/user-platforms目錄下。
    (2)進入Petalinux解壓目錄,運行source ./settings.sh命令,設置Petalinux環境變量。
    (3)進入~/software/petalinux-dist目錄,運行petalinux-new-platform-k 2.6-v Xilinx-p ml402新建用戶平臺;其中-v后綴為FPGA的生產廠商,-p后綴為工程使用的FPGA開發板名稱,-k為配置內核的版本。然后運行make menuconfig命令,進入Vendor/Product Selection選項,選擇相應的平臺,退出并保存。
    (4)進入工程所在文件夾,運行petalinux-copy-auto-
config命令,將libgen生成的microblaze_0/libsrc/Kconfig.auto和autoconfig.in轉換成linux格式,并拷貝到當前活躍的platform下(例如software/linux-2.6.x/arch/Microblaze/platform/ml402)。它是根據在make menuconfig中選擇的vendor/platform來拷貝的。
    (5)內核的配置與編譯
    搭建的底層硬件平臺的不同決定了系統內核的區別,參考文獻[2]中薛慧敏針對不同情況給出了較為詳細的配置過程,可作為參考,在此不再贅述。
    (6)Xmd下載啟動
    Xmd是Xilinx EDK提供的調試工具,可以使用該工具對EDK開發的工程進行調試。使用該方法下載image文件,啟動Petalinux后,通過串口超級終端可以看到系統啟動過程。
2 網絡通信程序的開發
    Petalinux移植成功后,就可以使用petalinux-new-app命令在其上建立軟件應用工程,進行軟件應用的開發。新建的軟件應用工程放在~/petalinux/software/user-apps。
2.1 軟件應用工程的建立
    在petalinux-dist文件夾下輸入命令:petalinux-new-app petaserver,其中petaserver為應用工程名稱。創建成功后,在user-apps文件夾下新建了以工程名稱petaserver為名稱的文件夾,里面包括.C的應用程序、Makefile的編譯規則和readme的幫助文件。
2.2 Socket程序的創建
    進入新建的應用工程文件夾,輸入命令:gedit petaserver.c,打開文本編輯器,對.C的應用程序進行編輯。本應用工程主要是作為網絡服務器,接收客戶端傳送的命令,消息經過處理后再回饋給客戶端,主要流程如圖2所示。

    現行的網絡協議中TCP/IP協議是最通用的一個,因此,本程序也使用該協議實現網絡的互聯[4]。
    Socket接口是TCP/IP網絡的API,Socket接口定義了許多函數或例程,程序員可以用它們來開發TCP/IP網絡上的應用程序。網絡的 Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket具有一個類似于打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨后的連接建立、數據傳輸等操作都是通過該Socket實現的。常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數據報式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對于面向連接的、無差錯的、發送先后順序一致的、包長度不限和非重復的TCP服務應用;數據報式Socket是一種無連接的Socket,對應于無連接的UDP服務應用,主要以獨立的數據報進行網絡傳輸,數據報的最大長度為32 KB,傳輸不保證順序性、可靠性和無重復性,它通常用于單個報文傳輸或可靠性不重要的場合。根據以上特點,本應用選擇流式Socket[1]。
    (1)服務器端petaserver.c主要代碼如下:
    {
        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
//創建套接字Socket函數可以調用Socket函數,
該函數返回一個類似于文件描述符的句柄
        {
          fprintf(stderr,"socket error!\n");
          exit(1);
        }
        if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct
sockaddr))==-1)  //Bind函數將socket與本機上
的一個端口相關聯,在該端口監聽服務請求
        {
          fprintf(stderr,"bind error!\n");
          exit(1);
        }
        if(listen(sockfd,10)==-1)   // Listen函數將一個
套接字轉換為被動傾聽套接字
        {
          fprintf(stderr,"listen error!\n");
          exit(1);
        }
    if((connfd=accept(sockfd,(struct sockaddr *)&their_addr,
&sin_size))==-1)
    //Accept函數從傾聽套接字的
完成連接隊列中接收客戶端連接請求
        {
          fprintf(stderr,"accept error!\n");
          exit(1);
        }
    printf("server:got connection from %s\n",inet_ntoa
(their_addr.sin_addr));
if(send(connfd,"successfully connect\n",20,0)==-1)
//send函數用來控制對套接字的寫操作
        {
          fprintf(stderr,"send error!\n");
          exit(1);
        }
    //顯示連接成功,開始接收客戶端信息
        while((len1=recv(connfd,str,100,0)) > 0)
//recv函數用來控制對套接字的讀操作
        {
          len1=recv(connfd,str,100,0);
          printf("\n收到字符數:%d\n",len1);
          str[len1]=0;
          printf("Received from client:%s\n",str);
        }
        close(sockfd);//Close函數用來關閉一個
套接字描述符
    }
    (2)啟動服務器
    程序編寫好后,重新編譯,生成image.bin文件,下載該文件。
    打開超級終端,系統啟動后輸入用戶名與密碼,進入petalinux系統執行下列命令:
    ls /bin 回車
    petaserver 回車
    可以看到服務器端啟動語句輸出:
    SOCKET: Creating socket..done.
    SOCKET: start bind socket..done.
    SOCKET: start listen..done.
    這時打開PC機客戶端,客戶端使用成都眾山科技有限公司提供的TCP/UDP Socket 調試工具 V2.3,點擊TCP Client按鈕,在彈出的窗口中輸入服務器IP地址:192.168.0.10,端口:8000,點擊連接按鈕,可以看到當PC機客戶端向開發板上服務器端發出連接請求時,服務器端通過PC機超級終端輸出:
    SOCKET:start accept..server:got connection from 192.168.0.1
    Successfully connect
    同時在PC機socket客戶端回顯:Successfully connect;
    客戶端向服務器發送hello petalinux;
    超級終端顯示服務器端已經接收到客戶端發來的信息,屏幕輸出為:15(接收到的字節長度)和hello petalinux(接收到的內容)。
    至此說明客戶端與服務器端完成了網絡的連通,后續就可以接入外圍設備對系統進行進一步的開發與完善了。
    本文簡單介紹了基于Petalinux的嵌入式系統的開發與移植過程以及客戶端與服務器端Socket的創建過程,通過在客戶端及服務器端創建Socket實現了PC機與Petalinux操作系統的實時網絡通信,實驗證明Petalinux的穩定性和實時性較好,為接下來在該系統上進行網絡應用程序開發打下了基礎,能夠滿足進一步實驗需求。
參考文獻
[1] 歐文盛.ARM嵌入式Linux應用實例開發[M].北京:中國電力出版社,2008.
[2] 薛慧敏,武傳華,路后兵,等.基于MicroBlaze的Petalinux嵌入式操作系統移植[J].微計算機信息,2011,27(8):109-110.
[3] 薛小剛,葛毅敏.Xilinx ISE9.x FPGA/CPLD設計指南[M]. 北京:人民郵電出版社,2007.
[4] IT同路人.Linux標準學習教程[M].北京:人民郵電出版社,2008.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          午夜精品区一区二区三| 亚洲精品一区二区三区樱花| 久久精品国内一区二区三区| 国内激情久久| 国产精品久久综合| 激情小说亚洲一区| 国产区日韩欧美| 欧美一区二区在线看| 亚洲影视在线| 日韩亚洲欧美成人一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美在线三区| 亚洲综合色噜噜狠狠| 免费一区视频| 亚洲精品视频一区| 媚黑女一区二区| 美女久久一区| 欧美精品色一区二区三区| 亚洲天堂免费观看| 在线色欧美三级视频| 欧美人与性动交cc0o| 欧美一区二区成人| 国产日韩欧美在线播放| 久久久久久免费| 欧美日韩第一页| 亚洲第一页在线| 欧美亚洲视频一区二区| 欧美 日韩 国产 一区| 亚洲欧美在线播放| 亚洲综合色视频| 欧美香蕉视频| 久久伊人免费视频| 欧美jizzhd精品欧美巨大免费| 国产在线拍揄自揄视频不卡99| 欧美性猛交xxxx乱大交退制版| 国产精品99久久久久久有的能看| 国产精品欧美日韩一区| 亚洲欧美综合| 夜夜嗨av一区二区三区免费区| 欧美日韩在线免费视频| 一片黄亚洲嫩模| 国产精品户外野外| 国产精品人人爽人人做我的可爱| 亚洲视频 欧洲视频| 久久久国产亚洲精品| 亚洲第一精品久久忘忧草社区| 欧美日韩国产成人精品| 美女999久久久精品视频| 亚洲欧美中文字幕| 国产精品视频xxx| 欧美日韩一区二区三区视频| 中文精品在线| 国产偷久久久精品专区| 小黄鸭精品密入口导航| 欧美资源在线| 亚洲一区二区成人在线观看| 狠狠色噜噜狠狠狠狠色吗综合| 欧美国产成人精品| 雨宫琴音一区二区在线| 亚洲国产成人精品久久| 国产日韩欧美一区二区三区四区| 午夜精品福利一区二区蜜股av| 午夜视频在线观看一区二区| av成人免费在线观看| 亚洲黄色成人久久久| 久久久久国产一区二区三区四区| 亚洲欧洲日本国产| 亚洲视频一区在线观看| 中文一区在线| 欧美亚洲综合网| 一本一本大道香蕉久在线精品| 欧美一区二区三区男人的天堂| 国内精品视频在线观看| 国产精品久久久久久久久婷婷| 亚洲二区视频| 国产午夜精品视频| 狠狠久久综合婷婷不卡| 久久精品五月婷婷| 久久九九热免费视频| 性欧美1819sex性高清| 国产精品一二一区| 久久狠狠一本精品综合网| 久久午夜精品| 亚洲欧美日韩一区二区三区在线| 国产精品你懂的在线| 国产精品日韩久久久久| 亚洲综合第一页| 国产女人aaa级久久久级| 国产日韩欧美精品| 亚洲视频中文字幕| 亚洲第一区在线观看| 欧美日本中文字幕| 欧美精品久久久久a| 一区二区三区 在线观看视频| 欧美视频在线观看一区二区| 国产亚洲欧美一级| 欧美精品在线观看91| 精品成人国产| 亚洲精品影院| 亚洲国产高清视频| 欧美日本一道本在线视频| 国内伊人久久久久久网站视频| 国产精品日韩一区二区| 亚洲黄色成人| 国产婷婷一区二区| 亚洲精品韩国| 在线观看av不卡| 精品1区2区3区4区| 亚洲动漫精品| 欧美精品福利视频| 日韩写真视频在线观看| 亚洲国产高清在线观看视频| 一区二区冒白浆视频| 欧美激情一区在线| 夜夜嗨av一区二区三区四区| 欧美中文字幕精品| 国产午夜精品理论片a级大结局| 一区二区日韩精品| 久久精品国产一区二区三区免费看| 亚洲精品小视频在线观看| 国产专区精品视频| 午夜精品一区二区三区在线| 欧美日韩精品伦理作品在线免费观看| 久久久伊人欧美| 亚洲一区国产视频| 欧美在线啊v| 亚洲成色精品| 在线电影国产精品| 亚洲三级免费观看| 久久亚洲视频| 亚洲激精日韩激精欧美精品| 欧美日韩中文字幕综合视频| 夜夜躁日日躁狠狠久久88av| 亚洲精选中文字幕| 欧美日韩国产综合视频在线观看中文| 亚洲国产91精品在线观看| 久久频这里精品99香蕉| 亚洲福利在线视频| 欧美破处大片在线视频| 欧美性色综合| 久久久久久久尹人综合网亚洲| 国产人成一区二区三区影院| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩精品高清| 国产欧美日韩91| 久久一区二区三区国产精品| 久久一区中文字幕| 99精品视频免费在线观看| 国产欧美日韩免费| 美女国产一区| 国产精品美女在线观看| 欧美护士18xxxxhd| 国产亚洲一级| 黄色一区二区在线| 国产精品素人视频| 国产精品久久久久影院亚瑟| 亚洲区一区二区三区| 久久全球大尺度高清视频| 亚洲福利视频网| 欧美日韩在线不卡| 欧美精品电影| 日韩午夜av在线| 蜜臀久久99精品久久久久久9| 狠狠狠色丁香婷婷综合久久五月| 精品88久久久久88久久久| 另类人畜视频在线| 免费成人在线视频网站| 免费一区视频| 夜夜嗨av一区二区三区四区| 国产日韩欧美视频| 国产日韩在线不卡| 亚洲欧美精品中文字幕在线| 欧美视频一区二区在线观看| 宅男噜噜噜66一区二区| 欧美色视频在线| 亚洲国产精品久久久久婷婷884| 亚洲第一二三四五区| 欧美激情一区二区三区蜜桃视频| a4yy欧美一区二区三区| 欧美久久一区| 国产精品视频不卡| 久久er99精品| 亚洲综合国产激情另类一区| 国产精品入口尤物| 久久免费精品日本久久中文字幕| 亚洲精品在线观看免费| 日韩一级二级三级| 激情成人av在线| 国产欧美精品一区二区色综合| 欧美电影资源| 国产一区二区在线观看免费播放| 国产在线不卡精品| 欧美成人a视频| 亚洲综合日韩中文字幕v在线| 久久精品在线观看| 国产美女精品在线| 亚洲电影毛片| 欧美视频手机在线| 伊人婷婷久久| 国内精品写真在线观看| 亚洲图片欧洲图片av| 国产一区二区按摩在线观看| 亚洲无线一线二线三线区别av| 国产精品国产一区二区| 久久黄色网页| 欧美成人国产| 国产麻豆精品视频| 欧美国产精品中文字幕| 国产精品国产三级国产普通话三级| 久久精品国内一区二区三区| av成人黄色| 亚洲国产精品视频一区| 久久婷婷久久| 国产日韩精品一区二区三区| 日韩亚洲欧美一区二区三区| 午夜精品国产| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品毛片a∨一区二区三区|国| 国产精品亚洲综合一区在线观看| 欧美激情区在线播放| 免费一级欧美片在线观看| 欧美视频亚洲视频| 欧美三级黄美女| 国产欧美一区视频| 一本色道久久综合亚洲精品不卡| 麻豆成人精品| 国产精品久久久久久久一区探花| 中日韩高清电影网| 欧美日韩国产综合视频在线| 在线亚洲精品福利网址导航| 国产精品国产三级国产专播品爱网| 欧美视频1区| 欧美99在线视频观看| 午夜精品一区二区三区在线| 欧美日韩国产一区二区三区| 欧美成人伊人久久综合网| 国产精品视屏| 国产精品高潮粉嫩av| 亚洲人午夜精品免费| 久久久噜久噜久久综合| 亚洲欧洲日产国产网站| 免费日韩av电影| 亚洲大黄网站| 亚洲精品综合久久中文字幕| 国产精品一区二区三区久久久| 欧美激情欧美狂野欧美精品| 国产精品99免费看| 亚洲国产日韩在线一区模特| 国产一级精品aaaaa看| 激情综合视频| 亚洲黄色av一区| 黑人极品videos精品欧美裸| 欧美福利在线观看| 国产亚洲va综合人人澡精品| 国产精品久久久爽爽爽麻豆色哟哟| 国产偷国产偷亚洲高清97cao| 美女露胸一区二区三区| 亚洲高清在线观看| 欧美三级第一页| 亚洲二区三区四区| 欧美在线观看日本一区| 国产真实乱子伦精品视频| 国产精品日韩久久久久| 欧美亚洲第一页| 妖精成人www高清在线观看| 黄色成人在线观看| 99精品欧美| 91久久综合| 欧美一级一区| 欧美日韩一级视频| 免费毛片一区二区三区久久久| 亚洲欧美日韩一区二区在线| 夜夜嗨av一区二区三区免费区| 欧美日本高清视频| 国产伦精品一区二区三区视频黑人| 亚洲欧美日本国产专区一区| 亚洲黄色免费网站| 久久精品日产第一区二区| 国产精品乱码人人做人人爱| 亚洲激情在线观看视频免费| 欧美一区二区私人影院日本| 国产精品视频男人的天堂| 国产一区日韩一区| 国产日韩亚洲欧美精品| 欧美日韩一区二区高清| 国产一区二区在线免费观看| 亚洲电影免费在线| 一本色道久久综合亚洲精品不| 夜夜爽99久久国产综合精品女不卡| 欧美区亚洲区| 欧美日韩成人在线观看| 国产精品v欧美精品∨日韩| 在线免费高清一区二区三区| 亚洲国产乱码最新视频| 国产毛片一区二区| 久久人人97超碰精品888| 狠狠狠色丁香婷婷综合久久五月| 女女同性女同一区二区三区91| 老司机凹凸av亚洲导航| 国产精品日韩高清| 午夜精品视频一区| 欧美午夜视频网站| 欧美国产日韩在线观看| 欧美日韩国产片| 欧美理论片在线观看| 亚洲女人天堂成人av在线| 午夜精品三级视频福利| 欧美日一区二区在线观看| 欧美金8天国| 亚洲欧美日韩精品综合在线观看| 国产色综合网| 久久美女性网| 亚洲精品中文在线| 国产精品国产一区二区| 欧美日本亚洲| 99精品国产在热久久下载| 欧美韩日一区| 国产美女一区| 欧美日韩精选| 国产精品国产三级国产普通话99| 亚洲精品一区在线| 国产精品一二三四区| 欧美日韩亚洲激情| 樱桃成人精品视频在线播放| 亚洲激情视频在线观看| 一区二区高清视频| 一区二区三区偷拍| 在线日本高清免费不卡|