If I load a .bin file in the flash of the M4 core from the multicore examples from SDK_2.16.000 together with the correct Device Tree Source, the example is running smoothly without problems. Now I want to use the example as a staring point for developing my own firmware and the problems starts:
Question 1: Is there a reason why the multicore examples do not have debug configuration such that I can go through the code for the M4 core stepwise or make breakpoints? Is it because it would cause too many issues with the linux kernel on the A7? Or are there other obstacles that I'm not aware of, since I debug is not implemented?
Question 2: Lets consider that manage to get the debug configuration right, what would be the right order of booting? The A7 core and linux get stuck in the boot process if the services related to RPMsg are not initiated and announce by the M4 core, so should I stop the A7 core in uboot until I can see that the M4 has booted and the release the A7 core by writing boot?
Last question: Why has NXP stopped included multi-core examples in the lastest SDK?
Regards Henrik
Solved! Go to Solution.
Hello @HenrikZ
I hope you are doing very well.
Q1.
The multi core examples in the SDK are mainly designed to run smoothly when launched from Linux using remoteproc. However, they don’t come with built-in support for debugging tools like breakpoints or step-by-step execution because pausing the M4 core can mess up the communication between the cores especially the RPMsg messaging system.
If that happens, the Linux side might freeze or fail to start certain services. So, to keep things stable during development, debugging features are left out by default.
Q2.
The Linux system on the A7 core expects the M4 core to already be up and running with (RPMsg) ready to go when Linux boots.
If the M4 isn’t ready in time, Linux might not be able to connect to it properly, and some services could fail to start. To avoid this, it’s best to start the M4 core first (using something like bootaux in U-Boot), and then launch Linux.
Q3.
I have not information to share about why NXP stopped included multi-core examples in the lastest SDK.
Best regards,
Salas.
Hello @HenrikZ
I hope you are doing very well.
Q1.
The multi core examples in the SDK are mainly designed to run smoothly when launched from Linux using remoteproc. However, they don’t come with built-in support for debugging tools like breakpoints or step-by-step execution because pausing the M4 core can mess up the communication between the cores especially the RPMsg messaging system.
If that happens, the Linux side might freeze or fail to start certain services. So, to keep things stable during development, debugging features are left out by default.
Q2.
The Linux system on the A7 core expects the M4 core to already be up and running with (RPMsg) ready to go when Linux boots.
If the M4 isn’t ready in time, Linux might not be able to connect to it properly, and some services could fail to start. To avoid this, it’s best to start the M4 core first (using something like bootaux in U-Boot), and then launch Linux.
Q3.
I have not information to share about why NXP stopped included multi-core examples in the lastest SDK.
Best regards,
Salas.