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

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

?? etherne.c

?? 這是ARMSYS44B0-P專業開發板的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
            hilen = RXSTOP - cp->next_pkt + nichdr.next - RXSTART - 1;
        if (lolen > 0xfc)
            hilen++;
        len = (hilen<<8) + lolen;
        if (len != nichdr.len)          /* ..and compare with actual value */
        {
            if (netdebug)
                Uart_Printf("  NIC length mismatch %Xh - %Xh\n", len, nichdr.len);
        }
#else
        len = nichdr.len;               /* Take length from stored header */
#endif
        if ((nichdr.stat&1) && len>=MINFRAMEC && len<=MAXFRAMEC)
        {                               /* If hdr is OK, get packet */
            len -= CRCLEN;              /* ..without CRC! */
            if (pkt)
                getnic((WORD)((cp->next_pkt<<8)+sizeof(nichdr)), pkt, len);
        }
        else                            /* If not, no packet data */
        {
            Uart_Printf("  NIC packet error\n");
        }                               /* Update next packet ptr */
        if (nichdr.next>=RXSTART && nichdr.next<RXSTOP)
            cp->next_pkt = nichdr.next;
        else                            /* If invalid, use prev+1 */
        {
            Uart_Printf("  NIC pointer error\n");
            cp->next_pkt = nicwrap(cp->next_pkt + 1);
        }                               /* Update boundary register */
        bnry = nicwrap(cp->next_pkt - 1);
        //outnic(BNRY, bnry);
        BNRY=bnry;
    }
    return(len);                        /* Return length excl. CRC */
}

/* Send Ethernet packet given len excl. CRC, return 0 if NIC is busy */
WORD put_etherne(WORD dtype, void *pkt, WORD len)
{
    CONFIGNE *cp;

    cp = &configs[dtype & NETNUM_MASK];
    ebase = cp->ebase;
    //if (!ebase || innic(CMDR) & 4)      /* If still Txing, return 0 */
    if(!ebase || CMDR & 4)
        len = 0;
    else if (pkt)
    {                                   /* If last Tx is complete.. */
        len = minw(MAXFRAME, maxw(MINFRAME, len));      /* Constrain length */
        memcpy((BYTE *)pkt+MACLEN, cp->myeth, MACLEN);  /* Set source addr */
        //outnic(ISR, 0x0a);             
        ISR=0x0a;                         /* Clear interrupt flags */
        //outnic(TBCR0, len & 0xff);   
        TBCR0=len&0xff;                   /* Set Tx length regs */
        //outnic(TBCR1, len >> 8);
        TBCR1=len>>8;
        putnic(TXSTART<<8, pkt, len);
        //outnic(CMDR, 0x24);
        CMDR=0x24;                        /* Transmit the packet */
    }
    return(len);
}

/* Reset the Ethernet card, if 'cold' start, get my 6-byte address */
void resetnic(CONFIGNE *cp, char cold)
{
    int i;
    //BYTE temp[MACLEN*2];

    //outnic(CMDR, 0x21); 
    CMDR=0x21;                          /* Stop, DMA abort, page 0 */
    
    SoftDelay(10);                           /* ..wait to take effect */
   
    //outnic(DCR, DCRVAL);
    DCR=DCRVAL;
    //outnic(RBCR0, 0);
    RBCR0=0;                            /* Clear remote byte count */
    //outnic(RBCR1, 0);
    RBCR1=0;
    //outnic(RCR, 0x20);
    RCR=0x20;                           /* Rx monitor mode */
    //outnic(TCR, 0x02);   
    TCR=0x02;                           /* Tx internal loopback */
    //outnic(TPSR, TXSTART);
    TPSR=TXSTART;                       /* Set Tx start page 0x40*/
    //outnic(PSTART, RXSTART); 
    PSTART=RXSTART;                     /* Set Rx start 0x46, stop, boundary */
    //outnic(PSTOP, RXSTOP);            //0x7e
    PSTOP=RXSTOP;
    //outnic(BNRY, (BYTE)(RXSTOP-1));
    BNRY=(BYTE)(RXSTOP-1);             //0x7d?
    //outnic(ISR, 0xff); 
    ISR=0xff;                           /* Clear interrupt flags */
    //outnic(IMR, 0);
    IMR=0;                              /* Mask all interrupts */
    if (cold)
    {
       //outnic(CMDR, 0x22);
       // CMDR=0x22;                       /* Start NIC, DMA abort */
       // SoftDelay(10);
       // getnic(0, temp, 16);            /* Get 6-byte addr */
        for (i=0; i<MACLEN; i++)        /* Convert addr words to bytes */
            cp->myeth[i] = MYMAC[i];//temp[WORDMODE ? i+i : i];
    }
    //outnic(CMDR, 0x61);                
    CMDR=0x61;                          /* Stop, DMA abort, page 1 */
    SoftDelay(10);
    //for (i=0; i<6; i++)                 /* Set Phys addr */
        //outnic(PAR0+i, cp->myeth[i]);
        PAR0=cp->myeth[0];
        PAR1=cp->myeth[1];
        PAR2=cp->myeth[2];
        PAR3=cp->myeth[3];
        PAR4=cp->myeth[4];
        PAR5=cp->myeth[5];
    //for (i=0; i<8; i++)                 /* Multicast accept-all */
      //outnic(MAR0+i, 0xff);
         MAR0=0xff;
         MAR1=0xff;
         MAR2=0xff;
         MAR3=0xff;
         MAR4=0xff;
         MAR5=0xff;
         MAR6=0xff;
         MAR7=0xff;
    //outnic(CURR, RXSTART+1);
    CURR=RXSTART+1;                     /* Set current Rx page */
    cp->next_pkt = RXSTART + 1;
    //outnic(CMDR, 0x20);
    CMDR=0x20;                          /* DMA abort, page 0 */
    //outnic(RCR, promisc ? 0x14 : 0x04); 
    RCR=promisc ? 0x14 : 0x04;          /* Allow broadcasts, maybe all pkts */
    //outnic(TCR, 0);                  
    TCR=0;                              /* Normal Tx operation */
    //outnic(ISR, 0xff);
    ISR=0xff;                           /* Clear interrupt flags */
    //outnic(CMDR, 0x22);
    CMDR=0x22;                          /* Start NIC */
}

/* Get a packet from a given address in the NIC's RAM */
void getnic(WORD addr, BYTE data[], WORD len)
{
     register int count;
     register WORD *dataw;
	 int temp;
     
    count = WORDMODE ? len>>1 : len;    // Halve byte count if word I/P 
    //dataport = ebase + DATAPORT<<8;     // Address of NIC data port 
    //outnic(ISR, 0x40);
    ISR=0x40;                           // Clear remote DMA interrupt flag 
    //outnic(RBCR0, len&0xff);
    temp=len&0xff;
    RBCR0=len&0xff;                     // Byte count 
    //outnic(RBCR1, len>>8);
    temp=len>>8;
    RBCR1=len>>8;
    //outnic(RSAR0, addr&0xff);
    temp=addr&0xff;
    RSAR0=addr&0xff;                    // Data addr 
    //outnic(RSAR1, addr>>8);
    temp=addr>>8;
    RSAR1=addr>>8;
    //outnic(CMDR, 0x0a);
    CMDR=0x0a;                          // Start, DMA remote read 
    Delay(1);
#if WORDMODE
//    if(WORDMODE==1)
      dataw = (WORD *)data;               // Use pointer for speed 
      while(count--)                      // Get words 
          *dataw++ =DATAPORT;//*(WORD*)(dataport);
      if (len & 1)                        // If odd length, do last byte 
          *(BYTE*)dataw =DATAPORT;//*(BYTE*)(dataport);
#else
//    else
    while(count--)
        *data++= DATAPORT;//*(BYTE*)(dataport);
#endif
   
}

/* Put a packet into a given address in the NIC's RAM */
void putnic(WORD addr, BYTE data[], WORD len)
{
    register int count;
    register WORD *dataw;//, dataport;

    len += len & 1;                     /* Round length up to an even value */
    count = WORDMODE ? len>>1 : len;    /* Halve byte count if word O/P */
    //dataport = ebase + DATAPORT<<8;        /* Address of NIC data port */
    //outnic(ISR, 0x40); 
    ISR=0x40;                           /* Clear remote DMA interrupt flag */
    //outnic(RBCR0, len&0xff);
    RBCR0=len&0xff;                     /* Byte count */
    //outnic(RBCR1, len>>8);
    RBCR1=len>>8;
    //outnic(RSAR0, addr&0xff);  
    RSAR0=addr&0xff;                    /* Data addr */
    //outnic(RSAR1, addr>>8);
    RSAR1=addr>>8;
    //outnic(CMDR, 0x12);
    CMDR=0x12;                          /* Start, DMA remote write */
#if WORDMODE                            /* Word transfer? */
    dataw = (WORD *)data;
    while(count--)
        //*(WORD*)(dataport)=*dataw++;    //outpw(dataport, *dataw++);  /* O/P words */
        DATAPORT=*dataw++;
#else
    while(count--)                      /* O/P bytes */
        //*(BYTE*)(dataport)=*data++;     //outp(dataport, *data++);
        DATAPORT=*data++;
#endif
    count = 10000;                      /* Done: must ensure DMA complete */
    while(count && (ISR&0x40)==0)
        count--;
}

/* Wrap an NIC Rx page number */
BYTE nicwrap(int page)
{
   if (page >= RXSTOP)
       page += RXSTART - RXSTOP;
   else if (page < RXSTART)
       page += RXSTOP - RXSTART;
   return(page);
}

/* Input a byte from a NIC register 
BYTE innic(int reg)
{
    //return(inp((WORD)(ebase+reg)));
    //return(*((volatile BYTE*)(ebase+(((LWORD)(reg))<<8))));
}
// Output a byte to a NIC register 
void outnic(int reg, int b)
{
    //outp((WORD)(ebase+reg), b);
    //Uart_Printf("\nOUTNIC");
    *((volatile WORD*)(ebase+(((LWORD)(reg))<<8)))=b;
    
}*/

/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
538在线一区二区精品国产| 久久综合色天天久久综合图片| 久久91精品久久久久久秒播| 欧美久久久久中文字幕| 亚洲综合在线五月| 色哟哟在线观看一区二区三区| 国产精品色在线| 国产69精品久久久久毛片| 欧美韩国日本综合| 色天使色偷偷av一区二区| 亚洲精品视频免费观看| 欧美吻胸吃奶大尺度电影| 日本特黄久久久高潮| 精品sm在线观看| 不卡的av网站| 亚洲国产精品一区二区www在线| 欧美精品日日鲁夜夜添| 精品一区二区三区免费视频| 久久精品人人做人人综合| 99国产精品一区| 午夜精品久久久久久久| 久久久久97国产精华液好用吗| 99视频在线精品| 偷拍一区二区三区四区| 久久久久国产精品麻豆ai换脸 | 日韩激情视频网站| 久久亚洲精华国产精华液| av电影天堂一区二区在线观看| 亚洲成人激情社区| 欧美激情在线一区二区| 在线成人免费观看| 国产宾馆实践打屁股91| 日韩高清欧美激情| 国产精品蜜臀av| 日韩欧美久久一区| jizzjizzjizz欧美| 秋霞午夜鲁丝一区二区老狼| 日韩理论片在线| 精品福利在线导航| 欧美日韩国产在线播放网站| 国产成人一区二区精品非洲| 亚洲成人av一区二区| 中文字幕一区二区三区在线播放 | 国产91精品在线观看| 亚洲国产日韩一区二区| 国产日韩精品久久久| 欧美一区二区免费观在线| 91麻豆国产香蕉久久精品| 极品少妇xxxx精品少妇偷拍| 亚洲精品成人a在线观看| 欧美mv日韩mv亚洲| 欧美精品一二三| 日本精品一区二区三区四区的功能| 国产一区二区久久| 日韩1区2区日韩1区2区| 亚洲综合一区在线| 国产精品不卡在线观看| 久久久久久久久久久久电影 | 欧美又粗又大又爽| 欧美岛国在线观看| 91久久人澡人人添人人爽欧美| 国产剧情一区二区三区| 亚洲h在线观看| 一个色综合av| 欧美激情艳妇裸体舞| 久久网站最新地址| 欧美一区二区精品| 成人h动漫精品| 国产精品一区在线| 2021久久国产精品不只是精品| 91麻豆精品国产综合久久久久久| 国产成人免费在线视频| 国精产品一区一区三区mba视频| 香蕉久久夜色精品国产使用方法 | 欧美精品视频www在线观看| 91首页免费视频| 国产大陆精品国产| 国产xxx精品视频大全| 久久精品国产精品亚洲精品| 欧美aⅴ一区二区三区视频| 亚洲影视在线观看| 亚洲成在线观看| 亚洲国产精品尤物yw在线观看| 亚洲一卡二卡三卡四卡无卡久久 | 欧美色精品在线视频| 91网上在线视频| 麻豆国产精品视频| 免费观看久久久4p| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩国产精品久久久久久亚洲| 久久人人超碰精品| 国产精品毛片a∨一区二区三区| 欧美一三区三区四区免费在线看| 欧美一区二区视频在线观看2022 | 欧美日韩国产成人在线免费| 欧美日韩三级视频| 欧美成人一级视频| 久久一区二区三区四区| ...av二区三区久久精品| 一区在线观看视频| 日韩黄色小视频| 蜜臀精品久久久久久蜜臀| 福利一区在线观看| www.66久久| 欧美色图第一页| 制服丝袜成人动漫| 久久婷婷国产综合精品青草| 久久奇米777| 中文字幕久久午夜不卡| 日韩美女视频一区二区| 亚洲欧美电影院| 亚洲福利电影网| 日韩高清国产一区在线| 丁香婷婷深情五月亚洲| zzijzzij亚洲日本少妇熟睡| 欧美三级中文字| 欧美videos中文字幕| 久久精品一区四区| 亚洲综合在线免费观看| 精品在线你懂的| 99re8在线精品视频免费播放| 91精品午夜视频| 国产精品免费久久久久| 亚洲黄色av一区| 久久99国产精品麻豆| 在线免费观看一区| 日韩精品一区二区三区三区免费| 亚洲色大成网站www久久九九| 日韩主播视频在线| 99久久伊人网影院| 国内精品嫩模私拍在线| 亚洲国产美女搞黄色| 日本午夜精品一区二区三区电影| 成人高清视频在线| 91成人免费网站| 国产偷国产偷精品高清尤物| 亚洲综合免费观看高清在线观看| 久久99精品久久久久婷婷| 91蝌蚪porny九色| 精品久久久三级丝袜| 亚洲妇女屁股眼交7| 国产精品18久久久久久vr| 538在线一区二区精品国产| 国产精品美女久久久久av爽李琼 | 亚洲一区二区美女| 亚洲成人在线网站| av欧美精品.com| 欧美大片一区二区| 亚洲在线成人精品| 国产69精品久久99不卡| 日韩精品中文字幕一区二区三区| 亚洲高清在线视频| 99国产精品一区| 中文字幕一区二区三区四区不卡 | 91麻豆精品国产91久久久更新时间 | 日韩欧美不卡在线观看视频| 国产精品久久久久影院老司| 国产一区二区三区在线观看精品 | 亚洲欧美日韩国产中文在线| 精久久久久久久久久久| 精品日韩成人av| 日本aⅴ精品一区二区三区| 9191成人精品久久| 国产人成一区二区三区影院| 亚洲欧美另类综合偷拍| 国产盗摄一区二区三区| www国产亚洲精品久久麻豆| 亚洲va国产天堂va久久en| 欧美日韩一级视频| 亚洲女人****多毛耸耸8| aaa亚洲精品一二三区| 久久亚洲综合色一区二区三区 | 国产精品欧美经典| 麻豆精品久久久| 久久久高清一区二区三区| 国产乱码字幕精品高清av| 精品日韩欧美一区二区| 国产精品综合一区二区三区| 日韩视频中午一区| 国产精品18久久久| 欧美激情一区二区三区不卡 | 在线观看不卡视频| 亚洲国产一二三| 日韩视频一区二区三区在线播放| 性欧美大战久久久久久久久| 日韩三级在线免费观看| 玖玖九九国产精品| 国产精品嫩草久久久久| 成人av网址在线| 亚洲国产精品久久艾草纯爱| 欧美亚洲日本一区| 美女视频一区在线观看| 欧美电影免费观看高清完整版在线| 精品亚洲国产成人av制服丝袜| 欧美日韩国产免费| 激情小说欧美图片| 国产精品电影一区二区| 91色.com| 裸体健美xxxx欧美裸体表演| 欧美成人a视频|