Пример #1
0
int main(int argc, char *argv[]){
  e_loader_diag_t e_verbose;
  e_platform_t platform;
  e_epiphany_t dev, *pdev;
  e_mem_t      dram, *pdram;
  size_t       size;
  int status=1;//pass
  char elfFile[4096];
  pdev  = &dev;
  pdram = &dram;
  int a,b;
  int i,j;
  unsigned result[N];
  unsigned data = 0xDEADBEEF;
  unsigned tmp,fail;
  int idelay[TAPS]={0x00000000,0x00000000,//0
		  0x11111111,0x00000001,//1
		  0x22222222,0x00000002,//2
		  0x33333333,0x00000003,//3
		  0x44444444,0x00000004,//4
		  0x55555555,0x00000005,//5
		  0x66666666,0x00000006,//6
		  0x77777777,0x00000007,//7
		  0x88888888,0x00000008,//8
		  0x99999999,0x00000009,//9
		  0xaaaaaaaa,0x0000000a,//10
		  0xbbbbbbbb,0x0000000b,//11
		  0xcccccccc,0x0000000c,//12
		  0xdddddddd,0x0000000d,//13
		  0xeeeeeeee,0x0000000e,//14
		  0xffffffff,0x0000000f,//15
		  0x00000000,0x00000010,//16
		  0x11111111,0x00000011,//17
		  0x22222222,0x00000012,//18
		  0x33333333,0x00000013,//29
		  0x44444444,0x00000014,//20
		  0x55555555,0x00000015,//21
		  0x66666666,0x00000016,//22
		  0x77777777,0x00000017,//23
		  0x88888888,0x00000018,//24
		  0x99999999,0x00000019,//25
		  0xaaaaaaaa,0x0000001a,//26
		  0xbbbbbbbb,0x0000001b,//27
		  0xcccccccc,0x0000001c,//28
		  0xdddddddd,0x0000001d,//29
		  0xeeeeeeee,0x0000001e,//30
		  0xffffffff,0x0000001f};//31

  //Gets ELF file name from command line
  strcpy(elfFile, "./bin/e-task.elf");

  //Initalize Epiphany device
  e_set_host_verbosity(H_D0);
  e_init(NULL);                      
  my_reset_system();
  e_get_platform_info(&platform);                          
  e_open(&dev, 0, 0, 1, 1); //open core 0,0
  e_alloc(pdram, 0x00000000, 0x00400000);

  //Set Idelay
  ee_write_esys(0xF0310, idelay[2*7]);
  ee_write_esys(0xF0314, idelay[2*7+1]);

  //Start Program
  e_load_group(elfFile, &dev, 0, 0, 1, 1, E_FALSE);    
  e_start_group(&dev);        
  usleep(1000000);   

  //Check status
  int pre_stat,mbox_lo,mbox_hi,post_stat;
  int ddata;
  for(i=0;i<32;i++){
    e_read(pdram,0,0, i, &ddata, sizeof(ddata));
    pre_stat    = ee_read_esys(0xF0738);
    mbox_lo     = ee_read_esys(0xF0730);
    //mbox_hi     = ee_read_esys(0xF0734);
    post_stat   = ee_read_esys(0xF0738);
    printf ("PRE_STAT=%08x POST_STAT=%08x LO=%08x HI=%08x DDATA=%04x\n", pre_stat, post_stat, mbox_lo, mbox_hi,ddata);
  }

  for(i=0;i<16;i++){
    e_read(pdram,0,0, i*4, &ddata, sizeof(ddata));
    printf ("DDATA=%04x\n", ddata);
  }

  //Close down Epiphany device
  e_close(&dev);
  e_finalize();
  
  //self check
  if(status){
    return EXIT_SUCCESS;
  }
  else{
    return EXIT_FAILURE;
  }   
}
Пример #2
0
int main(int argc, char *argv[]){

  //----------------------------
  e_platform_t platform;
  e_epiphany_t dev;
  e_hal_diag_t e_verbose;
  unsigned int i,j,k,addr;
  unsigned int data;
  int status=1;//pass

  int row0,col0,rows,cols;
  int verbose=0;

  unsigned int high_pattern = 0xaaaaaaaa;
  unsigned int low_pattern  = 0x55555555;

  unsigned int result;

  if (argc < 5){
    usage();
    exit(1);
  }  
  else{
    row0    = atoi(argv[1]);
    col0    = atoi(argv[2]);
    rows    = atoi(argv[3]);
    cols    = atoi(argv[4]);
  }
  //Open
  e_init(NULL);
  my_reset_system();
  e_get_platform_info(&platform);
  e_open(&dev, 0, 0, platform.rows, platform.cols);
  

  printf("-------------------------------------------------------\n");  

  for (i=row0; i<(row0+rows); i++) {
    for (j=col0; j<(col0+cols); j++) {   
      printf("Running host register file test for core (%d,%d)\n", i,j);      
      for(k=0;k<REGS;k++){
	addr=0xF0000+k;
	//high pattern
	e_write(&dev, i, j, addr, &high_pattern,  sizeof(int));
	e_read(&dev, i, j, addr, &result, sizeof(int));
	printf("res=%x\n",result);
	if(result!=high_pattern){
	  status=0;
	}
	//low pattern
	e_write(&dev, i, j, addr, &low_pattern,  sizeof(int));
	e_read(&dev, i, j, addr, &result, sizeof(int));
	if(result!=low_pattern){
	  status=0;
	}
      }
    }
  }
  //Close
  e_close(&dev);
  e_finalize();

  //Self Check
  if(status){
    return EXIT_SUCCESS;
  }
  else{
    return EXIT_FAILURE;
  }   
}
Пример #3
0
int main(int argc, char *argv[]){

  //----------------------------
  e_platform_t platform;
  e_epiphany_t dev;
  e_loader_diag_t e_verbose;
  unsigned int i,j,k,addr;
  unsigned int data;
  int status=1;//pass

  int row0,col0,rows,cols;
  int verbose=0;

  char result,data_in,expected;
  char high_pattern = 0xff;
  char low_pattern  = 0x00;
  

  if (argc < 5){
    usage();
    exit(1);
  }  
  else{
    row0    = atoi(argv[1]);
    col0    = atoi(argv[2]);
    rows    = atoi(argv[3]);
    cols    = atoi(argv[4]);
  }
  //Open
  e_init(NULL);
  my_reset_system();
  e_get_platform_info(&platform);
  e_open(&dev, 0, 0, platform.rows, platform.cols);
  //e_set_loader_verbosity(L_D3);

  printf("-------------------------------------------------------\n");  

  for (i=row0; i<(row0+rows); i++) {
    for (j=col0; j<(col0+cols); j++) {   
      printf("Running host march-C read/write test for core (%d,%d)\n", i,j);      
      //M0: UP{w0}
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr= k;
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, k, &data_in, sizeof(data_in));
      }
      //M1: UP{r0,w1,r1,w0,r0,w1}
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr= k;
	//R0
	expected=low_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M1: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
	//W1
	data_in=high_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//R1
	expected=high_pattern;	  
	e_read(&dev, i, j, addr, &result, sizeof(result));	
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M1: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//R0
	expected=low_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));	
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M1: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
	//W1
	data_in=high_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
      }
      //M2: UP{r1,w0,w1}		
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr=(k);
	//R1
	expected=high_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));	
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M2: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result);
	  }
	  status=0;
	}
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//W1
	data_in=high_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
      }
      //M3: DOWN{R1,W0,W1,W0}
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr=(RAM_SIZE-k-WORD_SIZE);
	//R1
	expected=high_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));	
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M3: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 	
	  }
	  status=0;
	}
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//W1
	data_in=high_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
      }
      //M4:DOWN{R0,W1,W0}
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr=(RAM_SIZE-k-WORD_SIZE);
	//R0
	expected=low_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));	
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M4: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
	//W1
	data_in=high_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
      }
      //M5:DOWN{R0,W1,R1}
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr=(RAM_SIZE-k-WORD_SIZE);
	//R0
	expected=low_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M5: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
	//W1
	data_in=high_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//R1
	expected=high_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M5: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
      }
      //M6:DOWN{R1,W0,R0}
      for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){
	addr=(RAM_SIZE-k-WORD_SIZE);
	//R1
	expected=high_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M6: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
	//W0
	data_in=low_pattern;
	e_write(&dev, i, j, addr, &data_in, sizeof(data_in));
	//R0
	expected=low_pattern;
	e_read(&dev, i, j, addr, &result, sizeof(result));
	if(result!=expected){
	  if(verbose){
	    printf("FAIL-PAT-M6: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); 
	  }
	  status=0;
	}
      }
    }
  }
  //Close
  e_close(&dev);
  e_finalize();

  //Self Check
  if(status){
    return EXIT_SUCCESS;
  }
  else{
    return EXIT_FAILURE;
  }   
}