This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMDS64EVM: Increasing optimization options makes ipc_rpmsg unstable

Part Number: TMDS64EVM

Tool/software:


Hello TI support team.

I have a question about ipc_rpmsg on AM64.
The SDK is mcu_plus_sdk_am64x_09_01_00_41.
The example ipc_rpmsg_echo_am64x-evm_a53ss0-0_nortos_gcc-aarch64 is used.

However, I am building the CA53 project with armclang to create the firmware.
armclang is version 6.6.

With the optimization option -O0, inter-core communication between CA53 and CR5 works correctly,
but when the option is changed to -O3, it sometimes stops working correctly.
It doesn't come out from RPMessage_recv. It seems that the semaphore is not posted and is waiting forever.

What modifications should I make to ipc_rpmsg.c etc. to make Ipc rpmsg work properly even when the optimization option is set to -O3?
I tried marking a variable (gIpcRpmsgCtrl) in ipc_rpmsg.c as volatile, but that didn't improve the situation.
I would like to use the optimization option -O3, so I would appreciate some advice on which parts of the source code I should change.

Please let me know if there are any parts of the ipc_rpmsg code that may not work due to optimizations.

Best regards,
Kiyomasa Imaizumi.