Sharing Mass Data in i.MX8ULP

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

Sharing Mass Data in i.MX8ULP

Jump to solution
671 Views
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 Kudos
Reply
1 Solution
557 Views
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

View solution in original post

0 Kudos
Reply
5 Replies
646 Views
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 Kudos
Reply
639 Views
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 Kudos
Reply
633 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @hwyou0212 

The shared memory is DDR type, not internal memory.

Best Regards
Zhiming

0 Kudos
Reply
559 Views
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 Kudos
Reply
558 Views
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 Kudos
Reply