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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? etherne.c

?? 這個是在windows下用ADS開發(fā)的s3c44b0的硬件測試程序
?? 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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国毛片一区二区三区| 久久久亚洲高清| 91香蕉视频污在线| 寂寞少妇一区二区三区| 亚洲国产另类精品专区| 国产精品国产三级国产aⅴ无密码| 91精品国产综合久久久久久久久久 | 国产三区在线成人av| 日韩一区二区精品在线观看| 欧美日韩一区小说| 色噜噜狠狠色综合欧洲selulu| 国产盗摄精品一区二区三区在线| 精品一区二区免费| 久久精品国产999大香线蕉| 午夜精品在线看| 亚洲美女区一区| 一区二区三区在线视频免费观看| 久久久久久99久久久精品网站| 2023国产精品| 欧美国产精品劲爆| 中文无字幕一区二区三区| 欧美videos大乳护士334| 日韩视频一区在线观看| 欧美精品一区二区三区四区| 久久久综合网站| 亚洲天堂精品视频| 日日夜夜精品视频天天综合网| 蜜臀精品一区二区三区在线观看| 精品亚洲成a人| 成人午夜视频网站| 在线观看免费视频综合| 日韩精品专区在线影院重磅| 久久久久一区二区三区四区| 亚洲欧美另类小说| 日本欧美一区二区三区乱码| 国产大陆亚洲精品国产| 色呦呦日韩精品| 日韩美一区二区三区| 国产精品私房写真福利视频| 亚洲成人自拍网| 国产福利一区在线| 在线日韩av片| 国产拍欧美日韩视频二区| 亚洲男女一区二区三区| 久久精品999| 色婷婷亚洲婷婷| 2017欧美狠狠色| 亚洲一区二区三区美女| 国产精品白丝av| 欧美肥妇free| 亚洲视频在线一区二区| 老司机精品视频在线| 一本到三区不卡视频| 精品久久国产老人久久综合| 中文字幕综合网| 国产乱码精品一区二区三区av| 欧洲一区在线观看| 国产精品素人一区二区| 蜜臀a∨国产成人精品| 成人免费视频视频| 91精品国产乱| 亚洲成人一区在线| 91浏览器入口在线观看| 久久精品视频一区二区| 男女男精品网站| 日本久久精品电影| 日韩不卡免费视频| 一本久久a久久免费精品不卡| 久久久五月婷婷| 激情五月激情综合网| 欧美日韩国产首页| 亚洲丝袜制服诱惑| av电影天堂一区二区在线| 久久婷婷一区二区三区| 精品一区二区三区在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 日韩欧美国产电影| 亚洲一区免费视频| 91视频精品在这里| 国产精品久久久久久一区二区三区| 久久国产精品色婷婷| 日韩免费一区二区| 久久精品国产久精国产| 久久五月婷婷丁香社区| 激情综合网最新| 久久久久97国产精华液好用吗| 国产精选一区二区三区| 久久精品一区二区| 波多野结衣中文字幕一区| 国产欧美va欧美不卡在线| 成人永久aaa| 亚洲日本成人在线观看| 欧美在线短视频| 免费成人你懂的| 久久品道一品道久久精品| 国产成人av自拍| 国产调教视频一区| 99re热这里只有精品免费视频| 亚洲女子a中天字幕| 欧美中文一区二区三区| 日韩国产欧美在线观看| 久久久一区二区三区捆绑**| 在线一区二区视频| 美女视频一区二区三区| 欧美精品一区二区三区在线| 99久久er热在这里只有精品15| 亚洲国产乱码最新视频| 精品成人免费观看| 97精品国产露脸对白| 日韩成人免费看| 中文字幕乱码日本亚洲一区二区| 91美女在线观看| 日韩国产精品91| 国产女人水真多18毛片18精品视频 | 欧美一区二区三区思思人| 国产精品一区二区91| 一区二区三区高清| 精品国产髙清在线看国产毛片 | 亚洲综合色噜噜狠狠| 日韩美女视频在线| 91网站在线观看视频| 日本aⅴ免费视频一区二区三区| 中文一区一区三区高中清不卡| 欧美日韩精品一区二区三区四区 | 久久久午夜电影| 欧美日韩激情在线| 波多野结衣亚洲一区| 日本欧美在线观看| 亚洲激情五月婷婷| 国产欧美一区二区三区网站| 欧美日本视频在线| av成人老司机| 国产乱码精品1区2区3区| 五月综合激情婷婷六月色窝| 国产精品全国免费观看高清| 日韩欧美成人激情| 色噜噜狠狠成人网p站| 老司机免费视频一区二区三区| 午夜影视日本亚洲欧洲精品| 亚洲天堂成人网| 国产亚洲综合av| 精品国产91乱码一区二区三区| 欧美色精品天天在线观看视频| 成人99免费视频| 国产麻豆视频精品| 麻豆91在线看| 天天av天天翘天天综合网色鬼国产| ...av二区三区久久精品| 久久久国产精品午夜一区ai换脸| 欧美一级久久久久久久大片| 7777精品伊人久久久大香线蕉经典版下载 | 欧美在线免费观看视频| 97久久精品人人做人人爽| 成人精品国产福利| 成人永久看片免费视频天堂| 福利视频网站一区二区三区| 国产精品一区二区在线看| 经典三级在线一区| 国精产品一区一区三区mba视频| 老司机精品视频导航| 九九在线精品视频| 韩国av一区二区三区四区| 国产一区久久久| 国产乱码精品一区二区三区av| 国产精品99久久久| 波多野结衣在线一区| 99久久精品久久久久久清纯| 91在线国产福利| 欧美亚洲自拍偷拍| 91国产免费观看| 欧美一区二区在线看| 精品999久久久| 国产精品丝袜久久久久久app| 国产精品久久毛片a| 国内一区二区视频| 91在线你懂得| 欧美另类久久久品| 精品欧美久久久| 亚洲欧洲日本在线| 性做久久久久久免费观看| 久久精品国产亚洲高清剧情介绍 | 国产一区福利在线| 91亚洲大成网污www| 欧美三级电影精品| 91在线免费播放| 欧美日韩国产美女| 中文一区二区在线观看| 亚洲国产精品麻豆| 国内久久婷婷综合| 99久久久久免费精品国产| 91丝袜国产在线播放| 在线一区二区观看| 亚洲免费观看在线视频| 久久婷婷久久一区二区三区| 精品国产伦理网| 欧美午夜一区二区| 国产精品一区二区三区99| 国产欧美一区二区精品仙草咪| 久久亚洲精精品中文字幕早川悠里| 欧美理论片在线|