Hi,
I am using the Rowley-(LPC2378)-project with the LPC2468-16 OEM board from Embedded Artists.
The problem is that I cannot write to external SDRAM located in the range of 0xA0000000...0xAFFFFFFF.
I have modified the linker script like this, which is similar to a modification for the internal USB RAM, which is ok:
MEMORY
{
/*
Some other memory segments here ....
*/
EXTERNAL_SDRAM (wx) : ORIGIN = 0xA0000000, LENGTH = 0x02000000 /* für EA-Board hinzugefügt, bss2-Segment am Dateiende */
}
SECTIONS
{
/*
Some other sections here ....
*/
__EXTERNAL_SDRAM_segment_start__ = 0xA0000000;
__EXTERNAL_SDRAM_segment_end__ = 0xA2000000;
/*----------------------------------------------------------------*/
__bss2_load_start__ = ALIGN(__EXTERNAL_SDRAM_segment_start__ , 4);
.bss2 ALIGN(__EXTERNAL_SDRAM_segment_start__ , 4) (NOLOAD) :
{
__bss2_start__ = .;
*(.bss2 .bss2.* .gnu.linkonce.b.*) *(COMMON)
}
__bss2_end__ = __bss2_start__ + SIZEOF(.bss2);
. = ASSERT(__bss2_end__ <= __EXTERNAL_SDRAM_segment_end__ && __bss2_end__ >= (__EXTERNAL_SDRAM_segment_start__) , "error: .bss2 is too large to fit in EXTERNAL_SDRAM memory segment");
}
Are additional considerations required for external memory?
While the structures / buffers are assigned to the correct memory range, it is not possible to write to that memory.
I suppose that the reason for this has something to do with the specific project, because there is another project (ARM, not THUMB mode) which does fine.
Does anybody know how to solve this problem?
Regards,
Henry