Other Parts Discussed in Thread: MSPWARE, MSP430FR5994
Since I've upgraded to CCS 10.4, I've had a few cases where resuming from a breakpoint doesn't appear to do anything, until it is resumed a second time.
In all cases, the breakpoint has been placed on a function call (or at least that is the only place I've seen it to date), but it is definitely not on all function calls.
I'm still trying to understand this, but I'll try and explain what I am seeing, with references from a specific example.
- The code breaks at a breakpoint, and the top of the debug stack shows MLX_Test.c:207 0x004710
- Hitting resume at this point appears to do nothing, but examining the debug stack shows MLX_Test.c:207 0x00471C, ie, a few bytes on, but still the same source line
- A peek at the disassembly around the call shows;
00470e: 2019 JNE (0x4742)
207 status = MLX_Read (&ctx->mlx_context,...
004710: 013C 0016 MOVA 0x0016(SP),R12
004714: 00AC 000A ADDA #0x0000a,R12
208 &ctx->read_data,
004718: 013E 0016 MOVA 0x0016(SP),R14
207 status = MLX_Read (&ctx->mlx_context,...
00471c: 1800 41D1 0016 0004 MOVX.A 0x00016(SP),0x00004(SP)
004724: 1800 40F1 462A 0000 MOVX.A #0x0462a,0x00000(SP)
I won't pretend to understand what is happening here, but it seems to have associated the 207 source line to two places in the memory listing (0x4710, an 0x471C), and is managing to break on both of them.
This is using the GCC toolchain on CCS 10.4, with an MSP430 target. The code has come straight from a CCS 9 environment, and have no recollection of ever seeing this previously.
Any clues on what is happening here?
Andrew