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.
Solved! Go to Solution.
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
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
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
Hi @hwyou0212
The shared memory is DDR type, not internal memory.
Best Regards
Zhiming
Hi, Zhiming,
Could I use a DDR Memory of APD Domain(A35) setting up as Shared Memory region?
BR,
Hyunwoo You
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