⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enet_test.c

📁 基于SIIGX的PCIe的Kit
💻 C
字号:
#include <stdio.h>
#include <io.h>
#include <unistd.h>
#include "altera_avalon_pio_regs.h"
#include "system.h"
#include "md_cfg.h"
#include "phy_defs.h"



int main()
{
  
  md_t *mdif = (md_t*)MD_CFG_INTERFACE_V3_0_BASE;
  alt_u16 data,newdata,reg,n;
  alt_u8 pcs_fail,retry=0;
  
  
  IOWR_ALTERA_AVALON_PIO_DATA(TEST_CONTROL_BASE, 0x00);//turn off loopback tester
  mdif->addr.phy_addr = 0x12; //set the phy address
  
  
  /*
   * PHY DETECT TEST
   * 
   */
  (void)read_reg(mdif,2,&data);
  if(data == MARVEL_88E111_ID)
    printf("Detected Marvell 88e111\n");
  else
  {
    printf("Failed to detect known device (ID: 0x%x )\n",data);
    return(-1);
  }
  
  
  /*
   * PCS LOOPBACK TEST
   * 
   * 
   */
   for(pcs_fail=1;pcs_fail!=0 && retry < 3;retry++)
   {
     //enable pcs loopback
    (void)read_reg(mdif,0,&data);
    usleep(100000);
    data |= 1<<13;
    data &= ~(1<<6);
    (void)write_reg(mdif,0,data); 
    usleep(100000);
    (void)read_reg(mdif,0,&data);
    usleep(100000);
    data |= 1<<15;
    (void)read_reg(mdif,0,&data);
    usleep(100000);
    data |= 1<<14;
    (void)write_reg(mdif,0,data); 
    usleep(100000);
     
    
    //reset the reciever
    while(data != TEST_WAITING)
    {
      IOWR_ALTERA_AVALON_PIO_DATA(TEST_CONTROL_BASE, 0x02);   
      data = IORD_ALTERA_AVALON_PIO_DATA(LOOPBACK_PASS_BASE);
    }
    
    //send some data
    IOWR_ALTERA_AVALON_PIO_DATA(TEST_CONTROL_BASE, 0x01);   //send some data
    usleep(1000000);
    IOWR_ALTERA_AVALON_PIO_DATA(TEST_CONTROL_BASE, 0x00);   //stop sending data
    usleep(1000000);
    
    //read the test results, retry if nessesary
    pcs_fail = 1;
    for(n=0;n<0xfffe;n++)
    {
      newdata = IORD_ALTERA_AVALON_PIO_DATA(LOOPBACK_PASS_BASE);
      if(data != newdata)
      {
        pcs_fail = 0;
        break;
      }
    }
  }
  
  if(pcs_fail == 0)
    printf("PCS loopback OK\n");
  else
    printf("PCS loopback failed\n");

  
  return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -