Content originally posted in LPCWare by bavarian on Thu Mar 10 06:14:57 MST 2016
Yes, the dual core setup has its specialities. Dual core software as well, but with the LPC4300 architecture NXP did not have the intention to compete with real dual core solutions.
Step by step, let's first try to solve the startup problem:
[list]
[*] Don't touch the M0APP reset configuration in the beginning, after a reset the M0APP is in reset, you don't need to do this with an instruction.
[*] Take care that the flash waitstate setting for bank #B is also set correctly
[*] Insert a "branch-to-itself" instruction in the assembler startup code of the M0APP or alternatively a while(1) loop as first instruction in your M0APP C code. This would mean that after a correct start of the M0APP the core hangs up there and you can jump on it with a debugger.
[*] Compile and download your code as usual and perform a hardware reset. Then configure the debugger not to Load Application at Startup, to connect without running to main, without a reset and select the second core in the list. (see picture).
[*] If you then start the debugger, you should catch the M0APP hanging in this loop. Then you can go on from there and step through until you hit the instzrcution which is causing the problem.
[*] As mentioned, take care that your memory areas for the M4 and the M0 do not overlap, even if I don't expect that you have a problem here. If the M0 would do something on memory areas of the M4, you would see a crash in the M4 software.
[/list]
There are quite some projects out there which use the 2 cores, using different software setups. If you are not successful using the hints above I could recommend some of them to you, bare metal stuff, LPCOpen based etc.
The mutex: yes, that's really missing in the LPC4300 in hardware. In a later chip, the LPC54114, we have implemented that. But this chip is intended for another class of applications, without ethernet etc.
Regards,
NXP Support Team.