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.

C6678 - memory protection

Guru 10750 points


Hi,

I'm trying to protect a program residing in the DDR3, the program starts at add. 0x80000000 length 0x8000000, I configured the XMC XMPAX to 

xmpaxh = 0x8000001A (BADDR = 0x80000, SEGSZ = 0x1A (128MB))

xmpaxl = 0x0800002D (RADDR = 0x080000, PERM - 0x2D - SR, SX, UR, UX = 1, SW, UW = 0),

- I'm getting issues with accessing the DDR memory after this setting, what is wrong with the configuration?

- Going from DDR3 32b to 36b  should it be the same 0x80000000?

- I assume I should get the MDMAERREVT event In case of writing to the code section?

Thanks,

HR

  • HR,

    What issues are you having with accessing the DDR memory after this setting?

    There will be an additional implied 0 above the 8 in your address from the point-of-view of the memory expansion logic.

    Yes, you should get the MDMAERREVT if the access in error is generated through that port.

    Regards,
    RandyP

  • Hi RandyP,

    When RADDR = 0x080000 than I'm getting NOP when running the code, but I found out the setting RADDR to 0x180000 solves the issue, does the physical DDR3 address (36b) starts at 0x1 8000 0000 ?

    Thanks,

    HR

  • HR,

    I am glad you got it working, and I will note this for the future when I need to try it.

    The board implementation should decide how the 36-bit address is used. I would have assumed 0x0 8000 0000 would have worked like you did. But further reading of the user's guides and looking at the schematic would probably fill in the blanks.

    Regards,
    RandyP

  • RandyP,

    Thanks,

    HR