-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Medium
-
Code Composer Studio Theia
-
CCSNXT-3387
-
-
-
CCS_21.0.0
-
None
Problem Description
In CCS Theia 20.4.1 and 20.5.0.28, the AddCIOBreakpointAfterLoad setting from launch.json is not applied at debug session startup. Even when CIO is explicitly disabled in the project's Debug settings (which correctly writes <curValue>0</curValue> to launch.json), the debugger starts each session with CIO enabled, consuming 1–2 of the C28x CPU's two available hardware analysis units (AU1/AU2).
This causes:
- Loss of hardware breakpoints — users debugging from flash are left with 0 or 1 usable breakpoints
- Single-step failures due to exhausted hardware breakpoint resources
- Inconsistent behavior: the .out file and launch.json are correct, but the debugger ignores the configuration
Confirmed by customer hardware testing: runtime core Properties → Debug → Program/Memory Load Options shows "Enable CIO function use" checked even when launch.json contains AddCIOBreakpointAfterLoad=0.
Steps to Reproduce
- Create a project targeting F2800157 (or any C28x device) executing from flash
- In project Debug settings, disable "Enable CIO function use (requires setting a breakpoint)"
- Verify launch.json contains <curValue>0</curValue> for AddCIOBreakpointAfterLoad — it will be correct
- Start a debug session
- Right-click the core in the Debug view → Properties → Debug → Program/Memory Load Options
- Observe that "Enable CIO function use" is checked despite being disabled in project settings
- Attempt to set two hardware breakpoints — at most one will be available
Observed Behavior
- launch.json correctly reflects the disabled CIO setting
- Debugger ignores launch.json at session startup and enables CIO unconditionally
- Runtime core properties show CIO as enabled
- Maximum one hardware breakpoint available (instead of two)
- Single-stepping frequently fails with "no breakpoint available" error
Expected Behavior
The AddCIOBreakpointAfterLoad=0 setting in launch.json should be read and applied at debug session startup. When CIO is disabled:
- No CIO breakpoints should be allocated at C$$IO$$ or C$$EXIT
- Both hardware analysis units (AU1 and AU2) should be available for user breakpoints
- Runtime core properties should reflect the configured state
Workaround
Set a breakpoint at main(), then after the debugger halts:
- Right-click the core in the Debug view → Properties → Debug → Program/Memory Load Options
- Uncheck "Enable CIO function use" and press Save
This correctly frees both hardware breakpoints for the remainder of the session but requires a manual step on every debug run.
Versions Affected
- CCS Theia 20.4.1 — reproduced
- CCS Theia 20.5.0.28 — reproduced
- Regression introduction point (earlier versions) not yet confirmed
Device and Tool Information
- Part: F2800157 (C28x)
- Debug probe: Texas Instruments XDS110 USB Debug Probe
- Execution context: Flash (hardware breakpoints required; software breakpoints not available in flash)
Additional Context
- Customer has offered to share launch.json privately (contact via E2E thread or fleenor@ti.com)
- C28x CPU provides exactly two hardware analysis units; CIO can consume 1–2 of these when enabled
- A similar regression was previously fixed in CCS v11.1 (ERAD module ownership seized by debugger); this may follow the same pattern