Forum Discussion
Altera_Forum
Honored Contributor
9 years agoHello all,
This code has been tested with the BeMicroMax and it will be help you to test your SDRAM memory : We assume that you are set your memory controller with QSYS : In my case the memory controller is mapped at the address : (0x800000)# define SDRAM_BASE (0x800000)# define SDRAM_BASE_MUX (SDRAM_BASE + 0x2000) /** Offset for the exception */ /** Variables */ uint32_t u32AddrSram = 0; uint16_t u16Value = 0; uint16_t u16ReadSramValue = 0; /** example for write and read only one byte at the time in the sram */ for( u32AddrSram = 0; u32AddrSram< 100 ; u32addrsram += 0x08) { /** Write Data */ alt_printf("\n*** SDRAM WRITE[%x] VALUE = %x \n\r ", (SDRAM_BASE_MUX + u32AddrSram) , (uint8_t)(u16Value)); iowr_8direct(SDRAM_BASE_MUX, (uint16_t)u32AddrSram, (uint8_t)u16Value); /** Read Data */ u16ReadSramValue = iord_8direct(SDRAM_BASE_MUX, u32AddrSram); alt_printf("\n*** SDRAM READ[%x] VALUE = %x \n\r ", (SDRAM_BASE_MUX + u32AddrSram), u16ReadSramValue); /** Change the value */ u16Value++; } /** example for write and read only 2bytes at the time in the sram */ u16Value = 0xA000; for( u32AddrSram = 0; u32AddrSram< 100 ; u32addrsram += 0x10) { /** Write Data */ alt_printf("\n*** SDRAM WRITE[%x] VALUE = %x \n\r ", (SDRAM_BASE_MUX + u32AddrSram) , (uint16_t)(u16Value)); iowr_16direct(SDRAM_BASE_MUX, (uint16_t)u32AddrSram, (uint16_t)u16Value); /** Read Data */ u16ReadSramValue = iord_16direct(SDRAM_BASE_MUX, u32AddrSram); alt_printf("\n*** SDRAM READ[%x] VALUE = %x \n\r ", (SDRAM_BASE_MUX + u32AddrSram), u16ReadSramValue); /** Change the value */ u16Value++; } /*** Result for Byte */ *** SDRAM WRITE[802000] VALUE = 0 *** SDRAM READ[802000] VALUE = 0 *** SDRAM WRITE[802008] VALUE = 1 *** SDRAM READ[802008] VALUE = 1 *** SDRAM WRITE[802010] VALUE = 2 *** SDRAM READ[802010] VALUE = 2 *** SDRAM WRITE[802018] VALUE = 3 *** SDRAM READ[802018] VALUE = 3 *** SDRAM WRITE[802020] VALUE = 4 *** SDRAM READ[802020] VALUE = 4 *** SDRAM WRITE[802028] VALUE = 5 *** SDRAM READ[802028] VALUE = 5 *** SDRAM WRITE[802030] VALUE = 6 *** SDRAM READ[802030] VALUE = 6 *** SDRAM WRITE[802038] VALUE = 7 *** SDRAM READ[802038] VALUE = 7 *** SDRAM WRITE[802040] VALUE = 8 *** SDRAM READ[802040] VALUE = 8 *** SDRAM WRITE[802048] VALUE = 9 *** SDRAM READ[802048] VALUE = 9 *** SDRAM WRITE[802050] VALUE = a *** SDRAM READ[802050] VALUE = a *** SDRAM WRITE[802058] VALUE = b *** SDRAM READ[802058] VALUE = b *** SDRAM WRITE[802060] VALUE = c *** SDRAM READ[802060] VALUE = c /** result for 2bytes read */ *** SDRAM WRITE[802000] VALUE = a000 *** SDRAM READ[802000] VALUE = a000 *** SDRAM WRITE[802010] VALUE = a001 *** SDRAM READ[802010] VALUE = a001 *** SDRAM WRITE[802020] VALUE = a002 *** SDRAM READ[802020] VALUE = a002 *** SDRAM WRITE[802030] VALUE = a003 *** SDRAM READ[802030] VALUE = a003 *** SDRAM WRITE[802040] VALUE = a004 *** SDRAM READ[802040] VALUE = a004 *** SDRAM WRITE[802050] VALUE = a005 *** SDRAM READ[802050] VALUE = a005 *** SDRAM WRITE[802060] VALUE = a006 *** SDRAM READ[802060] VALUE = a006