• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于LXT971A的嵌入式系統的網絡通訊設計

    基于LXT971A的嵌入式系統的網絡通訊設計

    作者: 時間:2006-02-15 來源:網絡 收藏
    摘要:介紹接口電路的內部結構和引腳功能,給出在中采用與MPC860型處理器進行的硬件接口實現方法,同時介紹的服務器端的軟件編程。

    關鍵詞: 網絡通訊 接口電路 處理器 服務器

    1 概述

    在嵌入式系統中,網絡通訊是非常重要而且必備的功能。為了充分發揮嵌入式系統中CPU的網絡控制功能,選擇一款合適 的網絡接口電路至關重要,網絡通訊接口電路就是一個很好的選擇。LXT971A是Intel公司的網絡通訊接口電路,它符合IEEE標準,直接支持10Mb/s/100Mb/s雙絞線應用,也支持100Mb/s光纖接口;該電路提供的MII接口能很好的符合10/100Mb/s雙絞線應用,也支持100Mb/s光纖接口;該電路提供的MII接口能很好的符合10/100MACs。

    圖1所示是LXT971A的內部功能結構框圖。

    圖1

    2 LXT971A的引腳功能

    LXT971A具有64個引腳,其引腳排列如圖2所示。各引腳的功能如下:

    TXD0-TXD3是并行數據發送端口;

    TX_EN是發送使能端;

    TX_CLK是發送時鐘,速率為10Mb/s時為2.5MHz,速率為100Mb/s時為25MHz;

    TX_ER是錯誤數據發送端;

    RXD0-RXD3是并行數據接收端;

    RX_CLK是接收時鐘,速率為10Mb/s時為2.5MHz,速率為100Mb/s時為25MHz.

    RX_DV是接收數據正常指示端;

    COL是沖突檢測端;

    CRS是載波檢測端;

    MDDIS、MOC、MDIO、MDINT是MII控制信號端口;

    TPFOP、TPFON是網絡接口輸出正、負端口;

    TPFIP、TPFIN是網絡接口輸入正、負端口;

    SD/TP是TP選擇;

    TxSLEW0、TxSLEW1是TP驅動端;

    RESET是復位端;

    ADDR0-ADDR4是設備地址端口;

    RBIAS是偏置端;

    PAUSE是暫停端;

    SLEEP是休眠端;

    TEST0、TEST1是測試端,接地;

    REFCLK/XI、REFCLK/XO是晶振輸入、輸出端;

    TDI、TDO、TMS、TCK、TRST是JTAG測試端;

    LED/CFG1、LED/CFG2、LED/CFG3是LED驅動或配置輸入端。

    3 硬件接口

    在實際應用系統中,要實現LXT971A的網絡接口功能還要借助于MPC860型網絡通信處理器。LXT971網絡接口電路與MPC860網絡通信處理器是一種非常好的組合,以它們為核心弄好的網絡產品有很好的實用性。筆者的硬盤錄像機和遠程電量采集器均是以MPC860為核心CPU,以LXT971為接口電路來實現的,實際應用中均取得了比較好的應用效果。

    MPC860是Motorola公司推出的網絡通信處理器,其特點主要有:內嵌PowerPC內核;4kbyte指令緩沖和4kbyte數據緩沖;強有力的內存控制和系統功能;高效的結構,可用一個獨立的RISC處理器處理通訊單元;可支持以太網、快速以太網、HDLC、ATM等;帶有8kB雙端口RAM;可提供50MHz、66MHz、80MHz頻率,采用357引腳BGA封裝;具有強大的第三方工具支持等。

    SPC860與LXT971的接口采用標準的MII接口,SD/TP引腳接地,傳輸介質可采用雙絞線。MPC860可通過MII接口初始化LXT971A,而不需要使用LXT971A中的JTAG口。它們的連接原理如圖3所示。

    4 軟件

    在筆者所開發的嵌入式系統中,MPC860所配置的操作系統為Nucleus PLUS實時嵌入式系統。該系統對網絡的出色支持能夠使MPC860與LXT971實現無縫連接,而軟件中,只需簡單調用操作系統中的MII_AutoNeg 0函數就可以完成初始化LXT971A的工作,進而快速地進行下一步的網絡應用編程。

    該系統可支持TCP、UDP、RAW_IP3種接口編程方式。下面給出的是采用TCP方式的服務程序。

    Void TCP_Server_Task(UNSIGNED argc,VOID *argv) //TCP服務器端任務

    {

    INT socketd,newsock; //套接字標識

    Struct addr_struct *servaddr; //服務器地址結構指針

    unsigned int i;

    VOID *pointer;

    STATUS status;

    Struct addr_struct client_addr;

    NU_DEVICE devices[1];

    CHAR serv_in_addrp[]={192.168.1.1};//服務器(本機)IP地址

    CHAR subnet[]={255,255,255,0};//子碼掩摸

    if(NU_Init_Net(Noncached_Memory=NUU_SUCC ESS) //初始化網絡模塊

    {

    DEMO_Exit(0); //不成功退出

    }

    memcpy(devices[0].dv_ip_addr,

    serv_ip_addr,4);

    //服務器IP地址拷貝到地址結構中

    memcpy(devices[0].dv_subnet_mask,subnet,4);

    //服務器子碼掩摸拷貝到地址結構中

    memcpy(devices[0].dv_subnet_mask,subnet,4);

    //服務器子碼掩拷貝到地址結構中

    if(UN_Init_Devices(devices,1)!=NU_SUCCESS)

    //初始化網絡設備LXT971A

    {

    DEMO_Exit(0); //不成功退出

    }

    if((socketd=NU_Socket(NU_FAMILY_IP,NU_TYPE_STREAM,0))>=0)

    //創建套接字

    {

    if((NU_Bind(socketd,servaddr,0))>=0)

    //綁定服務器IP地址

    {

    status=NU_Listen(socketd,10);//偵聽

    if(status==NU_SUCCESS)

    {

    for=(i=0;iDEMO_MAX_CONNE CTIONS;i++)

    {

    newsock=NU_Accept(socketd,client_addr,0);//接地

    if(newsock>=0)

    {status=NU_Send_T0_QueuesocketQueue,(UNSIGNED*)newsock,1,NU_SU SPEND}; //接收成功隊列發送

    }

    }

    }

    }

    }

    }

    編程方式與Windows的網絡編程相似。

    5 結束語

    該設計應用廣泛,凡是對網絡通訊要求比較高的產品均可采用該設計。如用作監控系統核心產品的硬盤錄像機DVR、10萬伏變電站上用的高端遠程電理采集器、電信網中的路由器等。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 鞍山市| 运城市| 昌黎县| 灵寿县| 贵港市| 宁津县| 南靖县| 道孚县| 堆龙德庆县| 集安市| 沙洋县| 武平县| 兴国县| 抚州市| 怀安县| 威海市| 墨竹工卡县| 朝阳区| 庄浪县| 三台县| 甘谷县| 陇西县| 曲麻莱县| 开阳县| 水城县| 张家口市| 科尔| 乌审旗| 逊克县| 日喀则市| 聂拉木县| 斗六市| 临漳县| 祁阳县| 庄浪县| 潜山县| 灵山县| 绥化市| 武穴市| 和政县| 买车|