使用F28388D的emif访问SDRAM的时候发现同步模式下的内存区间有:

也就是CS0n有两个地址段,双映射的。发现0x0020 0000段可以通过#program进行写访问,但是0x8000 0000内存段不能用#program进行访问,但是用指针可以进行读写访问。
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
也就是g_ulChannelIndex直接赋值是没有办法的。
但是如果定义一个指向0x8000 0000的指针,是可以对指针赋值的。
您好是有相关的配置要求还是0x8000 0000段就不支持#program的方式呢?