1 of 1 people found this helpful
I've attempted to reproduce this through MON and I can set the Write Access breakpoint using the ReadyStart Hello World demo app and will break on access to Task_Control_Block in the demo with the following command:
>BSH W 0x80014c8
where 0x80014c8 is the starting location of Task_Control_Block. The BL command shows it is set before issuing the ‘G’ command.
I also attempted this through CodeBench. I set the Watchpoint on the same memory location and I receive the same errors you did when applying a range:
The target endianness is set automatically (currently little endian)
Cannot access memory at address 0x48040000
arm-none-eabi-sprite: Processor does not support address masks in hardware breakpoints
arm-none-eabi-sprite: Unsupported HWBP type
Reviewing the TRM, the processor does support address masks so I will need to continue this investigation with our probe team and get back to you.
Thanks very much for your support.
I also use ReadyStart, and just as you said, the command MON> BSH W 0x........ dose work now.
But it does not support write access break point with specified value.
For example, I want to it break when the specified value 0x0000001 is written to address 0x2008efc0.
I write command as:
MON> BSH W 0x2008efc0 = 0x00000001
the response is:
Processor does not support value specific hardware breakpoints
Unsupported HWBP type
WARNING: breakpoint NOT set, target returned error.
Is my command foramt wrong?
What is the correct format, or the processor does not support it? I did not find information in TRM.
I have heard back from our MESP team and they informed me that I am wrong; the Cortex-A8 does not support address masking. The following types of hardware breakpoints are not supported:
(1) Address ranges e.g. >BSH W 8000 8010
(2) Address masks e.g. >BSH W 8000 #FF
(3) Value specific. e.g. >BSH W 8000 = 123
These type of hardware breakpoints are supported:
>BSH IS 32 8010 // I=instruction fetch, S=size 32 bit , ARange= address 0x8010
>BSH WS 32 8010 // W= write access, S=size 32 bit , ARange= address 0x8010
>BSH W 8010 // W= write access, ARange= address 0x8010
>BSH R 8010 // R= Read access, ARange= address 0x8010
Thank you very much for your support!
Your replay is very usful for me.