Hi David - I am experiencing the same issue, did you find any solution yet? On the Segger forum there is a similar thread where the proposed solution was to disable cache which is screwing up the Segger JLINK breakpoint setting. I tried this but was unsuccessful.
The general method for debugging that I am using is as follows:
1) start the Sabre SD board and stop UBOOT before Linux loads,
2) execute the following commands in UBOOT to set the initial stack pointer and reset vector and take the M4 out of reset (mw.l 0x7f8000 0x20008000; mw.l 0x7f8004 0x1fff9001 144; mw.w 0x7f9000 0xe7fe; dcache flush; bootaux 0x7F8000) - NOTE: there is no actual application in memory at this point.
3) attach to the Sabre SD board using JLINK via eclipse, which downloads the application and performs a halt on the M4.
4) steps 2&3 seem 'backwards' to me, but its the only way I can get the JLINK to properly connect and download. I have tried just enabling the M4 core and connecting but this fails - it seems that establishing the stack pointer and initial vector (even if there is no code there), keeps the M4 is a somewhat 'predicable' state until the JLINK attaches and puts real code in memory. Maybe there is a more elegant way to do this for debugging? All of the NXP examples I have seen presume that you load the binary from SD/Flash into the final memory location BEFORE starting the core, but this doesn't seem possible when using Eclipse to load the .elf file via JLINK.
The results I am seeing when attempting to debug different memories:
1) If I simply load my application (built for DDR & TCM) with the JLINK through Eclipse and let it run (no breakpoints) after the initial halt, it seems to execute as expected; I can see what looks like the correct behavior on the M4 UART output and interact with it.
2) Any any attempt to stop and debug my application (built for DDR & TCM) results in a lock up. I can set the initial breakpoint anywhere, and the debugger stops properly. But any attempt to single step or run thereafter fails. In the failing state, the JLINK continuously loops on the following actions per the console:
..Breakpoint reached @ address 0x800006F2
Reading all registers
Read 4 bytes @ address 0x800006F2 (Data = 0xF0004802)
Starting target CPU...
...Breakpoint reached @ address 0x800006F2
Reading all registers
Read 4 bytes @ address 0x800006F2 (Data = 0xF0004802)
Starting target CPU...
...Breakpoint reached @ address 0x800006F2
Reading all registers
Read 4 bytes @ address 0x800006F2 (Data = 0xF0004802)
Starting target CPU...
...Breakpoint reached @ address 0x800006F2
Reading all registers
...
3) If I attempt to disable the cache (0xE0082000, 0xE0082800) the program fails to execute at all; not sure why this is? On the Segger forum this was listed as a possible 'fix' for debugging the M4 in DDR - seems to make my situation worse if I attempt to disable caching from UBOOT prior to loading and executing the image.
4) The same application built for OCRAM and TCM works just fine.