亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? etherne.c

?? 內容包括: 嵌入式TCPIP協議棧應用主機端程序(VC6源碼);如何構造嵌入式Linux系統;基于ARM的嵌入式TCPIP協議的實現等
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* NE2000-compatible net card drivers for 'TCP/IP Lean' (c) Iosoft Ltd. 2000

This software is only licensed for distribution with the book 'TCP/IP Lean',
and may only be used for personal experimentation by the purchaser
of that book, on condition that this copyright notice is retained.
For commercial licensing, contact license@iosoft.co.uk

This is experimental software; use it entirely at your own risk. The author
offers no warranties of any kind, including its fitness for purpose. */

/*
** v0.01 JPB 19/6/97
** v0.02 JPB 19/6/97 Added SPIBB code
** v0.03 JPB 20/6/97 Changed I/O address from 340h to 280h
**                   Added mem status byte clear
** v0.04 JPB 31/7/97 Added experimental whole-packet read
** v0.05 JPB 15/8/97 Fixed bug in length calculation for odd-length packets
** v0.06 JPB 9/1/98  Added assembly-language insert
** v0.07 JPB 13/1/97 Poll Rx interrupt flag to see if packet arrived
** v0.08 JPB 11/12/98 Added base addr. and 16-bit flag to 'etinit'
**                   Removed SPIBB driver code
** v0.10 JPB 28/6/99 Significant rework & simplification of the code
**                   Now works OK on fast CPUs!
**                   Reduced RAM size for 8-bit mode (p43 of UM9008 data sheet)
** v0.11 JPB 20/7/99 Added delay between detecting Rx interrupt & polling regs
** v0.12 JPB 21/7/99 Added interrupt capability
** v0.13 JPB 22/7/99 Added 'DMA complete' check at end of 'putnic'
** v0.14 JPB 22/7/99 Minor speed improvement to 'getnic' and 'putnic'
** v0.15 JPB 22/7/99 Removed unused local vars
** v0.16 JPB 29/10/99 Renamed functions for TCPIPFS compatibility
**                    Rxpacket now returns length excl. CRC
** v0.17 JPB 10/11/99 Restored inline I/O code
** v0.18 JPB 15/11/99 Added Tx and Rx circular buffers
** v0.19 JPB 16/11/99 Removed Starlan length hack - does more harm than good!
** v0.20 JPB 16/11/99 Removed interrupt code
** v0.21 JPB 17/11/99 Replaced min() with minw() or mini()
** v0.22 JPB 7/1/00   Added 'maxlen' to initialisation
** v0.23 JPB 17/1/00  Removed 'maxlen' again!
** v0.24 JPB 20/1/00  Added support for multiple cards
** v0.25 JPB 3/7/00   Revised header for CD
*/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

#include "ether.h"              /* Typedefs and function prototypes */
#include "netutil.h"
#include "net.h"

#define WORDMODE 1              /* Set to zero if using 8-bit XT-bus cards */

/* NE2000 definitions */
#define DATAPORT 0x10
#define NE_RESET 0x1f

/* 8390 Network Interface Controller (NIC) page0 register offsets */
#define CMDR    0x00            /* command register for read & write */
#define PSTART  0x01            /* page start register for write */
#define PSTOP   0x02            /* page stop register for write */
#define BNRY    0x03            /* boundary reg for rd and wr */
#define TPSR    0x04            /* tx start page start reg for wr */
#define TBCR0   0x05            /* tx byte count 0 reg for wr */
#define TBCR1   0x06            /* tx byte count 1 reg for wr */
#define ISR     0x07            /* interrupt status reg for rd and wr */
#define RSAR0   0x08            /* low byte of remote start addr */
#define RSAR1   0x09            /* hi byte of remote start addr */
#define RBCR0   0x0A            /* remote byte count reg 0 for wr */
#define RBCR1   0x0B            /* remote byte count reg 1 for wr */
#define RCR     0x0C            /* rx configuration reg for wr */
#define TCR     0x0D            /* tx configuration reg for wr */
#define DCR     0x0E            /* data configuration reg for wr */
#define IMR     0x0F            /* interrupt mask reg for wr */

/* NIC page 1 register offsets */
#define PAR0    0x01            /* physical addr reg 0 for rd and wr */
#define CURR    0x07            /* current page reg for rd and wr */
#define MAR0    0x08            /* multicast addr reg 0 for rd and WR */

/* Buffer Length and Field Definition Info */
#define TXSTART  0x40           /* Tx buffer start page */
#define TXPAGES  6              /* Pages for Tx buffer */
#define RXSTART  (TXSTART+TXPAGES)  /* Rx buffer start page */
#if WORDMODE
#define RXSTOP   0x7e           /* Rx buffer end page for word mode */
#define DCRVAL   0x49           /* DCR values for word mode */
#else
#define RXSTOP   0x5f           /* Ditto for byte mode */
#define DCRVAL   0x48
#endif
#define STARHACK 0              /* Set non-zero to enable Starlan length hack */

typedef struct                  /* Net driver configuration data */
{
    WORD dtype;                     /* Driver type */
    BYTE myeth[MACLEN];             /* MAC (Ethernet) addr */
    WORD ebase;                     /* Card I/O base addr */
    WORD next_pkt;                  /* Next (current) Rx page */
} CONFIGNE;

static CONFIGNE configs[MAXNETS];   /* Driver configurations */

static WORD ebase;              /* Temp I/O base addr; usually 280h for PC */
int promisc=0;                  /* Flag to enable promiscuous mode */

typedef struct {                /* NIC hardware packet header */
    BYTE stat;                  /*     Error status */
    BYTE next;                  /*     Pointer to next block */
    WORD len;                   /*     Length of this frame incl. CRC */
} NICHDR;
NICHDR nichdr;

/* Private prototypes */
void resetnic(CONFIGNE *cp, char cold);
void getnic(WORD addr, BYTE data[], WORD len);
void putnic(WORD addr, BYTE data[], WORD len);
BYTE nicwrap(int page);
BYTE innic(int reg);
void outnic(int reg, int b);

/* Initialise card given driver type and base addr.
** Return driver type, 0 if error */
int init_etherne(WORD dtype, WORD baseaddr)
{
    int ok=0;
    CONFIGNE *cp;

    cp = &configs[dtype & NETNUM_MASK]; /* Get pointer into driver data */
    cp->dtype = dtype;                  /* Set driver type */
    cp->ebase = ebase = baseaddr;       /* Set card I/O base address */
    outnic(NE_RESET, innic(NE_RESET));  /* Do reset */
    delay(2);
    if ((innic(ISR) & 0x80) == 0)       /* Report if failed */
    {
        printf("  Ethernet card failed to reset!\n");
    }
    else
    {
        resetnic(cp, 1);                /* Reset Ethernet card, get my addr */
        ok = 1;
    }
    return(ok);
}

/* Close down ethernet controller */
void close_etherne(WORD dtype)
{
    ebase = configs[dtype & NETNUM_MASK].ebase;
    if (ebase)
    {
        outnic(CMDR, 0x21);             /* Stop, DMA abort, page 0 */
        configs[dtype & NETNUM_MASK].ebase = 0;
    }
}

/* Return pointer to my Ethernet addr, given driver type */
BYTE *etherne_addr(WORD dtype)
{
    return(configs[dtype & NETNUM_MASK].myeth);
}

/* Poll network interface to keep it alive; send & receive frames */
void poll_etherne(WORD dtype)
{
    WORD len;
    static BYTE ebuff[MAXFRAMEC];
    CONFIGNE *cp;

    cp = &configs[dtype & NETNUM_MASK];
    if (cp->ebase)                          /* If Ether card in use.. */
    {
        ebase = cp->ebase;                  /* Set card I/O address */
        outnic(ISR, 0x01);                  /* Clear interrupt flag */
        /* Receive */
        while ((len=get_etherne(cp->dtype, ebuff))>0)
        {                                   /* Store frames in buff */
            receive_upcall(cp->dtype, ebuff, len);
        }
        /* Transmit */
        while (!(innic(CMDR)&0x04) &&       /* While NIC ready & frame avail */
            (len=transmit_upcall(cp->dtype, ebuff, MAXFRAME))>0)
        {                                   /* ..transmit frame */
            put_etherne(cp->dtype, ebuff, len);
        }
    }
}

/* Get packet into buffer, return length (excl CRC), or 0 if none available */
WORD get_etherne(WORD dtype, void *pkt)
{
    WORD len=0, curr;
    BYTE bnry;
    CONFIGNE *cp;
#if STARHACK
    int hilen, lolen;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久伊人| 中文字幕一区二区三区在线播放| 国产一区二区福利| 亚洲一区影音先锋| 欧美激情综合在线| 欧美二区三区91| 91免费看视频| 国内成人精品2018免费看| 一区二区三区在线看| 国产免费成人在线视频| 91精品中文字幕一区二区三区| 成人avav在线| 国产精品亚洲一区二区三区在线| 亚洲成人动漫在线免费观看| 国产精品传媒入口麻豆| 日韩天堂在线观看| 欧美乱妇15p| 91福利视频在线| 成人av网址在线观看| 韩国女主播一区二区三区| 日韩一区精品视频| 亚洲6080在线| 亚洲国产美女搞黄色| 成人欧美一区二区三区黑人麻豆| 久久亚洲捆绑美女| 精品日韩在线观看| 日韩写真欧美这视频| 7777女厕盗摄久久久| 欧美性猛片aaaaaaa做受| 91视频精品在这里| www.99精品| 北岛玲一区二区三区四区| 国产成人免费在线观看| 国产剧情一区二区| 国产乱码精品一区二区三区五月婷 | 国产精品二三区| 久久久不卡网国产精品一区| 欧美mv日韩mv| 久久综合九色欧美综合狠狠| 精品久久久久av影院| 日韩免费视频线观看| 日韩一区二区三区观看| 欧美一区二区二区| 日韩一级精品视频在线观看| 日韩一级大片在线观看| 日韩美女视频在线| 久久这里只有精品6| 久久久久国产精品厨房| 国产日韩欧美不卡| 国产精品麻豆久久久| 成人免费视频在线观看| 亚洲精品自拍动漫在线| 亚洲综合激情网| 日韩电影在线观看电影| 蜜桃91丨九色丨蝌蚪91桃色| 精品亚洲国内自在自线福利| 国产一区二区三区四区在线观看| 国产精品69毛片高清亚洲| 成人黄色在线网站| 色综合久久中文综合久久牛| 欧美四级电影在线观看| 91精品国产入口| 国产亚洲综合av| 国产精品不卡在线| 亚洲丶国产丶欧美一区二区三区| 亚洲1区2区3区4区| 国产一区二区不卡在线| jlzzjlzz欧美大全| 欧美日本视频在线| 久久婷婷国产综合精品青草| 成人欧美一区二区三区小说| 午夜精品在线视频一区| 国精产品一区一区三区mba视频 | 国产精品一区免费视频| jlzzjlzz亚洲女人18| 欧美高清激情brazzers| 久久蜜桃av一区精品变态类天堂 | 国产精品成人一区二区三区夜夜夜| 亚洲欧美福利一区二区| 日韩1区2区日韩1区2区| 高清shemale亚洲人妖| 色乱码一区二区三区88| 精品免费国产一区二区三区四区| 国产精品剧情在线亚洲| 日韩高清一区二区| 成人h精品动漫一区二区三区| 欧美三级资源在线| 中文字幕成人在线观看| 亚洲va欧美va天堂v国产综合| 国产伦精品一区二区三区在线观看| 91视视频在线观看入口直接观看www| 7777精品久久久大香线蕉| 国产精品乱人伦一区二区| 麻豆精品视频在线观看| 91理论电影在线观看| 精品欧美一区二区三区精品久久 | 日韩欧美二区三区| 亚洲欧洲色图综合| 国产一区二区三区四| 欧美午夜一区二区| 国产精品私人自拍| 午夜精品一区在线观看| 91美女片黄在线观看91美女| 26uuu国产日韩综合| 亚洲国产日产av| 91色婷婷久久久久合中文| 久久新电视剧免费观看| 午夜不卡av免费| 在线一区二区三区做爰视频网站| 久久久久久久综合日本| 麻豆精品久久精品色综合| 欧美三级蜜桃2在线观看| 中文字幕一区二区三区不卡在线| 久久精工是国产品牌吗| 欧美喷水一区二区| 一区二区三区四区乱视频| 粉嫩久久99精品久久久久久夜| 日韩欧美中文字幕制服| 亚洲成人在线免费| 色妹子一区二区| 中文字幕亚洲综合久久菠萝蜜| 国产精品中文字幕一区二区三区| 91精品国产手机| 日韩精品午夜视频| 欧美精品日韩综合在线| 亚洲一区在线观看免费观看电影高清| 99久久免费视频.com| 欧美国产禁国产网站cc| 韩国女主播成人在线| 精品盗摄一区二区三区| 美女一区二区三区在线观看| 欧美日韩免费观看一区三区| 一区二区三区 在线观看视频| av在线不卡观看免费观看| 国产精品女主播av| eeuss国产一区二区三区| 国产精品美女久久久久久久久| 国产成人精品一区二| 国产蜜臀av在线一区二区三区| 国产成人av在线影院| 中文字幕免费不卡在线| 99国产精品国产精品久久| 亚洲欧美综合在线精品| 色哟哟一区二区在线观看| 亚洲一区二区三区四区在线免费观看 | 色94色欧美sute亚洲线路一ni| 亚洲精品成人精品456| 在线视频国内一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 在线视频国产一区| 婷婷综合久久一区二区三区| 日韩一卡二卡三卡| 国产在线精品免费av| 国产欧美一区视频| 91美女在线观看| 午夜电影网一区| 欧美精品一区二区三区高清aⅴ| 国产精品一区二区你懂的| 国产精品短视频| 欧美日韩一区二区三区视频| 蜜臀久久99精品久久久画质超高清| 精品久久99ma| 99精品热视频| 婷婷丁香激情综合| 国产偷国产偷精品高清尤物| av电影一区二区| 五月综合激情日本mⅴ| 久久久天堂av| 色嗨嗨av一区二区三区| 免费一级片91| 国产精品美女久久久久av爽李琼| 欧洲一区二区av| 久久精品99久久久| 亚洲欧美在线视频| 欧美放荡的少妇| 床上的激情91.| 三级久久三级久久| 中文字幕av一区二区三区免费看| 精品久久一二三区| 5月丁香婷婷综合| 五月婷婷综合在线| 欧美精品一区二区三区在线播放| 成人精品高清在线| 婷婷亚洲久悠悠色悠在线播放| 国产片一区二区| 欧美色中文字幕| 国产91精品在线观看| 五月天久久比比资源色| 中文字幕成人在线观看| 91精品国产一区二区| 99视频有精品| 久久99国产精品麻豆| 一区二区三区国产精品| 精品国产乱码久久久久久影片| 色妹子一区二区| 国产精品一二三四| 蜜臀av性久久久久蜜臀av麻豆 | 国产精品传媒视频| 精品卡一卡二卡三卡四在线| 欧美视频一区二区三区|