Hello,
I am working on communication between the MPU and MCU of our imx8mp custom board and we want to make the MCU firmware bear metal.
From the RPMsg-Lite User's Guide guide, it says that it si possible to only use the rpmsg_lite.c sub component to communicate.
I want to know if this is true?
After I calll my rpmsg_lite_remote_init() and rpmsg_lite_create_ept() functions, for initialisation, the core M7 does boots and link is set up. But when I include the rpmsg_lite_send() function to my code, the cortex m7 does not boot again. Is this normal? I am not using the message queue as this is dependant on the freeRTOS.
Thanks
Solved! Go to Solution.
hi,
just to let you know that I have finally solved this problem. The baremetal version works well on the rpmsg.
Thanks
hi,
just to let you know that I have finally solved this problem. The baremetal version works well on the rpmsg.
Thanks
hi, @hector_delgado
Good day.
I would like to ask if you have been able to go through the line of code to see why it does not work?
Thanks.
Hi @ababatola ,
I hope you are doing well!
I believe the bare metal environment is implemented in rpmsg_env_bm.c
I also recommend checking the following thread on GitHub RPMsg-Lite Bare Metal Example · Issue #45 · nxp-mcuxpresso/rpmsg-lite · GitHub
Let me know if you have any more questions.
Best regards,
Hector.
Thanks for the reply.
I have gone through the links you gave me.
I have implemented most of the steps and the ones I have not implemented, I have further implemented them. I still have issues with the bare metal operation of the code.
When I include the rpmsg_ns_announce function, the image does not boot when I try to boot it .
The Core M7 image runs till the
rpmsg_ns_bind(hw_src_rpmsg::my_rpmsg, app_nameservice_isr_cb, ((void *)&data)); code.
That means tha when I start my linux image, the link is created. However it does not work with the pinpong linux driver.
However, when I add the
rpmsg_ns_announce(hw_src_rpmsg::my_rpmsg, hw_src_rpmsg::my_ept, RPMSG_LITE_NS_ANNOUNCE_STRING, (uint32_t)RL_NS_CREATE);
The core M7 image does not even start and I do not get any output at the serial terminal. This is strange and I am not sure why.
I dug deeper abit and found out that the problem is at this point
rpmsg_ns_announce --> rpmsg_lite_send ----> rpmsg_lite_format_message
/* Get rpmsg buffer for sending message. */
buffer = rpmsg_lite_dev->vq_ops->vq_tx_alloc(rpmsg_lite_dev->tvq, &buff_len, &idx);
this code hangs the system and does not allow the M7 image to boot.
Must the virtqueue layer also be "somehow" initialised?
The code works fine as a freeRTOS code before conversion to baremetal.
What can be responsible for this and how can I go forward beyond this point.
Thanks.
Hi,
I would like to know if you have been able to look at my last message.
Thanks