<ul id="o4jpt"></ul>
  •  

    ZLIP 一個公開源碼的為51單片機設(shè)計的TCP/IP協(xié)議棧

     

     


    點擊這里訪問ZLIP 新網(wǎng)站

    ZLIP首頁
    新聞
    鏈接
    文檔
    下載
    ZLIP開發(fā)板
    常見問題

    常見問題

    Q: 是否有對ZLIP源代碼注釋和解說的文章?

    A:對ZLIP詳細(xì)注釋和解說的文章還沒有,不過有一些文檔可以參考�?梢詤⒖�文檔部分


    Q:你是否有一個硬件的環(huán)境的描述,這樣,我們只要設(shè)計一個硬件,就能夠驗證程序了。

    A:在ZLIP的軟件包的說明文檔中給了RTL8019AS的連接電路圖,根據(jù)這個電路將RTL8019AS和51單片機連接來制作硬件開發(fā)板,ZLIP0.2可以在該開發(fā)板上運行。并且通過以太網(wǎng)和同一個局域網(wǎng)中的PC機上的程序進(jìn)行通信。注意PC機和開發(fā)版的子網(wǎng)掩碼應(yīng)該一樣。另外可以用siniffer軟件監(jiān)聽和調(diào)試。


    Q:能否結(jié)合到UCOS51或者RTS51中,并給出一個工程DEMO。最好是UCOS51中,這樣移植到其他系統(tǒng)就方便了。

    A:ZLIP設(shè)計目標(biāo)是能夠在沒有操作系統(tǒng)的環(huán)境下也能工作。但是也可以結(jié)合到UCOS51等系統(tǒng)中,這一步的工作現(xiàn)在還沒有做。


    Q:是否有更新的版本?

    A:目前(04/10/14)最新版本為0.2,有空的話我會加以改進(jìn)推出更新的版本。


    Q:網(wǎng)卡是怎樣連接的?是不是我做的網(wǎng)卡直接跟電腦連接還是別的方式?

    A:在ZLIP的軟件包的說明文檔中給了RTL8019AS的連接電路圖,根據(jù)這個電路將RTL8019AS和51單片機連接來制作硬件開發(fā)板,ZLIP0.2可以在該開發(fā)板上運行。


    Q:我照要求移植到我剛做的網(wǎng)卡demo板上,但是程序運行時無任何反應(yīng),不知是如何調(diào)試?

    這是一個很常見的問題,讓板子工作分以下幾步:

    一、首先需要確認(rèn)網(wǎng)卡(RTL8019AS)已經(jīng)工作

    1.確認(rèn)RTL8019的地址已經(jīng)和硬件電路圖一致了。即修改以下兩個宏定義:

    /* for example if you use a1-a5 as address lines ADDRESS_SHIFT should be 0x02 */
    #define ADDRESS_SHIFT 0x1

    /* base address of RTL8019 */
    #define RTL_BASE_ADDRESS 0x8040

    注意!從本網(wǎng)站下載的51TCP/IP開發(fā)板已經(jīng)對硬件做了一些改動,這樣如果使用本站以前下載的ZLIP源代碼(現(xiàn)在已經(jīng)修正)則需要修改RTL_BASE_ADDRESS為0x8040,或下載本站最新ZLIP代碼。地址為0x8040的分析如下:

    RTL8019的地址SA0-SA19必須落在有效地址范圍內(nèi),才能訪問RTL8019as。否則D0-D7是高阻態(tài)。這里我們設(shè)置SA19-SA0為(0000 0000 0010 010x xxxx)b,其中x表示由外部地址線決定,共可決定16個地址。為了尋址方便,我們想設(shè)置8019的地址范圍為8040H到805FH,這只要將51的A15接到SA9,A9接到SA15即可。

    2.如果程序初始化完畢,開發(fā)板網(wǎng)口接上網(wǎng)線(另一端要接入以太網(wǎng),不能懸空)則開發(fā)板的網(wǎng)絡(luò)指示燈應(yīng)該會閃動,表示RTL8019AS初始化正常。

    二、發(fā)送第一個測試包

    在發(fā)送TCP/IP包之前發(fā)送一個測試包,這個包就是ARP包。這一步也可以直接跳過。

    1.安裝sniffer程序。并將安裝上sniffer的計算機和開發(fā)板的以太網(wǎng)連接。注意sniffer軟件的Define Filter設(shè)置->Advanced中的IP和IP ARP前面都要打勾;Define Filter設(shè)置->Address中設(shè)置Hardware的一個地址為52544c302e2f(這個是開發(fā)板的默認(rèn)物理地址),也就是說物理地址是這個的數(shù)據(jù)包全部接收。然后可以開始監(jiān)聽了。

    2.發(fā)送一個ARP包

    Main函數(shù)初始化完網(wǎng)卡后調(diào)用如下的函數(shù)(可以放在RTL8019.c中)發(fā)送一個ARP包

    void RTLSendPacketTest()
    {
    /* send a arp request packet, src ip = 192.168.2.13, dest ip = 192.168.2.14,
    if you config your computer's ip as 192.168.2.14, then after run this function,
    your computer will receive the packet, and when you type "arp -a" in windows
    command window(dos window) you will see a arp entry of 52 54 4c 30 2e 2f.
    this indicate a packet has been successful sent
    */
    /* this is a arp broad cast packet */
    TestPacket[0] = 0xff;
    TestPacket[1] = 0xff;
    TestPacket[2] = 0xff;
    TestPacket[3] = 0xff;
    TestPacket[4] = 0xff;
    TestPacket[5] = 0xff;
    TestPacket[6] = 0x52;
    TestPacket[7] = 0x54;
    TestPacket[8] = 0x4c;
    TestPacket[9] = 0x30;
    TestPacket[10] = 0x2e;
    TestPacket[11] = 0x2f;
    TestPacket[12] = 0x08;
    TestPacket[13] = 0x06;
    TestPacket[14] = 0x00;
    TestPacket[15] = 0x01;
    TestPacket[16] = 0x08;
    TestPacket[17] = 0x00;
    TestPacket[18] = 0x06;
    TestPacket[19] = 0x04;
    TestPacket[20] = 0x00;
    TestPacket[21] = 0x01;

    /* ARPPacket->IPDestAddr = DestIP;*/
    TestPacket[22] = 0xc0;
    TestPacket[23] = 0xa8;
    TestPacket[24] = 0x02;
    TestPacket[25] = 0x0e;

    /* ARPPacket->IPScrAddr = NetIf->IPAddr; */
    TestPacket[26] = 0xc0;
    TestPacket[27] = 0xa8;
    TestPacket[28] = 0x02;
    TestPacket[29] = 0x0d;

    /* MemCopy(ARPPacket->EtherDestAddr,EtherAddrAny,ETHER_ADDR_LEN); */
    TestPacket[30] = 0xFF;
    TestPacket[31] = 0xFF;
    TestPacket[32] = 0xFF;
    TestPacket[33] = 0xFF;
    TestPacket[34] = 0xFF;
    TestPacket[35] = 0xFF;

    TestPacket[36] = 0x52;
    TestPacket[37] = 0x54;
    TestPacket[38] = 0x4c;
    TestPacket[39] = 0x30;
    TestPacket[40] = 0x2e;
    TestPacket[41] = 0x2f;

    RTLSendPacket(TestPacket, MIN_PACKET_SIZE);
    }

    這樣sniffer應(yīng)該接收到一個數(shù)據(jù)包,說明發(fā)送成功。

    三、TCP/IP發(fā)送測試:

    1.確認(rèn)PC機和開發(fā)板已經(jīng)連接

    2.確認(rèn)PC機和開發(fā)板處在同一個網(wǎng)段。開發(fā)板默認(rèn)為192.168.2.xxx網(wǎng)段,可以通過修改Main.c函數(shù)修改網(wǎng)段。

    3.運行本網(wǎng)站現(xiàn)在的SocketTest程序,進(jìn)行TCP/IP連接測試,ZLIP默認(rèn)發(fā)起連接的主機地址是192.168.2.15,也就是說你的PC機地址必須為192.168.2.15,如果不是修改Main.c代碼或者主機IP。還有默認(rèn)板子在1001端口監(jiān)聽,向PC機發(fā)起連接的端口也是1001。板子接收的數(shù)據(jù)會在串口輸出。SocketTest接收的數(shù)據(jù)會寫入文件中。


    Q:文檔中給出的RTL8019電路圖中SA6至SA9的連接和其他方案不同,能否解釋一下SA6為什么接高?而SA8卻接地?

    A:RTL8019AS在非jumpless方式下可以通過CONFIG1寄存器設(shè)置RTL8019AS的基地址RTL_BASE_ADDRESS。從RTL_BASE_ADDRESS+00到RTL_BASE_ADDRESS+1F范圍的IO地址屬于RTL8019as內(nèi)部寄存器。10-17的任意一個地址都對應(yīng)RemoteDMAPort,而18-1F任意一個都對應(yīng)ResetPort。例如設(shè)置基地址為2400的時候在SA0-SA19上給出0x2400就可以訪問RTL內(nèi)部第一個寄存器。在jumpless方式下,也就是JP引腳為1的情況下,外部引腳BD0-BD3對應(yīng)CONFIG1寄存器的IOS3-IOS0,也就是說通過引腳就可以設(shè)置基地址。你看到的連接方案不同很可能是由于基地址設(shè)置的不同引起的。

     

     

    <ul id="o4jpt"></ul>
  • 久热伊人 | 狼人入口国产 | 五月婷婷大香蕉 | 欧美成人91 | 欧洲性爱在线 | 伊人成人网站在线观看 | 成人午夜毛片 | 91视频乱伦 | 久久8888 | 在线观看你懂得 |