This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to use DWT mechanism of cortex-m33 to obtain the corresponding instruction and accessed memory in the run time?

I used two registers to configure and monitor continuous memory being accessed, the code shows as following:

uint32 memory[1000];
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk |CoreDebug_DEMCR_MON_EN_Msk;
uint32_t * comp1 = 0xE0001030;
*comp1 = &memory[999];
DWT->FUNCTION1 = (0<<11)|1<<4|7;
uint32_t *comp0 = 0xE0001020;
*comp0 = &memory[0];
DWT->FUNCTION0 = (0 << 11) | 1<<4 | 5;

Then, every instruction writes the memory will trigger an exception and invoke the DebugMon_Handler.

What I want is to do is to obtain which instruction to write the memory in DebugMon_Handler and the exact memory address involved.

Any suggestions on how to obtain the exact instruction & memory address that triggers the interrupt?

Parents
  • Hello, boofish. Although I do not have a solution to the posted question, I do have some queries which I hope you wont mind answering. Did the above-posted code for the watchpoint register configuration work for you? Were you able to generate an exception when you try to access the array element ? 

Reply
  • Hello, boofish. Although I do not have a solution to the posted question, I do have some queries which I hope you wont mind answering. Did the above-posted code for the watchpoint register configuration work for you? Were you able to generate an exception when you try to access the array element ? 

Children
No data