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?
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 ?