1667513_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1667513_zh-CN

1667513_zh-CN

IMX8MP 远程核心共享内存驱动程序

日安
我正在尝试使用 DDR 缓冲区实现内核间的数据交换,以处理大量数据。我在 IMX8MP 上使用的是 Verdin devkit。内核版本 5.15我已经使用"/dev/rpmsg_ctrl0 "通过 RPMSG 实现了通信。

现在,我想从 CMA 空间分配 DDR 中的内存,并通过 RPMSG 消息将地址发送给 CortexM。为此,我使用了恩智浦的 "低功耗音频应用 - AN12195SW "示例。我从补丁中提取了 "rmtcore_shm "驱动程序代码,并通过 devshell 在内核环境中进行了编译。

然后,我在系统中安装了模块 "rmtcore-shm.ko"。

root@verdin-imx8mp-14762892:~# insmod ./rmtcore-shm.ko
[ 235.945223] RMTCORE module started!
root@verdin-imx8mp-14762892:~#

但是新设备 “/dev/rmtcore_shm” 没有出现在系统中。而当我试图打开它时,却出现了错误:

rmtcore_shm_fd = open(RMTCORE_SHM_DEV, O_RDWR);
*******************
"Unable to open device /dev/rmtcore_shm"
*******************

我可能需要更改设备文件。现在,我的 RPMSG 覆盖图是这样的:

/dts-v1/;
/plugin/;

#include 

/ {
	compatible = "toradex,verdin-imx8mp";

	rmtcore_shm {
		compatible = "fsl,rmtcore-shm";
		status = "ok";
	};
};

&{/} {
	imx8mp-cm7 {
		compatible = "fsl,imx8mp-cm7";
		clocks = <&clk IMX8MP_CLK_M7_DIV>;
		mbox-names = "tx", "rx", "rxdb";
		mboxes = <μ 0 1
			  μ 1 1
			  μ 3 1>;
		memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>, <&m7_reserved>;
		rsc-da = <0x55000000>;
		syscon = <&src>;
		fsl,startup-delay-ms = <500>;
	};
};

&i2c3 {
	status = "disabled";
};

&pwm4 {
	status = "disabled";
};

&resmem {
	#address-cells = <2>;
	#size-cells = <2>;

	m7_reserved: m7@0x80000000 {
		no-map;
		reg = <0 0x80000000 0 0x1000000>;
	};

	vdev0vring0: vdev0vring0@55000000 {
		no-map;
		reg = <0 0x55000000 0 0x8000>;
	};

	vdev0vring1: vdev0vring1@55008000 {
		no-map;
		reg = <0 0x55008000 0 0x8000>;
	};

	vdevbuffer: vdevbuffer@55400000 {
		compatible = "shared-dma-pool";
		no-map;
		reg = <0 0x55400000 0 0x100000>;
	};

	rsc_table: rsc_table@550ff000 {
		no-map;
		reg = <0 0x550ff000 0 0x1000>;
	};
};

&sai3 {
	status = "disabled";
};

&sdma3 {
	status = "disabled";
};

μ {
	status = "okay";
};

&uart4 {
	status = "disabled";
};

请告诉我需要做哪些更改,才能使 /dev/rmtcore_shm 出现在系统中,并能访问 DDR 中的内存分配?如果有人已经遇到过这种解决方案和示例。

感谢您的帮助。

Re: IMX8MP Remote core share memory driver

你好@Stan88

你查清楚了吗?

谢谢!

安迪

Re: IMX8MP Remote core share memory driver

是的,我也试过了 - 我在内核中编译了它,在内核菜单配置中看到了它 -"Remote Core Share Memory Driver" ,并激活了它。编译并部署了内核,构建了镜像并将其安装在板上。

lsmod无法显示该驱动程序,因为它不是动态加载的,而是内置模块。

dmseg也不包含有关该驱动程序的任何信息。尝试卸载模块时会出现错误,提示系统中存在此类模块:

root@verdin-imx8mp-14762892:~# modprobe -r rmtcore-shm
modprobe: FATAL: Module rmtcore_shm is builtin.
Re: IMX8MP Remote core share memory driver

你好

如果你编译模块,你必须编译内核本身才能使其正常运行,并在 dmseg 输出中查看。

此致

Re: IMX8MP Remote core share memory driver您需要:

rmtcore_shm {
compatible ="fsl,rmtcore-shm";
status ="ok";
};

如果有其他人想要 FRDM_IMX8MPLUS 的这个版本,请在这里查看:

https://github.com/AndrewCapon/rmtcore-shm/tree/main
Tags (1)
No ratings
Version history
Last update:
‎02-04-2026 03:22 AM
Updated by: