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

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

?? etherne.c

?? 這是ARMSYS44B0-P專業開發板的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* NE2000-compatible net card drivers 
noice: this file only can work for "Byte-mode".*/

#include <stdio.h>
//#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include "..\Target\44blib.h"

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

#define WORDMODE 0              /* Set to zero if using 8-bit XT-bus cards */
//---------8019 register define (ethernet.sch)------------------------------//
#define RTL8019_Base	0x08000000//Bank4 0x08000000~0x0c000000
#define RTL_Offset_00	0x0000    //Register (3 pages) 
#define RTL_Offset_01	0x0100
#define RTL_Offset_02	0x0200
#define RTL_Offset_03	0x0300
#define RTL_Offset_04	0x0400
#define RTL_Offset_05	0x0500
#define RTL_Offset_06	0x0600
#define RTL_Offset_07	0x0700
#define RTL_Offset_08	0x0800
#define RTL_Offset_09	0x0900
#define RTL_Offset_0a	0x0a00
#define RTL_Offset_0b	0x0b00
#define RTL_Offset_0c	0x0c00
#define RTL_Offset_0d	0x0d00
#define RTL_Offset_0e	0x0e00
#define RTL_Offset_0f	0x0f00
#define RTL_Offset_10	0x1000    //DMA address
#define RTL_Offset_18	0x1800    //Reset address
#define RTL8019_REG_0	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_00))
#define RTL8019_REG_1	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_01))
#define RTL8019_REG_2	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_02))
#define RTL8019_REG_3	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_03))
#define RTL8019_REG_4	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_04))
#define RTL8019_REG_5	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_05))
#define RTL8019_REG_6	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_06))
#define RTL8019_REG_7	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_07))
#define RTL8019_REG_8	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_08))
#define RTL8019_REG_9	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_09))
#define RTL8019_REG_A	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_0a))
#define RTL8019_REG_B	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_0b))
#define RTL8019_REG_C	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_0c))
#define RTL8019_REG_D	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_0d))
#define RTL8019_REG_E	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_0e))
#define RTL8019_REG_F	(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_0f))
#define RTL8019_REG_DMA		(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_10)) //1 byte
#define RTL8019_REG_DMA_HW	(*(volatile unsigned short*)(RTL8019_Base+RTL_Offset_10))//2 byte
#define RTL8019_REG_RST		(*(volatile unsigned char*)(RTL8019_Base+RTL_Offset_18))


/* NE2000 definitions */
#define DATAPORT RTL8019_REG_DMA//0x10
#define NE_RESET RTL8019_REG_RST//0x18

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

/* NIC page 1 register offsets */
#define PAR0    RTL8019_REG_1//0x01            /* physical addr reg 0 for rd and wr */
#define PAR1    RTL8019_REG_2//0x02
#define PAR2    RTL8019_REG_3//0x03
#define PAR3    RTL8019_REG_4//0x04
#define PAR4    RTL8019_REG_5//0x05
#define PAR5    RTL8019_REG_6//0x06
#define CURR    RTL8019_REG_7//0x07            /* current page reg for rd and wr */
#define MAR0    RTL8019_REG_8//0x08            /* multicast addr reg 0 for rd and WR */
#define MAR1    RTL8019_REG_9//0x08
#define MAR2    RTL8019_REG_A//0x08
#define MAR3    RTL8019_REG_B//0x08
#define MAR4    RTL8019_REG_C//0x08
#define MAR5    RTL8019_REG_D//0x08
#define MAR6    RTL8019_REG_E//0x08
#define MAR7    RTL8019_REG_F//0x08

/* 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 */
    LWORD ebase;                    /* Card I/O base addr */
    WORD next_pkt;                  /* Next (current) Rx page */
} CONFIGNE;

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

static LWORD 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;

BYTE MYMAC[MACLEN]={0x01,0x12,0x34,0x56,0x67,0x89};

/* 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);
extern void Delay(int time);
extern void Uart_Printf(char *fmt,...);

/* Initialise card given driver type and base addr.
** Return driver type, 0 if error */
int init_etherne(WORD dtype, LWORD 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)); 
    NE_RESET=0x03;                      /* Write a random number, then do reset */
    Delay(100);
    //if ((innic(ISR) & 0x80) == 0)       /* Report if failed */
    if((ISR & 0x80)==0)
    {
        Uart_Printf("  Ethernet card failed to reset!\n");
    }
    else
    {
        Uart_Printf("\nEthernet card success to reset!\n");
        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);
        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);
        ISR=0x01;                           /* Clear interrupt flag */
		/* Transmit */
        //while (!(innic(CMDR)&0x04) &&       /* While NIC ready & frame avail */
        while(!(CMDR&0x04)&&(len=transmit_upcall(cp->dtype, ebuff, MAXFRAME))>0)
        {                                   /* ..transmit frame */
            put_etherne(cp->dtype, ebuff, len);
        }
		Delay(200);
        /* Receive */
        while ((len=get_etherne(cp->dtype, ebuff))>0)
        {                                   /* Store frames in buff */
            receive_upcall(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;
#endif
    //Uart_Printf("\n Come to get_etherne");
    cp = &configs[dtype & NETNUM_MASK];
    ebase = cp->ebase;
    //if (innic(ISR) & 0x10)              /* If Rx overrun.. */
    if(ISR & 0x10)
    {
        Uart_Printf("  NIC Rx overrun\n");
        resetnic(cp, 0);                /* ..reset controller (drastic!) */
    }
    //outnic(CMDR, 0x60);
    CMDR=0x60;                          /* DMA abort, page 1 */
    curr = CURR;//innic(CURR);                 /* Get current page */
    //outnic(CMDR, 0x20);
    CMDR=0x20;                          /* DMA abort, page 0 */
    if (curr != cp->next_pkt)           /* If Rx packet.. */
    {
        //Uart_Printf("\n Rx packet");
        memset(&nichdr, 0xee, sizeof(nichdr));  /* ..get NIC header */
        getnic((WORD)(cp->next_pkt<<8), (BYTE *)&nichdr, sizeof(nichdr));
#if STARHACK
        hilen = nichdr.next - cp->next_pkt - 1;
        lolen = nichdr.len & 0xff;
        if (hilen < 0)                  /* Do len calc from NIC datasheet */
            hilen = RXSTOP - cp->next_pkt + nichdr.next - RXSTART - 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美本精品男人aⅴ天堂| 欧美日韩mp4| 欧美bbbbb| 亚洲欧美日韩电影| 精品国产伦理网| 欧美三级韩国三级日本一级| 成人亚洲精品久久久久软件| 美女视频网站黄色亚洲| 亚洲啪啪综合av一区二区三区| 欧美一区二区三区免费视频| 色婷婷久久99综合精品jk白丝| 麻豆91小视频| 午夜欧美2019年伦理| 国产精品久久久久婷婷| 精品日产卡一卡二卡麻豆| 91久久精品国产91性色tv| 国产大陆a不卡| 久久电影网电视剧免费观看| 亚洲福利电影网| 日韩理论在线观看| 中文成人综合网| 久久九九久久九九| 欧美mv和日韩mv的网站| 91精品在线一区二区| 欧美三级电影一区| 欧洲人成人精品| 日本福利一区二区| 91在线观看高清| va亚洲va日韩不卡在线观看| 东方欧美亚洲色图在线| 国产精品888| 国产一区 二区 三区一级| 蜜桃一区二区三区在线观看| 日韩电影在线观看一区| 日韩主播视频在线| 日韩黄色一级片| 首页欧美精品中文字幕| 亚洲国产成人高清精品| 亚洲小说欧美激情另类| 亚洲国产成人va在线观看天堂| 亚洲精品国产无天堂网2021 | 中文字幕二三区不卡| 26uuu另类欧美| 久久先锋影音av鲁色资源| 欧美精品一区二区三区很污很色的| 欧美一级精品大片| 欧美岛国在线观看| 欧美成人乱码一区二区三区| 欧美成人精精品一区二区频| 久久综合久久综合亚洲| 国产日韩高清在线| 亚洲人成伊人成综合网小说| 夜夜爽夜夜爽精品视频| 五月综合激情婷婷六月色窝| 免费的成人av| 国产精品一区二区x88av| 国产91丝袜在线观看| 不卡av在线免费观看| 在线免费观看一区| 91.com视频| 2017欧美狠狠色| 国产精品蜜臀av| 一级日本不卡的影视| 日韩中文字幕1| 国内精品久久久久影院色| 国产99久久久精品| 99久久精品国产导航| 欧美日韩在线免费视频| 日韩精品一区二区三区蜜臀| 欧美国产综合色视频| 亚洲综合自拍偷拍| 蜜桃精品视频在线观看| 丁香啪啪综合成人亚洲小说| 欧美特级限制片免费在线观看| 欧美一级电影网站| 中文一区二区在线观看| 亚洲高清免费一级二级三级| 精品在线观看免费| 91色婷婷久久久久合中文| 欧美一区二区三区四区视频 | 亚洲精品在线免费观看视频| 国产精品三级av| 丝袜亚洲精品中文字幕一区| 国产mv日韩mv欧美| 91精品国产福利| 中文子幕无线码一区tr | 一本色道久久综合亚洲精品按摩| 欧美精品久久99| 国产精品免费久久久久| 日韩av一二三| 91免费版pro下载短视频| 91精品国产综合久久福利软件| 国产欧美视频在线观看| 午夜欧美电影在线观看| 9久草视频在线视频精品| 欧美一区二区性放荡片| 亚洲欧美一区二区三区极速播放| 日韩黄色在线观看| 色香色香欲天天天影视综合网 | 一区二区三区国产| 国产大陆精品国产| 日韩一区二区麻豆国产| 一区二区三区中文字幕电影| 国产激情一区二区三区桃花岛亚洲| 欧美丝袜丝交足nylons| 国产精品女上位| 国产在线精品视频| 777午夜精品视频在线播放| ...xxx性欧美| 国产成人一级电影| 日韩欧美www| 天堂在线亚洲视频| 欧美色图免费看| 亚洲精品中文在线| 99精品在线观看视频| 国产日韩欧美不卡在线| 寂寞少妇一区二区三区| 日韩亚洲欧美一区二区三区| 亚洲一区二区精品视频| 色网站国产精品| 综合激情网...| 不卡一区二区中文字幕| 国产女人aaa级久久久级 | 久久久久久久久久久久电影 | 精品一区二区久久| 日韩一区和二区| 日韩av网站在线观看| 51精品秘密在线观看| 亚洲午夜电影网| 欧美色精品天天在线观看视频| 一区二区高清免费观看影视大全 | 国产色婷婷亚洲99精品小说| 精品中文av资源站在线观看| 日韩欧美精品在线视频| 男人的j进女人的j一区| 日韩欧美国产不卡| 久久99久久精品| 精品捆绑美女sm三区| 国产综合色视频| 久久久久青草大香线综合精品| 国产综合色在线视频区| 国产日韩av一区| 99久久精品国产麻豆演员表| 亚洲精品中文字幕乱码三区| 欧美视频精品在线观看| 亚洲第一久久影院| 欧美一区二区视频在线观看2020| 日日夜夜精品免费视频| 日韩欧美国产一二三区| 国产一区二三区| 国产精品丝袜在线| 91在线丨porny丨国产| 亚洲一区二区在线免费看| 在线成人午夜影院| 狠狠色综合色综合网络| 国产欧美日韩在线看| 91色乱码一区二区三区| 日韩专区欧美专区| 2020国产精品自拍| 91在线高清观看| 日韩成人午夜电影| 国产婷婷色一区二区三区四区| 99精品欧美一区| 日韩高清中文字幕一区| 久久先锋影音av鲁色资源网| 99久久精品99国产精品| 亚洲高清一区二区三区| 亚洲精品一区二区三区在线观看| 国产69精品一区二区亚洲孕妇| 综合激情网...| 日韩一级大片在线| 白白色 亚洲乱淫| 午夜精品福利在线| 国产日韩综合av| 在线欧美小视频| 国产精品中文欧美| 亚洲一区在线观看免费观看电影高清| 日韩欧美成人午夜| 91理论电影在线观看| 美女视频黄 久久| 国产精品理伦片| 欧美区视频在线观看| 懂色av一区二区夜夜嗨| 午夜国产精品影院在线观看| 久久蜜桃香蕉精品一区二区三区| 色综合久久天天| 韩国一区二区三区| 夜夜嗨av一区二区三区四季av| 精品福利二区三区| 色综合天天综合网国产成人综合天| 亚洲电影第三页| 国产精品久久久久久亚洲伦| 日韩三级在线观看| 91成人在线免费观看| 国产精品综合网| 日本视频在线一区| 一区二区在线看| 欧美国产禁国产网站cc| 日韩免费高清av| 欧美肥大bbwbbw高潮|