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; }
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; }
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; }
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; }