I'm working with an iMX8MPlus.
I've built/ran the rpmsg_lite_str_echo_rtos example and managed to communicate with it from Linux; however, I don't want FreeRTOS in the way. Are any examples for RPMSG available that don't use FreeRTOS?
Solved! Go to Solution.
Hello,
No, we do not have examples for RPMSG without FreeRTOS.
Best regards,
Aldo.
The rpmsg-lite has a bm implementation, so you could build your application and point it to use the bm instead of the freertos. The problem is that the rpmsg-lite relies on the env_*_queue api which is implemented only for freertos. That said, you could use the same example but change your CMakeLists.txt to include the rpmsg-lite bm environment. In my case, I added two .cmake files
middleware/multicore/middleware_multicore_rpmsg_lite_bm_MIMX8ML8.cmake
middleware/multicore/middleware_multicore_rpmsg_lite_imx8mp_m7_bm_MIMX8ML8.cmake
to build the bm environment. Then you also need to change your project's config.cmake, remove the rpmsg_lite_freertos config and add the bm:
set(CONFIG_USE_middleware_multicore_rpmsg_lite_bm_MIMX8ML8 true)
Lastly, the flags.cmake contains the RTOS flag that should be removed:
-DSDK_OS_FREE_RTOS \
With some fixes here and there you will be able to compile, but then it will lack the queue implementation which I pointed before. Here you can find more info: https://community.toradex.com/t/bare-metal-rpmsg-on-verdin/18035/3
Hi @btessele,
Thanks for responding! After I got the "we don't support that" response from NXP folk I did essentially what you suggested... I rebuilt with the bm_*** file, finding that there was no queue API, so I just wrote a simple circular buffer in C and inserted that into the bm_*** file.
Not sure why NXP didn't provide that, but it was simple enough to add..
Regards,
Ed
Hello,
No, we do not have examples for RPMSG without FreeRTOS.
Best regards,
Aldo.