Skip to main content
Associate
June 12, 2026
Solved

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

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 !

Erwan SZYMANSKI
Erwan SZYMANSKIBest answer
ST Technical Moderator
June 23, 2026

Hello ​@creekvalley ,
Sorry for the delay, I was off last week.

Thank you for your IAC log error. As you see, the IAC ID is 137, meaning DDR-SDRAM in the reference manual (Table of Indexes for RIF-aware peripherals). It does mean that your M33 firmware accesses to a memory area in DDR that he is not allowed to. You need to check that your reserved memory in OP-TEE and the Linux kernel are well aligned, more particularly what concerns the RISAF4 in OP-TEE. If you are not aligned, maybe some segment of your M33 firmware are mapped at the wrong memory addresses. 

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.

6 replies

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.