ModusToolbox Safety Test Library
Loading...
Searching...
No Matches
PPCA IPC (PPCA IPC STL module)

General Description

This module tests the PPCA IPC block on PSOC Control C3 M8 in loopback mode from the Main CM33.

No PPCA CPU firmware is required.

 Procedure: <br>
 1) Acquire the PPCA IPC channel. <br>
 2) Write a 64-bit message. <br>
 3) Send an acquire-notify event to a specified PPCA IPC interrupt line. <br>
 4) Read the written data back in the ISR. <br>
 5) Release the PPCA IPC channel.

More Information

 For PSOC Control C3 M8, the PPCA IPC block exposes:
 Channels   : 0 - 3  (CY_PPCA_IPC_CHANNELS = 4)
 Interrupts : 0 - 3  (ppca_ipc_0_IRQn ... ppca_ipc_3_IRQn)

 The test exercises all 16 (channel * interrupt-structure) pairs.
 On failure, use \ref SelfTest_IPC_PPCA_GetFailChannel(),
 \ref SelfTest_IPC_PPCA_GetFailIntr(), and
 \ref SelfTest_IPC_PPCA_GetFailSubtest() to identify the failing pair
 and sub-test.

Sub-test Reference

Sub-test Feature tested Failure condition
1 Acquire on free channel LockAcquire() did not return CY_IPC_DRV_SUCCESS
2 Release - ACQUIRED bit clears LockRelease() failed or ACQUIRED bit remained set
3 Lock-status ACQUIRED attribute IsLockAcquired() returned false immediately after acquire
4 DATA0/DATA1 write/read integrity Read-back of 0xDEADBEEF/0xCAFEBABE did not match write
5 DATA0/DATA1 independence 0x55555555/0xAAAAAAAA pattern shows cross-register leak
6 Notify-to-self loopback ISR timed out or did not observe the correct channel bit
7 INTR clear-on-write-1 Notify bit still set in INTR after ClearInterrupt() in ISR
8 Interrupt masking Raw INTR wrong, INTR_MASKED != 0 at mask=0, ISR fired masked
9 INTR_MASKED algebraic consistency INTR_MASKED != INTR & INTR_MASK (two mask states checked)
10 INTR_SET software-forced interrupt ISR did not fire after SetInterrupt() + unmask
11 Release-event self-loopback ISR timed out or did not observe the release bit
12 Silent release - no interrupt ISR fired on zero-mask release, or ACQUIRED did not clear
13 DATA group: lock release LockRelease() returned error after DATA sub-tests 4-5
14 NOTIFY group: lock release LockRelease() returned error after NOTIFY sub-tests 6-7

API Reference

 Functions