This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: EMIF1 access to SDRAM dual mapping problem

Part Number: TMS320F28388D

Dear team:

My client has the following questions:
When using the emif of F28388D to access SDRAM, it is found that the memory interval in synchronous mode is as follows:

That is, CS0n has two dual-mapped address segments. It is found that the 0x0020 0000 segment can be accessed for writing through #program, but the 0x8000 0000 memory segment cannot be accessed by #program, but the pointer can be used for read and write access.

static float_t s_rDataValue[MAX_DATALEN];               
static float_t s_rDataBufValue[MAX_DATABUFLEN];         
uint32_t g_ulChannelIndex[MAX_CHANNEL];                 
#pragma DATA_SECTION(s_rDataValue,"emif1_cs0");
#pragma DATA_SECTION(s_rDataBufValue,"emif1_cs0");
#pragma DATA_SECTION(g_ulChannelIndex,"emifcs0");

cmd部分:
   emifcs0 : > EMIF1_CS0n, type=NOINIT
   emif_cs0_nonfar  : > EMIF1_CS0_CS2n
   .farbss          : > EMIF1_CS0n
   .farconst        : > EMIF1_CS0n
   .em1_cs0         : > EMIF1_CS0n
   .em1_cs2         : > EMIF1_CS2n | EMIF1_CS0_CS2n
   .em1_cs3         : > EMIF1_CS3n
   .em1_cs4         : > EMIF1_CS4n
   .em2_cs0         : > EMIF2_CS0n
   .em2_cs2         : > EMIF2_CS2n

That is, there is no way to directly assign g_ulChannelIndex.
But if you define a pointer to 0x8000 0000, you can assign a value to the pointer.
Are there related configuration requirements or does the 0x8000 0000 section really do not support the #program method?

Best regards

Best regards