Part Number: F29H850TU
Hello,
I am using F29H850TU on the SOM-EVM in a multi-CPU project (CPU1 + CPU3).
The CPU-to-peripheral configuration appears to be correct: I can configure PWM and GPIO independently for CPU1 and CPU3, and I can also control them via the debugger/watch window (e.g., changing PWM period, toggling GPIO).
However, I am seeing an unusual runtime behavior on CPU3:
When I call driverlib functions such as:
EPWM_setTimeBasePeriod(EPWM1XLINK_BASE, period_cnt2);
GPIO_writePin(myGPIO0_test_CPU3, 1);
from CPU3 main.c (inside the main while(1) loop), the software appears to “stick” and the main loop no longer progresses (e.g., a dummy variable increment inside while(1) stops updating).
Observations
- I have an RTDMA interrupt ISR configured. The ISR runs as intended.
- When the issue occurs and I halt CPU3, the program counter is always inside the RTDMA ISR (not in NMI).
- After halting, if I use Step Over, CPU3 is able to execute the driverlib call and proceed.
- If I then press Continue/Resume, the issue returns: CPU3 appears stuck again and the code in
while(1)does not execute.
What I tried
- Compiler optimization is disabled for both CPUs.
- I tested the
led_ex1_blinky_cpu1_cpu3_multiexample. That example runs fine, even after I add additional code. - I compared my project settings with the example but could not find the root cause so far.
Could you please advise what might cause CPU3 to stop making progress in the main loop only when calling certain driverlib APIs (EPWM/GPIO), while the RTDMA ISR continues to run? I suspect I am missing a configuration/setting (ownership, protection, interrupt/ack, etc.), but I’m currently stuck.
Best regards,
Gökhan