cancel
Showing results for 
Search instead for 
Did you mean: 

Load Cortex-M4 firmware from u-boot and use RPMesg interface synchronization?

SScar.2
Senior

Hi there, 

I'm trying to start my M4 fw from u-boot ( https://wiki.stmicroelectronics.cn/stm32mpu/index.php?title=How_to_start_the_coprocessor_from_the_bootloader&oldid=76509#Synchronizing_the_remote_firmware_with_Linux ). 

We finally managed to load the firmware from u-boot and it runs properly (I can see peripherals working at boot time); btw the guide is not correct for the bootcmd section, let's talk about it in a separate thread! 

Now, I must integrate the RPMSG interface, and, in the guide ( https://wiki.stmicroelectronics.cn/stm32mpu/wiki/How_to_start_the_coprocessor_from_the_bootloader#STM32Cube ), there's a section describing a Synchronization between u-boot and Linux. It cites that, for non-blocking use cases, IPCC interrupts can be used. But I can't find ANY reference to that in any guide or forum. 

Can please somebody explain to me how to make this synchronization work properly? I understand that I have to implement M4 fw in a way that the MX_OPENAMP_Init()  function must be called only when the Linux kernel starts and not before, to achieve a non-blocking execution of the M4 fw. Which interrupt should I catch? Is there any example of that? 

Thank you so much!! 

Peace

 

NOTE: I have a custom board based on STM32MP153CAC. Openstlinux version: openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15 

1 ACCEPTED SOLUTION

Accepted Solutions
SScar.2
Senior

SOLVED HERE: 

https://community.st.com/t5/stm32-mpus-other-tools/synchronizing-earyl-booted-m4-fw-with-linux/m-p/714210/highlight/true#M311 

 

IMPORTANT NOTE: RPMSG wasn't working because there were issues in the resource table initialization from uboot (remoteproc interface from Linux works always fine).  

View solution in original post

1 REPLY 1
SScar.2
Senior

SOLVED HERE: 

https://community.st.com/t5/stm32-mpus-other-tools/synchronizing-earyl-booted-m4-fw-with-linux/m-p/714210/highlight/true#M311 

 

IMPORTANT NOTE: RPMSG wasn't working because there were issues in the resource table initialization from uboot (remoteproc interface from Linux works always fine).