/****************************************************************************** * * Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * Use of the Software is limited solely to applications: * (a) running on a Xilinx device, or * (b) that interact with a Xilinx device through a bus or interconnect. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Except as contained in this notice, the name of the Xilinx shall not be used * in advertising or otherwise to promote the sale, use or other dealings in * this Software without prior written authorization from Xilinx. * ******************************************************************************/ /* * helloworld.c: simple test application * * This application configures UART 16550 to baud rate 9600. * PS7 UART (Zynq) is not initialized by this application, since * bootrom/bsp configures it to baud rate 115200 * * ------------------------------------------------ * | UART TYPE BAUD RATE | * ------------------------------------------------ * uartns550 9600 * uartlite Configurable only in HW design * ps7_uart 115200 (configured by bootrom/bsp) */ #include #include #include "platform.h" #include "xil_printf.h" #include "xparameters.h" #include "xbram.h" #define BRAM_SIZE 0x2000 XBram mybram; XBram_Config mycfg; void init() { mycfg.DeviceId = XPAR_AXI_BRAM_CTRL_0_DEVICE_ID; mycfg.DataWidth = XPAR_AXI_BRAM_CTRL_0_DATA_WIDTH; mycfg.MemBaseAddress = XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR; mycfg.MemHighAddress = XPAR_AXI_BRAM_CTRL_0_S_AXI_HIGHADDR; mycfg.CtrlHighAddress= XPAR_AXI_BRAM_CTRL_0_S_AXI_CTRL_HIGHADDR; mycfg.CtrlBaseAddress= XPAR_AXI_BRAM_CTRL_0_S_AXI_CTRL_BASEADDR; //mybram.Config.DeviceId = mycfg.DeviceId; //mybram.Config.DataWidth = mycfg.DataWidth; //mybram.Config.MemBaseAddress = mycfg.MemBaseAddress; //mybram.Config.MemHighAddress = mycfg.MemHighAddress; XBram_CfgInitialize(&mybram,&mycfg , mycfg.MemBaseAddress); } int main() { init_platform(); init(); xil_printf("Xilinx self test finish %x \n\r", XBram_SelfTest(&mybram,0) ); const u32 Addr[2] = {mybram.Config.MemBaseAddress & 0xfffffffc, mybram.Config.MemHighAddress & 0xfffffffc}; unsigned int uiLoop; unsigned int uiDataArray = Addr[0]; unsigned int uiData; // // // // xil_printf("\n\r BRAM Application Starts \n\r"); // // xil_printf("\n\r BRAM Data Initialization \n\r"); // // BRAM Initialization with specified Pattern. for(uiLoop = Addr[0] ; uiLoop < Addr[1] ; uiLoop++) { XBram_Out32((uiDataArray + uiLoop), uiLoop); // xil_printf("%x %x\n\r", uiDataArray + uiLoop, uiDataArray ); //usleep(10000000); } // xil_printf("\n\r BRAM Data Initialization Finished \n\r"); // // BRAM Data Verification. for(uiLoop = Addr[0] ; uiLoop < Addr[1] ; uiLoop++) { uiData = XBram_In32(uiLoop); //xil_printf("%x %x\n\r", uiDataArray + uiLoop, uiDataArray ); xil_printf("%x %x \n\r", uiData, uiLoop ); //usleep(100000); if(uiData != uiLoop) { xil_printf("\n\r BRAM verification failed \n\r"); return -1; } } xil_printf("\n\r BRAM Verification Successful \n\r"); cleanup_platform(); return 0; }