Hello.
I'm trying to run the Pingpong example application of rpmsg on my imx8dual.
I read https://github.com/toradex/device-trees/blob/toradex_5.4-2.1.x-imx/dts-arm64/imx8qxp-colibri.dtsi, so I think that I need to add the following into my device tree file
vdevbuffer: vdevbuffer {
compatible = "shared-dma-pool";
reg = <0 0x90400000 0 0x100000>;
no-map;
};
&rpmsg{
/*
* 64K for one rpmsg instance:
*/
vdev-nums = <2>;
reg = <0x0 0x90000000 0x0 0x20000>;
memory-region = <&vdevbuffer>;
status = "okay";
};
I noticed that the SDK_2.8.0_MIMX8UX5xxxDZ\boards\mekmimx8qx\multicore_examples\rpmsg_lite_pingpong_rtos\linux_remote\board.h file has these two macro definitions:
Solved! Go to Solution.
Hi xiaokaoy
one can look at NXP i.MX8QXP MEK example and port similar changes to colibri :
sect.2.8 Remote Processor Messaging i.MX Linux Reference Manual
Note, colibri board was developed by third party toradex and issues may posted on its forum
https://www.toradex.com/community/questions/18537/rpmsg-pingpong-example-with-boot2qt-stack.html
https://www.toradex.cn/community/questions/57284/verdin-m4-core-rpmsg-example-problem.html
rpmsg buffers usage:
Best regards
igor
Hi xiaokaoy
one can look at NXP i.MX8QXP MEK example and port similar changes to colibri :
sect.2.8 Remote Processor Messaging i.MX Linux Reference Manual
Note, colibri board was developed by third party toradex and issues may posted on its forum
https://www.toradex.com/community/questions/18537/rpmsg-pingpong-example-with-boot2qt-stack.html
https://www.toradex.cn/community/questions/57284/verdin-m4-core-rpmsg-example-problem.html
rpmsg buffers usage:
Best regards
igor
Thanks very much. That helps a lot.
"FreeRTOS: middleware/multicore/open-amp/porting/imx7d_m4/platform_info.c (RPMSG_NUM_BUFS, VRING0/1_BASE) and middleware/multicore/open-amp/rpmsg/rpmsg_core.h (RPMSG_BUFFER_SIZE)" on https://developer.toradex.com/knowledge-base/freertos-on-the-cortex-m4-of-a-colibri-imx7#Change_RPms...
is about imx7, though. I can't find RPMSG_NUM_BUFS or RPMSG_BUFFER_SIZE in SDK_2.8.0_MIMX8UX5xxxDZ.
one can look at folder ../middleware/multicore/rpmsg_lite/lib/rpmsg_lite,
rpmsg_default_config.h :
//! Number of the buffers, it must be power of two (2, 4, ...).
//! The default value is 2U.
#ifndef RL_BUFFER_COUNT
#define RL_BUFFER_COUNT (2U)
Best regards
igor
Thanks again.
In SDK_2.8.0_MIMX8UX5xxxDZ\boards\mekmimx8qx\multicore_examples\rpmsg_lite_pingpong_rtos\linux_remote\rpmsg_config.h
#define RL_BUFFER_COUNT (256U)
However, as I said, the Linux kernel source file drivers/rpmsg/imx_rpmsg.c defines
>However, as I said, the Linux kernel source file drivers/rpmsg/imx_rpmsg.c defines
colibri board was developed by third party toradex, nxp does not support
its board and software. Please post issue on toradex forum.
Best regards
igor
OK, thanks.
In SDK_2.8.0_MIMX8UX5xxxDZ\boards\mekmimx8qx\multicore_examples\rpmsg_lite_pingpong_rtos\linux_remote\board.h
#define VDEV0_VRING_BASE (0x90000000U)
#define VDEV1_VRING_BASE (0x90010000U)
Does this mean two rpmsg devices? That means the same as 'vdev-nums' ("The number of the remote virtual devices") in the device tree, doesn't? But what exactly does a remote virtual device mean? Does it depend on the number of M4 cores? The imx8dual I'm using has only one M4 core (not considering SCU/SECO). So can I use just one rpmsg device?
>..Does it depend on the number of M4 cores? The imx8dual I'm using has only one M4 core..
I believe yes.
Best regards
igor