Skip to main content
Associate
June 12, 2026
Question

IAC Error When Assigning SAI3 to M33 Domain on STM32MP257F-DK (FreeRTOS + Remote Boot from A35 Linux)

  • June 12, 2026
  • 1 reply
  • 21 views

HI How are you!

I am using the SAI interface on the STM32MP257F-DK to connect directly to an external ADC and acquire data in frame mode. I have assigned SAI3 to the M33 domain and run the firmware under FreeRTOS. Despite following all resource isolation configurations specified in the reference manual and conducting a full week of detailed debugging and security settings, launching the M33 firmware remotely from the A35 Linux domain always results in an IAC error. Is it not possible to assign the SAI peripheral to the M33 core?
  thanks !

1 reply

Erwan SZYMANSKI
ST Technical Moderator
June 12, 2026

Hello ​@creekvalley,
I think it will be easier for community to help you debugging this issue if you share your IAC log. Maybe you could also share your OP-TEE device trees that configure the RIF.

Kind regards,
Erwan.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
Associate
June 12, 2026

ok ,First, let me clarify: I’m using SAI4 on the STM32MP257F-DK Discovery Kit. According to the board schematic, SAI4 is routed to the GPIO expansion connector, where it connects to my external ADC.

My goal is to configure SAI4 as a Slave, with my external ADC acting as the Master. Using Frame mode, I want the M33 core to use DMA to transfer the ADC data into a large shared memory buffer accessible by the A35 core. The A35 will then handle all subsequent processing of the ADC data.

OPTEE  TFA device trees   

&rifsc {

st,protreg = <


 

1.RIFPROT(STM32MP25_RIFSC_SAI4_ID, EMPTY_SEMWL, RIF_LOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* SAI4 划分给 M33 */
2.

2.RIFPROT(RIF_EXTI1_RESOURCE(59), RIF_UNUSED, RIF_UNLOCK, RIF_NSEC, RIF_NPRIV, RIF_CID1, RIF_SEM_DIS, RIF_CFEN) /* Feature = IPCC1 non secure interrupt CPU1 */

RIFPROT(RIF_EXTI1_RESOURCE(60), RIF_UNUSED, RIF_UNLOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* Feature = IPCC1 non secure interrupt CPU2 */

3.

&gpiod {

st,protreg = <

RIFPROT(RIF_IOPORT_PIN(0), EMPTY_SEMWL, RIF_LOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* SAI4.FSA->PD0  M33 */

RIFPROT(RIF_IOPORT_PIN(1), EMPTY_SEMWL, RIF_LOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* SAI4.SDA->PD1  M33 */

RIFPROT(RIF_IOPORT_PIN(2), EMPTY_SEMWL, RIF_LOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* SAI4.SCLKA->PD2  M33 */

3.

 

&gpioz {

st,protreg = <

RIFPROT(RIF_IOPORT_PIN(0), RIF_UNUSED, RIF_LOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* PZ0 (ADC Start) M33 */

RIFPROT(RIF_IOPORT_PIN(1), RIF_UNUSED, RIF_LOCK, RIF_NSEC, RIF_NPRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN) /* PZ1 (ADC Reset) M33 */

 

 

 

If you could provide me with an .ioc project file based on the default peripheral configuration of the STM32MP257F-DK Discovery Kit, in which SAI4 is properly assigned to the M33 core, including correct IPC settings between the M33 and A35 cores, I would greatly appreciate it.

Thank you very much, and I look forward to your reply.

Erwan SZYMANSKI
ST Technical Moderator
June 12, 2026

@creekvalley,
Thank you for having completed information. Could you just also provide the IAC log you see in your Linux console (I guess) ?

Kind regards,
Erwan.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.