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

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

?? mac.c

?? 一個(gè)實(shí)例接受
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):

    while ( gCTxFDPtr[1] != CTxPtr )
    {
     pTxFDptr = (sFrameDescriptor *) gCTxFDPtr[1];

     // Check CPU ownership, if Owner is DMA then break
     pFrameDataPtr = (U32 *)&pTxFDptr->Status1;
     if ( (*pFrameDataPtr & TXfOwnership_DMA) )
       break ;

     Status = (pTxFDptr->Status2 >> 16) & 0xffff;

     if (Status & TXFD_TXCP)
     {
       gsMacTxStatus[1].TXCP++ ;
       gsMacTxStatus[1].TxBytes += pTxFDptr->Status2 & 0xFFFF; //CMN
       
#if 1
       if (EXTERNAL_LOOPBACK_PORT == 1)
       {
           TxPktSeq = *((volatile U32 *) (pTxFDptr->FrameDataPtr + 16));
           if (TxPktSeq != TxPktSeqWanted)
           {           
               TxPktSeqErr++;
               TxPktSeqWanted = TxPktSeq+1;
           }
           else
               TxPktSeqWanted++;
       }
#endif       
       
     }
     
     else
     //  {
        //CMN
        gTxErrPacketCnt[1]++;
       
        // Save Error status
        if (Status & TXFD_TXABT) gsMacTxStatus[1].TXABT++ ;
        if (Status & TXFD_DEF)   gsMacTxStatus[1].DEF++ ;
        if (Status & TXFD_PAU)   gsMacTxStatus[1].PAU++ ;
        if (Status & TXFD_EXDEF) gsMacTxStatus[1].EXDEF++ ;
        if (Status & TXFD_NCS)   gsMacTxStatus[1].NCS++ ;
        if (Status & TXFD_SQE)   gsMacTxStatus[1].SQE++ ;
        if (Status & TXFD_LC)    gsMacTxStatus[1].LC++ ;
        if (Status & TXFD_TXHA)  gsMacTxStatus[1].TXHA++ ;
     //  }

     // Clear Framedata pointer already used.
     pTxFDptr->Status2 &= (U32)0x0000FFFF; //CMN

     gCTxFDPtr[1] = (U32)pTxFDptr->NextFrameDescriptor ;
    }

    MacTxDoneFlagForLoopBackCheck[1] = 1 ;
   }
   
}


// Interrupt Service Routine for MAC0 Rx
void MAC0_Rx_isr(void)
{
 sFrameDescriptor *pRxFDptr ;
 U32 RxStatus, FrameLength ;
 U32 CRxPtr;
 U8 *pFrameData ;
 U32 RdValue;

 RdValue=MISTA_0;
 
 if (RdValue & 0x04)
     gsMacRxStatus[0].RXOV++;
     
 if (RdValue & 0x02)
     gsMacRxStatus[0].CRCE++;     
     
 if (RdValue & 0x400)
     gsMacRxStatus[0].RDU++;           
 
 
//#ifdef RxInt_Msg 
// UART_printf("MAC0_Rx_isr(%x), ",RdValue) ;
//#endif 
 
 if (RdValue & MISTA_RxBErr)
   {
#ifdef RxInt_Msg 
 UART_printf("RxBErr(%x), ",RdValue) ;
#endif 
    FIFOTHD_0|=SWR;
    LanInitialize(0);
    MacRxDoneFlagForLoopBackCheck[0] = 1 ;
    gsMacRxStatus[0].RxBErr++ ;  
   }
 else
   { 
    // Get current frame descriptor
    CRxPtr = CRXDSA_0 ;

    do
    {
     // Get Rx Frame Descriptor
     pRxFDptr = (sFrameDescriptor *)gCRxFDPtr[0];

     if ((pRxFDptr->Status1|RXfOwnership_CPU)==RXfOwnership_CPU) // ownership=CPU
       {
        RxStatus = (pRxFDptr->Status1 >> 16) & 0xffff;
#ifdef RxInt_Msg        
 UART_printf("Rx_Status=%x,",RxStatus) ;
#endif 

#if 1
        pFrameData = (U8 *)pRxFDptr->FrameDataPtr ;
        if (EXTERNAL_LOOPBACK_PORT == 0)
        {
            RxPktSeq = *((volatile U32 *) (pFrameData + 16));
            if (RxPktSeq != RxPktSeqWanted)
            {               
               *((volatile unsigned int *) 0xFFF03210) = 0x43;
               RxPktSeqErr++;
               RxPktSeqWanted = RxPktSeq+1;
            }
            else
               RxPktSeqWanted++;
        }
#endif
        // If Rx frame is good, then process received frame
        if(RxStatus & RXFD_RXGD)
        {
         FrameLength = pRxFDptr->Status1 & 0xffff ;
         pFrameData = (U8 *)pRxFDptr->FrameDataPtr ;
         gsMacRxStatus[0].RXGD++ ;
         gsMacRxStatus[0].RxBytes += FrameLength; //CMN
       
         pRxFDptr->FrameDataPtr = (U32)RxFrameBuffer0;
         RxFrameBuffer0 += (U32)(sizeof(sMACFrame)) ;
         if ( RxFrameBuffer0 >= (U32)RxFBALimitAddr0)
           RxFrameBuffer0 = (U32)RxFBABaseAddr0 ;
         
         // Send to another port
         if (EXTERNAL_LOOPBACK_PORT == 1)
             SendPacket(1,pFrameData,FrameLength);
        }
        else        
         gRxErrPacketCnt[0]++; 

         // Save Error status
         if (RxStatus & RXFD_RP)   gsMacRxStatus[0].RP++ ;
         if (RxStatus & RXFD_ALIE) gsMacRxStatus[0].ALIE++ ;
         if (RxStatus & RXFD_PTLE) gsMacRxStatus[0].PTLE++ ;         
       }
     else
       break;

     // Change ownership to DMA for next use
     pRxFDptr->Status1 |= RXfOwnership_DMA;

     // Get Next Frame Descriptor pointer to process
     gCRxFDPtr[0] = (U32)(pRxFDptr->NextFrameDescriptor) ;
    } while ((CRxPtr = CRXDSA_0) != gCRxFDPtr[0]);
#ifdef RxInt_Msg        
    UART_printf("\n") ;
#endif 

    MacRxDoneFlagForLoopBackCheck[0] = 1 ; // only used for loopback test

    RSDR_0 = 0;
   }  

 MISTA_0=RdValue&0x0000ffff; //CMN
}


// Interrupt Service Routine for MAC1 Rx
void MAC1_Rx_isr(void)
{
 sFrameDescriptor *pRxFDptr ;
 U32 RxStatus, FrameLength ;
 U32 CRxPtr;
 U8 *pFrameData ;
 U32 RdValue;

 RdValue=MISTA_1;

 if (RdValue & 0x04)
     gsMacRxStatus[1].RXOV++;
     
 if (RdValue & 0x02)
     gsMacRxStatus[1].CRCE++;     
     
 if (RdValue & 0x400)
     gsMacRxStatus[1].RDU++;     
     
 
 //MISTA_1=RdValue&0x0000ffff;
 
#ifdef RxInt_Msg 
//if ((RdValue&0x0000ffff)!=0x211)
 UART_printf("MAC1_Rx_isr(%x), ",RdValue) ;
#endif 
 
 if (RdValue & MISTA_RxBErr)
   {
#ifdef RxInt_Msg 
 UART_printf("RxBErr(%x), ",RdValue) ;
#endif 
    FIFOTHD_1|=SWR;
    LanInitialize(1);
    MacRxDoneFlagForLoopBackCheck[1] = 1 ;
    gsMacRxStatus[1].RxBErr++ ; //CMN [2002/11/01]

   }
 else
   { 
    // Get current frame descriptor
    CRxPtr = CRXDSA_1 ;

    do
    {
     // Get Rx Frame Descriptor
     pRxFDptr = (sFrameDescriptor *)gCRxFDPtr[1];

     if ((pRxFDptr->Status1|RXfOwnership_CPU)==RXfOwnership_CPU) // ownership=CPU
       {
        RxStatus = (pRxFDptr->Status1 >> 16) & 0xffff;
#ifdef RxInt_Msg        
 UART_printf("Rx_Status=%x,",RxStatus) ;
#endif 

#if 1
        pFrameData = (U8 *)pRxFDptr->FrameDataPtr ;
        if (EXTERNAL_LOOPBACK_PORT == 1)
        {
            RxPktSeq = *((volatile U32 *) (pFrameData + 16));
            if (RxPktSeq != RxPktSeqWanted)
            {               
               RxPktSeqErr++;
               RxPktSeqWanted = RxPktSeq+1;
            }
            else
               RxPktSeqWanted++;
        }
#endif
        // If Rx frame is good, then process received frame
        if(RxStatus & RXFD_RXGD)
        {
         FrameLength = pRxFDptr->Status1 & 0xffff ;    
         pFrameData = (U8 *)pRxFDptr->FrameDataPtr ;
         gsMacRxStatus[1].RXGD++ ;
         gsMacRxStatus[1].RxBytes += FrameLength; //CMN

         pRxFDptr->FrameDataPtr = (U32)RxFrameBuffer1;
         RxFrameBuffer1 += (U32)(sizeof(sMACFrame)) ;
         if ( RxFrameBuffer1 >= (U32)RxFBALimitAddr1)
           RxFrameBuffer1 = (U32)RxFBABaseAddr1 ;
         
         // Send to another port
         if (EXTERNAL_LOOPBACK_PORT == 0)
         {
             /*
             *(pFrameData+0)=0x03; //marked by CMN
             *(pFrameData+5)=0x66; //marked by CMN
             */
             SendPacket(0,pFrameData,FrameLength);
         }
        }
        else
         // If Rx frame has error, then process error frame
         gRxErrPacketCnt[1]++ ; 

         // Save Error status
         if (RxStatus & RXFD_RP)   gsMacRxStatus[1].RP++ ;
         if (RxStatus & RXFD_ALIE) gsMacRxStatus[1].ALIE++ ;
         if (RxStatus & RXFD_PTLE) gsMacRxStatus[1].PTLE++ ;
        
       }
     else
       break;

     // Change ownership to DMA for next use
     pRxFDptr->Status1 |= RXfOwnership_DMA;

     // Get Next Frame Descriptor pointer to process
     gCRxFDPtr[1] = (U32)(pRxFDptr->NextFrameDescriptor) ;      
     
    } while ((CRxPtr = CRXDSA_1) != gCRxFDPtr[1]);
#ifdef RxInt_Msg        
 UART_printf("\n") ;
#endif 

    MacRxDoneFlagForLoopBackCheck[1] = 1 ; // only used for loopback test

    RSDR_1 = 0;
   }
   
 MISTA_1=RdValue&0x0000ffff; //CMN
}


// Send ethernet frame function
int SendPacket(int num, U8 *Data,int Size)
{
 sFrameDescriptor *psTxFD;
 int              FrameLength ;
 U32              *pTXFDStatus1;

 if (num==0)
   {      
    // Get Tx frame descriptor & data pointer
    psTxFD = (sFrameDescriptor *)gWTxFDPtr[0] ;

    pTXFDStatus1 = (U32 *)&psTxFD->Status1;
    FrameLength = Size ;

    // Check DMA ownership
    if ( (*pTXFDStatus1 & TXfOwnership_DMA) ) return 0 ;

    //CMN
    if (psTxFD->Status2 & 0xFFFF0000)  
    {
        CheckTxFDStatus(0, psTxFD);   //The descriptor hasn't been processed yet.
        DoChk++;
    }
    
    psTxFD->FrameDataPtr = (U32)Data;

#if 1
    if (EXTERNAL_LOOPBACK_PORT == 0)
        *((volatile U32 *) (Data + 16)) = PktSeq++;
#endif

    // Set TX Frame flag & Length Field
    psTxFD->Status1 |= (PaddingMode | CRCMode | MACTxIntEn);
    psTxFD->Status2 = (U32)(FrameLength & 0xffff);

    // Cheange ownership to DMA
    psTxFD->Status1 |= TXfOwnership_DMA;

    // Enable MAC Tx control register
    MacTxGo(0);
    
    // Change the Tx frame descriptor for next use
    gWTxFDPtr[0] = (U32)(psTxFD->NextFrameDescriptor);
   }
 else if (num==1)
   {
    // Get Tx frame descriptor & data pointer
    psTxFD = (sFrameDescriptor *)gWTxFDPtr[1] ;

    pTXFDStatus1 = (U32 *)&psTxFD->Status1;
    FrameLength = Size ;

    // Check DMA ownership
    if ( (*pTXFDStatus1 & TXfOwnership_DMA) ) return 0 ;

    //CMN
    if (psTxFD->Status2 & 0xFFFF0000)  
    {
        CheckTxFDStatus(1, psTxFD);   //The descriptor hasn't been processed yet.
        DoChk++;
    }


    psTxFD->FrameDataPtr = (U32)Data;

#if 1
    if (EXTERNAL_LOOPBACK_PORT == 1)
        *((volatile U32 *) (Data + 16)) = PktSeq++;
#endif
    // Set TX Frame flag & Length Field
    psTxFD->Status1 |= (PaddingMode | CRCMode | MACTxIntEn);  
    psTxFD->Status2 = (U32)(FrameLength & 0xffff);

    // Cheange ownership to DMA
    psTxFD->Status1 |= TXfOwnership_DMA;

    // Enable MAC Tx control register
    MacTxGo(1);

    // Change the Tx frame descriptor for next use
    gWTxFDPtr[1] = (U32)(psTxFD->NextFrameDescriptor);
   }
 return 1 ;
}


// Main function for MAC Block test
int MacTest(void)
{	
 volatile unsigned int loop=0;  
 volatile U32 btime, total_time;
 
 TimerInitialize(TIMER_CHANNEL);

 LanInitialize(0);
 LanInitialize(1);
 
 btime = cur_ticks;
 
 while(1) 
 {
   if ((cur_ticks - btime) >= 100)
   {
       total_time = cur_ticks - btime;
       btime = cur_ticks;
       ShowTxRxStatusWithTime();       
   }
 }

 return 1;
}


int main()
{
  unsigned int oldvect, temp;
  
  UART_Initialize(115200);
  UART_printf("\n\nW90N740 DIAG Program 1.0 - MAC\n\n");

  /* clear CPSR I bit */
  __asm
  {
      MRS    temp, CPSR
      AND    temp, temp, 0x7F
      MSR    CPSR_c, temp
  }

  /* replace IRQ exception entry */
  oldvect = *(volatile unsigned int *)0x38;
  *(volatile unsigned int *)0x38 = (unsigned int) IRQ_IntHandler;
 
  /*
  AIC_SCR_EMCTX0 = 0x41;
  AIC_SCR_EMCRX0 = 0x41;
  AIC_SCR_EMCTX1 = 0x41;
  AIC_SCR_EMCRX1 = 0x41;
  */
    
  memset((U8 *)0x80400000,0,1024*1024) ; // clear buffer
  MacTest();
  return 0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女视频一区| 亚洲电影视频在线| 欧美性做爰猛烈叫床潮| 免费成人在线视频观看| 国产精品久久三| 日韩精品自拍偷拍| 色噜噜狠狠成人网p站| 狠狠网亚洲精品| 日日骚欧美日韩| 亚洲视频香蕉人妖| 欧美激情综合在线| 亚洲精品一区二区三区蜜桃下载| 91精品在线麻豆| 91福利精品第一导航| 成人国产免费视频| 激情偷乱视频一区二区三区| 日日摸夜夜添夜夜添国产精品 | 亚洲欧美激情在线| 久久人人97超碰com| 91精品国产乱| 欧美日韩成人在线一区| 欧美亚洲禁片免费| 色综合天天综合狠狠| 岛国一区二区在线观看| 精品系列免费在线观看| 五月激情综合色| 五月天激情小说综合| 亚洲国产一二三| 亚洲自拍偷拍网站| 亚洲免费av高清| 亚洲欧美另类在线| 1区2区3区精品视频| 国产精品你懂的在线欣赏| 久久久国产午夜精品| 久久色在线视频| 久久只精品国产| 久久精品免视看| 久久精品视频在线看| 久久久一区二区三区| 久久嫩草精品久久久精品| 久久综合九色综合97婷婷女人| 91精品欧美久久久久久动漫| 日韩一区二区精品| 日韩欧美亚洲另类制服综合在线| 欧美一区二区在线视频| 欧美一区二区三区精品| 日韩欧美电影在线| 精品国产电影一区二区| 欧美国产在线观看| 最新久久zyz资源站| 亚洲美女视频在线| 亚洲国产va精品久久久不卡综合 | 中文字幕在线不卡一区二区三区| 国产精品美女久久久久久久久 | 色综合久久66| 欧美自拍丝袜亚洲| 欧美精品丝袜中出| 欧美成va人片在线观看| 国产色综合一区| ㊣最新国产の精品bt伙计久久| 一区二区在线观看免费视频播放| 亚洲综合小说图片| 蜜桃传媒麻豆第一区在线观看| 极品销魂美女一区二区三区| 成人动漫一区二区在线| 欧美亚洲高清一区| 91精品国产福利| 欧美激情中文字幕一区二区| 亚洲欧美在线另类| 视频一区欧美精品| 国产毛片精品国产一区二区三区| 不卡av电影在线播放| 在线日韩国产精品| 日韩美女主播在线视频一区二区三区| 国产亚洲一区二区三区| 伊人一区二区三区| 久久99精品久久久久| 99久久99久久精品免费观看| 欧美精品乱码久久久久久按摩| 久久久久久久久岛国免费| 亚洲欧美成aⅴ人在线观看| 日本成人在线视频网站| 成人av高清在线| 日韩一区二区三区视频在线观看| 国产精品久久久久久户外露出| 视频在线观看一区| yourporn久久国产精品| 欧美一区二区日韩一区二区| 国产精品进线69影院| 免费在线观看成人| 97se亚洲国产综合自在线不卡| 日韩欧美专区在线| 亚洲一区在线观看免费观看电影高清 | 久久伊99综合婷婷久久伊| 一区二区免费在线播放| 国产福利91精品一区二区三区| 欧美日韩一区二区欧美激情| 国产午夜精品一区二区三区嫩草| 午夜精品久久久久影视| 91免费国产视频网站| 精品成人私密视频| 五月婷婷另类国产| 91色在线porny| 久久精品人人做| 青青草一区二区三区| 欧美伊人久久久久久久久影院| 日本一区二区三区视频视频| 美国三级日本三级久久99| 色综合久久中文综合久久牛| 国产三级精品三级在线专区| 日本亚洲免费观看| 欧美性猛片xxxx免费看久爱| 欧美国产综合一区二区| 国产一区激情在线| 制服.丝袜.亚洲.另类.中文| 亚洲激情第一区| av一区二区三区四区| 国产欧美一区在线| 精品一区二区在线视频| 欧美一区二区三区不卡| 亚洲成a人片在线观看中文| 91国产免费看| 亚洲美女视频一区| 色婷婷综合久久久久中文 | 中文字幕 久热精品 视频在线| 美女高潮久久久| 337p亚洲精品色噜噜噜| 亚洲午夜久久久| 精品视频免费在线| 亚洲狠狠爱一区二区三区| 日本精品免费观看高清观看| 亚洲视频香蕉人妖| 91美女视频网站| 亚洲精品视频免费观看| 色狠狠桃花综合| 亚洲一级电影视频| 欧美日韩免费电影| 婷婷亚洲久悠悠色悠在线播放 | 欧美日韩亚洲综合一区二区三区| 夜夜嗨av一区二区三区网页| 欧美这里有精品| 亚洲r级在线视频| 欧美一区欧美二区| 国产综合色视频| 国产欧美日韩另类视频免费观看| 高清国产午夜精品久久久久久| 国产精品伦理一区二区| 色哟哟一区二区三区| 亚洲一区二区三区四区在线免费观看| 欧美日韩日日摸| 蜜桃久久久久久久| 国产欧美精品区一区二区三区| 不卡的av网站| 亚洲国产aⅴ成人精品无吗| 欧美日韩不卡一区| 国内精品久久久久影院色| 久久久久久日产精品| 91视频免费播放| 亚洲v日本v欧美v久久精品| 日韩欧美高清dvd碟片| 盗摄精品av一区二区三区| 一区二区三区成人在线视频| 欧美一区二区三级| 成人免费观看av| 亚洲午夜免费电影| 精品久久久久久最新网址| 成人蜜臀av电影| 亚洲国产综合人成综合网站| 精品国产一区二区三区忘忧草 | 亚洲成a人片综合在线| 日韩欧美一级二级三级久久久| 国产·精品毛片| 亚洲成人综合视频| 久久人人爽人人爽| 欧美性videosxxxxx| 久久精品噜噜噜成人88aⅴ| **欧美大码日韩| 日韩久久久精品| 91久久久免费一区二区| 韩国女主播一区| 一区二区三区欧美| 久久精品视频一区二区三区| 欧美午夜寂寞影院| 国产精品18久久久久久久久久久久 | 久久机这里只有精品| 国产精品久久久久桃色tv| 欧美日韩1234| 岛国精品在线播放| 日本女人一区二区三区| 国产精品久久精品日日| 日韩一卡二卡三卡国产欧美| 99久久久精品| 狠狠网亚洲精品| 午夜国产不卡在线观看视频| 国产日产欧美一区二区视频| 91麻豆精品国产91久久久使用方法 | 中文字幕一区二区三中文字幕| 欧美一区二区三区在线| 99国产精品视频免费观看| 精品系列免费在线观看|