Hello Everyone,
I am working on migrating an adsp-sc573 project from previous buildroot based build system to a yocto based build system as mentioned in this documentation: Getting Started with ADSP‐SC573 (Linux for ADSP‐SC5xx Processors 3.1.2) · analogdevicesinc/lnxdsp-adi-meta Wiki
I have the kernel and most applications and services up and running, but there is a change in the sharc firmware loading mechanism as I can see from notable changes section here: Yocto Linux for ADSP-SC5xx Processors - Release 1.0.0: Release Notes [Analog Devices Wiki], that the corectrl utility has been replaced with remoteproc utility. This means that I am not able to use the earlier loadSharc-sc573 application to load the firmwares in SHARC (EE-399).
So, I tried using the remoteproc utility in the way as described here: Remoteproc Drivers [Analog Devices Wiki], i.e.
1. add the firmware to /lib/firmware/, with name matching the .dts
2. echo start > /sys/class/remoteproc/remoteproc0/state
I see that once this command is given, I get the following error:
remoteproc remoteproc0: powering up core1-rproc
remoteproc remoteproc0: Booting fw image SHARC_Core1.ldr, size 152020
adi-dma 3109b000.dma: DMA error on channel 43, stat = 0x3b400
I suspected that this error might be coming from some memory mismatch between my SHARC images and the region that is defined in the remoteproc dts entry, which defines the same L2 region for both the cores:
adi,l1-da = <0x240000 0x3a0000>;
adi,l2-da = <0x20080000 0x200C0000>;
And the legacy image that I am working with expects different banks for the two, i.e:
Core1: <0x200C0000 0x20100000>
Core2: <0x20080000 0x200C0000>
But even on changing the dts entries to match that did not work.
Also, there was an entry for the resource table, which is not present in my legacy image, but from the kernel source it looks like it is only required for rpmsg, which my legacy image doesn't seem to use.
So, I had basically two questions:
1. Can I go back to using the loadSharc_sc573 with the upgraded kernel, simply by adding a device tree node?
2. How can I figure out and resolve the issue with remoteproc as stated above?