This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC2478 SDRAM scatter file problem

Hello, I am using a board of lpc2478 in which SDRAM is connected as shown in following pinmap.
I am unable to access data(write/read) from SDRAM. I have problem in accessing address 0xA0000000; as i am allocating it to a pionter as shown in program, PLEASE HELP ME SHALL I EDIT SCSTTER FILE TO GET ACCESS TO THIS MEMORY LOCATION?

void SDRAM_write(unsigned int No_of_data, unsigned int SDRAM_DAT[])
{ //unsigned short data_write = 0x0000; unsigned int a; SDRAM_pointer = (unsigned int*)0xA0000000; //0x80000555 for(a = 0; a < No_of_data; a++) {

*SDRAM_pointer = SDRAM_DAT[a]; while(EMCSTATUS_bit.B == 0x01) // Check if EMC is busy {} SDRAM_pointer++;

}

}

void SDRAM_read(unsigned int No_of_data)
{ int a, b; SDRAM_pointer = (unsigned int*)0XA0000000;//0x801FE000; for(a = 0; a < No_of_data; a++) { b = *SDRAM_pointer; while(EMCSTATUS_bit.B == 0x01) // Check if EMC is busy {} test1234[a] = b;

SDRAM_pointer++; //delay(100); } SDRAM_pointer = (unsigned int*)0XA0000000; for(a = 0; a < No_of_data; a++) { sprintf(buffer,"0x%x = 0x%x !",SDRAM_pointer, test1234[a]); row_wr(4,buffer); transmit_array(buffer); transmit_byte(0X0D); transmit_byte(0X0A); SDRAM_pointer++; }

}
THIS IS MY PINOUT FOR SDRAM. //***************************** EXTERNAL SDRAM CONTROL SIGNALS ********************************* PINSEL5_bit.P2_20 = 1; //SDRAM CS0 PINSEL5_bit.P2_16 = 1; //SDRAM CAS PINSEL5_bit.P2_17 = 1; //SDRAM RAS PINSEL5_bit.P2_18 = 1; //SDRAM CLOCK PINSEL5_bit.P2_24 = 1; //SDRAM CLOCK ENABLE PINSEL5_bit.P2_28 = 1; //SDRAM1 DQML PINSEL5_bit.P2_29 = 1; //SDRAM1 DQMH PINSEL5_bit.P2_30 = 1; //SDRAM2 DQML PINSEL5_bit.P2_31 = 1; //SDRAM2 DQMH

//********************** EXTERNAL SDRAM & FLASH COMMON CONTROL SIGNALS ************************** PINSEL9_bit.P4_25 = 1; //SDRAM & FLASH WRENB

//****************************** EXTERNAL MEMORY ADDRESS LINES ********************************** PINSEL8_bit.P4_0 = 1; //EXTERNAL MEMORY ADDRESS0 PINSEL8_bit.P4_1 = 1; //EXTERNAL MEMORY ADDRESS1 PINSEL8_bit.P4_2 = 1; //EXTERNAL MEMORY ADDRESS2 PINSEL8_bit.P4_3 = 1; //EXTERNAL MEMORY ADDRESS3 PINSEL8_bit.P4_4 = 1; //EXTERNAL MEMORY ADDRESS4 PINSEL8_bit.P4_5 = 1; //EXTERNAL MEMORY ADDRESS5 PINSEL8_bit.P4_6 = 1; //EXTERNAL MEMORY ADDRESS6 PINSEL8_bit.P4_7 = 1; //EXTERNAL MEMORY ADDRESS7 PINSEL8_bit.P4_8 = 1; //EXTERNAL MEMORY ADDRESS8 PINSEL8_bit.P4_9 = 1; //EXTERNAL MEMORY ADDRESS9 PINSEL8_bit.P4_10 = 1; //EXTERNAL MEMORY ADDRESS10 PINSEL8_bit.P4_11 = 1; //EXTERNAL MEMORY ADDRESS11 PINSEL8_bit.P4_12 = 1; //EXTERNAL MEMORY ADDRESS12 PINSEL8_bit.P4_13 = 1; //EXTERNAL MEMORY ADDRESS13 PINSEL8_bit.P4_14 = 1; //EXTERNAL MEMORY ADDRESS14 PINSEL8_bit.P4_15 = 1; //EXTERNAL MEMORY ADDRESS15 PINSEL9_bit.P4_16 = 1; //EXTERNAL MEMORY ADDRESS16 PINSEL9_bit.P4_17 = 1; //EXTERNAL MEMORY ADDRESS17 PINSEL9_bit.P4_18 = 1; //EXTERNAL MEMORY ADDRESS18 PINSEL9_bit.P4_19 = 1; //EXTERNAL MEMORY ADDRESS19 PINSEL9_bit.P4_20 = 1; //EXTERNAL MEMORY ADDRESS20 PINSEL9_bit.P4_21 = 1; //EXTERNAL MEMORY ADDRESS21 PINSEL9_bit.P4_22 = 1; //EXTERNAL MEMORY ADDRESS22

//******************************** EXTERNAL MEMORY DATA LINES *********************************** PINSEL6_bit.P3_0 = 1; //EXTERNAL MEMORY DATA0 PINSEL6_bit.P3_1 = 1; //EXTERNAL MEMORY DATA1 PINSEL6_bit.P3_2 = 1; //EXTERNAL MEMORY DATA2 PINSEL6_bit.P3_3 = 1; //EXTERNAL MEMORY DATA3 PINSEL6_bit.P3_4 = 1; //EXTERNAL MEMORY DATA4 PINSEL6_bit.P3_5 = 1; //EXTERNAL MEMORY DATA5 PINSEL6_bit.P3_6 = 1; //EXTERNAL MEMORY DATA6 PINSEL6_bit.P3_7 = 1; //EXTERNAL MEMORY DATA7 PINSEL6_bit.P3_8 = 1; //EXTERNAL MEMORY DATA8 PINSEL6_bit.P3_9 = 1; //EXTERNAL MEMORY DATA9 PINSEL6_bit.P3_10 = 1; //EXTERNAL MEMORY DATA10 PINSEL6_bit.P3_11 = 1; //EXTERNAL MEMORY DATA11 PINSEL6_bit.P3_12 = 1; //EXTERNAL MEMORY DATA12 PINSEL6_bit.P3_13 = 1; //EXTERNAL MEMORY DATA13 PINSEL6_bit.P3_14 = 1; //EXTERNAL MEMORY DATA14 PINSEL6_bit.P3_15 = 1; //EXTERNAL MEMORY DATA15 PINSEL7_bit.P3_16 = 1; //EXTERNAL MEMORY DATA16 PINSEL7_bit.P3_17 = 1; //EXTERNAL MEMORY DATA17 PINSEL7_bit.P3_18 = 1; //EXTERNAL MEMORY DATA18 PINSEL7_bit.P3_19 = 1; //EXTERNAL MEMORY DATA19 PINSEL7_bit.P3_20 = 1; //EXTERNAL MEMORY DATA20 PINSEL7_bit.P3_21 = 1; //EXTERNAL MEMORY DATA21 PINSEL7_bit.P3_22 = 1; //EXTERNAL MEMORY DATA22 PINSEL7_bit.P3_23 = 1; //EXTERNAL MEMORY DATA23 PINSEL7_bit.P3_24 = 1; //EXTERNAL MEMORY DATA24 PINSEL7_bit.P3_25 = 1; //EXTERNAL MEMORY DATA25 PINSEL7_bit.P3_26 = 1; //EXTERNAL MEMORY DATA26 PINSEL7_bit.P3_27 = 1; //EXTERNAL MEMORY DATA27 PINSEL7_bit.P3_28 = 1; //EXTERNAL MEMORY DATA28 PINSEL7_bit.P3_29 = 1; //EXTERNAL MEMORY DATA29 PINSEL7_bit.P3_30 = 1; //EXTERNAL MEMORY DATA30 PINSEL7_bit.P3_31 = 1; //EXTERNAL MEMORY DATA31

  • See posting instructions when putting source code into a message, then review in the preview. Posting a wall of crap isn't going to win you any friends here.

    The scatter file deals with where the LINKER puts the memory sections. You will STILL need to have startup code of your own to configure the processor pins, and get the SDRAM up and running. You need to do this BEFORE the C runtime code tries to initialize it's environment and call your code. ie BEFORE calling __main

    Often this is done in SystemInit() type code on Cortex-Mx CMSIS platforms, on others you'd need to code some assembler in startup_arch.s with code tailored to YOUR board, and it's configuration.