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.

TMS320C6678: Share a solution of the privious question "When writing a 4-byte of data to address 8000x0000, but it is found that data in addresses 0xA000 0000, 0xC000 0000, 0xE000 0000, etc. also appears."

Part Number: TMS320C6678

TMS320C6678: TMS320C6678: When writing a 4-byte of data to address 8000x0000, but it is found that data in addresses 0xA000 0000, 0xC000 0000, 0xE000 0000, etc. also appears. - Processors forum - Processors - TI E2E support forums

Above is the privious question I asked for help, I'd like to Thank   Shankari G[https://e2e.ti.com/members/6681393] first. 

To talk about the reason of the question, here is my analysis process:

  1. I first doubted if it had something to do with MPAX, because the question seams that both 0x8000_0000 and 0xA000_0000 are mapped to the same phy address. So I checked the MPAX configuration registers(XMPAXL/XMPAH), and which are right according the  Corepac User Guide(SPRUGW0C);
  2. Then I rebuild the Platform, and configured the DDR range: 0x8000_0000~0xFFFF_FFFF, size: 2GB. but not worked.
  3. At last, I checked the DDR configurations, I found something in SPRUHN7C-SDCFG, which is the SDRAM Configuration register. In SDCFG, the  "NM" fields (DDR3 data bus width) is the KEY point, which must be set according the DDR storage particles.

Here is my board info:

DSP model: TMS320C6678

DDR3: DDR3 is connected to 4Gb/4bit DDR16 surface-mount memory particles, designed as a single rank

In my previous project, the DDR SDCFG like this:

    TEMP = 0;
    TEMP |= 0x3 << 29;                                      // SDRAM_TYPE bit field 31:29 (fixed value) DDR3  ok
    TEMP |= 0x0 << 27;                                      // IBANK_POS bit field 28:27 8banks   ok
    TEMP |= 0x3 << 24;                                      // DDR_TERM bit field 26:24 RZQ/6Ω
    TEMP |= 0x0 << 21;                                      // DYN_ODT bit field 22:21 Disable
    TEMP |= 0x1 << 18;                                      // SDRAM_DRIVE bit field 19:18 RZQ/7Ω
    TEMP |= 0x2 << 16;                                      // CWL  7clocks
    TEMP |= 0x2 << 14;                                      // NM bit field 15:14, 0X2:16bits width
    TEMP |= 0xA << 10;                                      // CL   9clock
    TEMP |= 0x7 << 7;                                       // ROWSIZE bit field 9:7  16 row bits ok
    TEMP |= 0x3 << 4;                                       // IBANK bit field 6:4   8 banks    ok
    TEMP |= 0x0 << 3;                                       // EBANK bit field 3:3   DCE0#      ok
    TEMP |= 0x2;                                            // PAGESIZE bit field 2:0   1024-word page, 10 column bits
    DDR_SDCFG = TEMP;

The Field[15:14] is set to 0x2(16-bit bus width), which is not matched my board , So I set the field to 0x0(64-bit bus width).

Then it worked!

成都领目科技 Chengdu Lemid Tech.