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.

TMS570LC4357: NMPU not working correctly with 128kB region

Part Number: TMS570LC4357

Hello experts,

I am trying to find out how to configure the NMPU of the EMAC module (diagnostic ETH17 and ETH18 in the security manual).

I have implemented the configuration and the test of the configuration. The test of the NMPU is done using the internal diagnostic mode.

Everything works when I implement a region with a size of 64 kB. The trouble starts when I try to configure a 128 kB region.

I have tried the following configuration:

Region base address: 0x0802 0000
Region size: 128 kB

The address 0x0802 0000 is a multiple of the region size, so the region should start at 0x0802 0000 and end at 0x0803 FFFF.

If I were to test the configuration using the internal diagnostic mode, I would expect to see the following

write to 0x0800 0000 should produce an error
write to 0x0801 FFFF should produce an error
write to 0x0804 0000 should produce an error
What actually happens is that no error is generated.

I have checked this several times and cannot find any reason why the same code would work for a 64k region but not for a 128k region.

Could you check if the NMPU logic is not broken for regions larger than 64kB or if the internal diagnostic mode is broken.

Thanks and best regards,
Max

  • Hi Max,

    Region base address: 0x0802 0000
    Region size: 128 kB

    The address 0x0802 0000 is a multiple of the region size, so the region should start at 0x0802 0000 and end at 0x0803 FFFF.

    Your configuration looks correct to me.

    I have checked this several times and cannot find any reason why the same code would work for a 64k region but not for a 128k region.

    NMPU should work for 128KB configuration as well.

    My suggestion would make sure there won't be any overlaps in the regions:

    When memory regions overlap, memory access is affected by the attributes of the region with the highest number.

    And also, if possible, provide a simplest project with the issue for debugging at my end.

    --
    Thanks & regards,
    Jagadish.