Hi Salas,
thanks for the reply.
Here is the part of the device tree:
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0 0x28000000>;
linux,cma-default;
};
rsc_table: rsc-table@1fff8000{
reg = <0 0x1fff8000 0 0x1000>;
no-map;
};
dsp_reserved: dsp@8e000000 {
reg = <0 0x8e000000 0 0x2000000>;
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>;
};
};
Compared to the example you linked, we don't have "m33_reserved" section, but it's also not listed in the linkerfile of M33 and not all dsp sections, but we also don't use that.
You said you modified the example of "power_mode_switch", which modifications did you do?
The M33 is connected to some SPI slaves, we made a srtm service, so we can access those from the Linux side. That means we extended the demo and added a 'srtm_spi_service', that works similar to the 'srtm_i2c_service' provided by NXP.
We already checked, that the bit flipping is not a problem of the SPI communication, this looks clean, M33 receives correct data from the slaves, but passing the correct data through rpmsg results in those bit errors on A35 side.
I'd like to add, that we don't see this behavior all the time, it only happens randomly every few commands.