For each feature such as the EBC, SEC, Masks, and PCTrace an ownership scheme is
implemented by specifying if the debugger or application owns the feature. By
default the Owner register belongs to no owner and ZONE register is set to
ZONE0.
Scenario 1 Basic use: Debugger Ownership
- Write to OWNER register of 0x01 is permitted since existing value was
0x00
- Writes to OWNER register is successful and ZONE register remains at
0
- Read back and check if OWNER register is 0x01
- Debugger can configure and start using the block
- If application accidentally writes to OWNER register, accesses are
blocked during this time
- Debugger completes work and a write to the OWNER register of 0x00 releases
this block
- Writes are successful and OWNER register is 0x00
- ZONE register is 0x0000
Scenario 2: Application Ownership
- Write to OWNER register of
0x2 is permitted since existing value was 0x00
- Writes to OWNER
register is successful and ZONE register is loaded with ZONE ID from
CPU
- Write to this
register emerged from ZONE2, so ZONE register gets loaded with
0x2
- Read back and check if OWNER
register is 0x2
- Application code from ZONE2 can configure and start using the block
- If application code from another ZONE tries to write to OWNER
register, the write is blocked
- If debugger tries to write to OWNER register, the write is
blocked
- Application code from ZONE2 completes work and writes OWNER register
to 0x00
- Writes are successful and OWNER register becomes 0x00
These two scenarios are the flow of the feature level ownership. For application code
to identify whether the application has ownership a simple read to the Semaphore
register can indicate the status. Debugger has no notion of ZONES, only CPU
does.