int main (void) {


   print("-- Entering main() --\r\n");

   /* 
    * MemoryTest routine will not be run for the memory at 
    * 0xffffc000 (xps_bram_if_cntlr_1)
    * because it is being used to hold a part of this application program
    */


   /* Testing BRAM Memory (xps_bram_if_cntlr_2)*/
   {
      XStatus status;

      print("Starting MemoryTest for xps_bram_if_cntlr_2:\r\n");
      print("  Running 32-bit test...");
      status = XUtil_MemoryTest32((Xuint32*)XPAR_XPS_BRAM_IF_CNTLR_2_BASEADDR, 512, 0xAAAA5555, XUT_ALLMEMTESTS);
      if (status == XST_SUCCESS) {
         print("PASSED!\r\n");
      }
      else {
         print("FAILED!\r\n");
      }
      print("  Running 16-bit test...");
      status = XUtil_MemoryTest16((Xuint16*)XPAR_XPS_BRAM_IF_CNTLR_2_BASEADDR, 1024, 0xAA55, XUT_ALLMEMTESTS);
      if (status == XST_SUCCESS) {
         print("PASSED!\r\n");
      }
      else {
         print("FAILED!\r\n");
      }
      print("  Running 8-bit test...");
      status = XUtil_MemoryTest8((Xuint8*)XPAR_XPS_BRAM_IF_CNTLR_2_BASEADDR, 2048, 0xA5, XUT_ALLMEMTESTS);
      if (status == XST_SUCCESS) {
         print("PASSED!\r\n");
      }
      else {
         print("FAILED!\r\n");
      }
   }

   print("-- Exiting main() --\r\n");
   return 0;
}
Пример #2
0
int main() {

	// -- INITIALIZATIONS -- //
	volatile u32 *ddr_addr = (volatile u32 *) XPAR_S6DDR_0_S0_AXI_BASEADDR;
	frame_merge_Initialize (&Merge_IP, XPAR_FRAME_MERGE_0_BASEADDR);
	volatile int *hdmi_addr = (int *) XPAR_HDMI_OUT_0_BASEADDR;

	u32 pixel_value = 0x0;

	XStatus status;

	int i, j;
	int k;
	int DELAY = 10000;
	char input;

	status = XUtil_MemoryTest32((u32 *) ddr_addr,
								NUM_TEST_WORDS,
								TEST_VECTOR,
								XUT_ALLMEMTESTS);
	if (XST_SUCCESS != status)
	{
		printf("Error - Memory self test failed. Exiting...\r\n");
		return -1;
	}

	status = XUartLite_Initialize(&UartLite, XPAR_UARTLITE_1_DEVICE_ID);
	if (XST_SUCCESS != status)
	{
		printf("Error - UartLite self test failed. Exiting...\r\n");
		return -1;
	}

	// Initialize HDMI-OUT IP Block
	hdmi_addr[0] = 1280; 									// hdmi_addr[0] corresponds to slv_reg2 --> Set Stride
	hdmi_addr[1] = (int)(ddr_addr + COMPFRAME_OFFSET);		// Display Comp Frame
	hdmi_addr[2] = 0;										// Ensure Go signal is low

	printf ("Setup of HDMI-OUT complete\n");

	// -- FRAME INIT OPERATIONS --
	// Initialize DrawFrame - image to draw on top of VideoFrame
	for (j = 0; j < VRES; j++)
	{
		for (i = 0; i < HRES; i++)
		{
			if(i >= BOX_X0 && i < BOX_X1 && j >= BOX_Y0 && j < BOX_Y1)
			{
				pixel_value = YELLOW;	// Yellow box
			} else
			{
				pixel_value = WHITE;	// in a white frame
			}
			ddr_addr[DRAWFRAME_OFFSET + j * HRES + i] = pixel_value;
		}
	}

	// Initialize VideoFrame (input video, simulate as columns of solid colour (Blue/Red/Green) from left to right)
	for (j = 0; j < VRES; j++)
	{
		for (i = 0; i < HRES/3; i++)
		{
			pixel_value = BLUE;
			ddr_addr[VIDEOFRAME_OFFSET + j * HRES + i] = pixel_value;
		}
		for (i = HRES/3; i < 2*HRES/3; i++)
		{
			pixel_value = RED;
			ddr_addr[VIDEOFRAME_OFFSET + j * HRES + i] = pixel_value;
		}
		for (i = 2*HRES/3; i < HRES; i++)
		{
			pixel_value = GREEN;
			ddr_addr[VIDEOFRAME_OFFSET + j * HRES + i] = pixel_value;
		}
	}

	// Initialize CompositeFrame (output video = VideoFrame + DrawFrame. Initialize as black)
	for (j = 0; j < VRES; j++)
	{
		for (i = 0; i < HRES; i++)
		{
			pixel_value = BLACK;
			ddr_addr[COMPFRAME_OFFSET + j * HRES + i] = pixel_value;
		}
	}
	printf ("Frame Initialization complete!\n");

	// -- MERGE OPERATIONS --
	frame_merge_sw (ddr_addr, (int)(DRAWFRAME_OFFSET), (int)(VIDEOFRAME_OFFSET), (int)(COMPFRAME_OFFSET), HRES, VRES);

	// Enable HDMI-OUT once merging is finished
	hdmi_addr[2] = 1;

	printf ("Frame Merge complete!\n");

	printf ("Enter (0/1/2) for (draw/video/composite) frames:\n");

	// Allow user to switch between draw, video, and comp frames
	// to output to screen
	input = 0;
	while(1)
	{
		XUartLite_Recv(&UartLite, &input, 1);	// Recv 1 byte (char) and store into buffer
		switch (input)
		{
		case '0':	// DrawFrame
			hdmi_addr[1] = (int)(ddr_addr + DRAWFRAME_OFFSET);
			break;
		case '1':	// VideoFrame
			hdmi_addr[1] = (int)(ddr_addr + VIDEOFRAME_OFFSET);
			break;
		case '2':	// CompFrame
			hdmi_addr[1] = (int)(ddr_addr + COMPFRAME_OFFSET);
			break;
		default:
			hdmi_addr[1] = (int)(ddr_addr + COMPFRAME_OFFSET);
			break;
		}
	}

	printf("Exiting\n\r");

	return 0;
}
Пример #3
0
int main (void) {


   XCache_EnableICache(0x80000001);
   XCache_EnableDCache(0x80000001);

   /* Initialize RS232 - Set baudrate and number of stop bits */
   XUartNs550_SetBaud(XPAR_RS232_BASEADDR, XPAR_XUARTNS550_CLOCK_HZ, 9600);
   XUartNs550_mSetLineControlReg(XPAR_RS232_BASEADDR, XUN_LCR_8_DATA_BITS);
   print("-- Entering main() --\r\n");

   /* 
    * MemoryTest routine will not be run for the memory at 
    * 0xffff0000 (xps_bram_if_cntlr_1)
    * because it is being used to hold a part of this application program
    */


   /* 
    * MemoryTest routine will not be run for the memory at 
    * 0x86000000 (FLASH_8Mx16)
    * because it is a read-only memory
    */


   /* Testing Memory (DDR2_SDRAM_16Mx32)*/
   {
      XStatus status;

      print("Starting MemoryTest for DDR2_SDRAM_16Mx32:\r\n");
      print("  Running 32-bit test...");
      status = XUtil_MemoryTest32((Xuint32*)XPAR_DDR2_SDRAM_16MX32_MEM_BASEADDR, 1024, 0xAAAA5555, XUT_ALLMEMTESTS);
      if (status == XST_SUCCESS) {
         print("PASSED!\r\n");
      }
      else {
         print("FAILED!\r\n");
      }
      print("  Running 16-bit test...");
      status = XUtil_MemoryTest16((Xuint16*)XPAR_DDR2_SDRAM_16MX32_MEM_BASEADDR, 2048, 0xAA55, XUT_ALLMEMTESTS);
      if (status == XST_SUCCESS) {
         print("PASSED!\r\n");
      }
      else {
         print("FAILED!\r\n");
      }
      print("  Running 8-bit test...");
      status = XUtil_MemoryTest8((Xuint8*)XPAR_DDR2_SDRAM_16MX32_MEM_BASEADDR, 4096, 0xA5, XUT_ALLMEMTESTS);
      if (status == XST_SUCCESS) {
         print("PASSED!\r\n");
      }
      else {
         print("FAILED!\r\n");
      }
   }

   print("-- Exiting main() --\r\n");
   XCache_DisableDCache();
   XCache_DisableICache();
   return 0;
}
Пример #4
0
int main() {
#ifdef RGB565
	volatile u16 *ddr_addr = (volatile u16 *) XPAR_S6DDR_0_S0_AXI_BASEADDR;
#else
	volatile u32 *ddr_addr = (volatile u32 *) XPAR_S6DDR_0_S0_AXI_BASEADDR;
#endif

	printf(
			"32-bit test: %s\n\r",
			(XST_SUCCESS == XUtil_MemoryTest32((u32 *)ddr_addr, NUM_TEST_WORDS,
					TEST_VECTOR, XUT_ALLMEMTESTS)) ? "passed" : "failed");

	volatile int *hdmi_addr = (int *) XPAR_HDMI_OUT_0_BASEADDR;

	// fill up off-chip memory with known values
//#ifdef RGB565
//	int i, j;
//	for (j = 0; j < 720; j++) {
//		for (i = 0; i < 1280; i++) {
//			ddr_addr[j * 1280 + i] = (j / 8 % 32) << 11 /* red */ | (i * 25 / 2048 % 64) << 5 /* green */ | (i / 8 % 32) /* blue */;
//		}
//	}
//#else
//	int i, j;
//	for (j = 0; j < 720; j++) {
//		for (i = 0; i < 1280; i++) {
//			ddr_addr[j * 1280 + i] = j << 24 /* red */ | (i * 25 / 256) << 16 /* green */ | (i % 256) << 8 /* blue */;
//		}
//	}
//#endif

#ifdef TEST_SYSTEM
	// set stride
	hdmi_addr[0] = 1280; // hdmi_addr[0] corresponds to slv_reg2
	// set frame base address
	hdmi_addr[1] = (int)ddr_addr; // hdmi_addr[1] corresponds to slv_reg1
	// go
	hdmi_addr[2] = 1;

//	int k = 0, DELAY = 100;
//	while (1)
//	{
//		for (j = 0; j < 720; j++) {
//			for (i = 0; i < 1280; i++) {
//				for (k = 0; k < DELAY; k++);
//				ddr_addr[j * 1280 + i] = 0xffffffff;
//			}
//		}
//
//#ifdef RGB565
//	int i, j;
//	for (j = 0; j < 720; j++) {
//		for (i = 0; i < 1280; i++) {
//			ddr_addr[j * 1280 + i] = (j / 8 % 32) << 11 /* red */ | (i * 25 / 2048 % 64) << 5 /* green */ | (i / 8 % 32) /* blue */;
//		}
//	}
//#else
//	int i, j;
//	for (j = 0; j < 720; j++) {
//		for (i = 0; i < 1280; i++) {
//			ddr_addr[j * 1280 + i] = j << 24 /* red */ | (i * 25 / 256) << 16 /* green */ | (i % 256) << 8 /* blue */;
//		}
//	}
//#endif
//
//	}
#endif

	printf("Exiting\n\r");

	return 0;
}