Sharing Mass Data in i.MX8ULP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Sharing Mass Data in i.MX8ULP

跳至解决方案
539 次查看
hwyou0212
Contributor II

I am developing a device based on i.MX8ULP. I would like to share large amounts of data, such as image data, with the A35 and M33. Please, let me know if there is a way to share data between two processors.

0 项奖励
回复
1 解答
425 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi

Yes, please refer scripts arm64/freescale/imx8ulp-evk.dts

reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		linux,cma {
			compatible = "shared-dma-pool";
			reusable;
			size = <0 0x28000000>;
			linux,cma-default;
		};

		m33_reserved: noncacheable-section@a8600000 {
			reg = <0 0xa8600000 0 0x1000000>;
			no-map;
		};

		rsc_table: rsc-table@1fff8000{
			reg = <0 0x1fff8000 0 0x1000>;
			no-map;
		};

		dsp_reserved: dsp_reserved@8e000000 {
			reg = <0 0x8e000000 0 0x1000000>;
			no-map;
		};
		dsp_reserved_heap: dsp_reserved_heap@8f000000 {
			reg = <0 0x8f000000 0 0xef0000>;
			no-map;
		};
		dsp_vdev0vring0: vdev0vring0@8fef0000 {
			reg = <0 0x8fef0000 0 0x8000>;
			no-map;
		};
		dsp_vdev0vring1: vdev0vring1@8fef8000 {
			reg = <0 0x8fef8000 0 0x8000>;
			no-map;
		};
		dsp_vdev0buffer: vdev0buffer@8ff00000 {
			compatible = "shared-dma-pool";
			reg = <0 0x8ff00000 0 0x100000>;
			no-map;
		};

		ele_reserved: ele-reserved@90000000 {
			compatible = "shared-dma-pool";
			reg = <0 0x90000000 0 0x100000>;
			no-map;
		};

		vdev0vring0: vdev0vring0@aff00000 {
			reg = <0 0xaff00000 0 0x8000>;
			no-map;
		};

		vdev0vring1: vdev0vring1@aff08000 {
			reg = <0 0xaff08000 0 0x8000>;
			no-map;
		};

		vdev1vring0: vdev1vring0@aff10000 {
			reg = <0 0xaff10000 0 0x8000>;
			no-map;
		};

		vdev1vring1: vdev1vring1@aff18000 {
			reg = <0 0xaff18000 0 0x8000>;
			no-map;
		};

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

		audio_reserved: audio@a8500000 {
			compatible = "shared-dma-pool";
			no-map;
			reg = <0 0xa8500000 0 0x100000>;
		};
	};



Best Regards
Zhiming

在原帖中查看解决方案

0 项奖励
回复
5 回复数
514 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi

You can use rpmsg feature to share your data, M core put data into shared memory and then notify A core to get data.

Please refer multicore_examples/rpmsg_lite_str_echo_rtos demo in SDK.

Best Regards
Zhiming

0 项奖励
回复
507 次查看
hwyou0212
Contributor II

Hi,

Thank you for your quick reply.

You mentioned that the internal memory(768KB) of RTD is able to use as shared memory.

Also, I understood that internal memory(768KB) of RTD is able to use to execute codes of RTD after booting up.

Could the internal memory of RTD use simultaneously after dividing to two region as shared memory and genera RAM for code?

 

BR,

Hyunwoo You

0 项奖励
回复
501 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @hwyou0212 

The shared memory is DDR type, not internal memory.

Best Regards
Zhiming

0 项奖励
回复
427 次查看
hwyou0212
Contributor II

Hi, Zhiming,

Could I use a DDR Memory of APD Domain(A35) setting up as Shared Memory region?

BR,

Hyunwoo You

 

 

0 项奖励
回复
426 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi

Yes, please refer scripts arm64/freescale/imx8ulp-evk.dts

reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		linux,cma {
			compatible = "shared-dma-pool";
			reusable;
			size = <0 0x28000000>;
			linux,cma-default;
		};

		m33_reserved: noncacheable-section@a8600000 {
			reg = <0 0xa8600000 0 0x1000000>;
			no-map;
		};

		rsc_table: rsc-table@1fff8000{
			reg = <0 0x1fff8000 0 0x1000>;
			no-map;
		};

		dsp_reserved: dsp_reserved@8e000000 {
			reg = <0 0x8e000000 0 0x1000000>;
			no-map;
		};
		dsp_reserved_heap: dsp_reserved_heap@8f000000 {
			reg = <0 0x8f000000 0 0xef0000>;
			no-map;
		};
		dsp_vdev0vring0: vdev0vring0@8fef0000 {
			reg = <0 0x8fef0000 0 0x8000>;
			no-map;
		};
		dsp_vdev0vring1: vdev0vring1@8fef8000 {
			reg = <0 0x8fef8000 0 0x8000>;
			no-map;
		};
		dsp_vdev0buffer: vdev0buffer@8ff00000 {
			compatible = "shared-dma-pool";
			reg = <0 0x8ff00000 0 0x100000>;
			no-map;
		};

		ele_reserved: ele-reserved@90000000 {
			compatible = "shared-dma-pool";
			reg = <0 0x90000000 0 0x100000>;
			no-map;
		};

		vdev0vring0: vdev0vring0@aff00000 {
			reg = <0 0xaff00000 0 0x8000>;
			no-map;
		};

		vdev0vring1: vdev0vring1@aff08000 {
			reg = <0 0xaff08000 0 0x8000>;
			no-map;
		};

		vdev1vring0: vdev1vring0@aff10000 {
			reg = <0 0xaff10000 0 0x8000>;
			no-map;
		};

		vdev1vring1: vdev1vring1@aff18000 {
			reg = <0 0xaff18000 0 0x8000>;
			no-map;
		};

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

		audio_reserved: audio@a8500000 {
			compatible = "shared-dma-pool";
			no-map;
			reg = <0 0xa8500000 0 0x100000>;
		};
	};



Best Regards
Zhiming

0 项奖励
回复