AnsweredAssumed Answered

Bare-Bones Tri-Core C++ Project (For ADSP-SC589) Built Using A Makefile

Question asked by petrveprek on Jan 26, 2017
Latest reply on Feb 14, 2017 by Kader.M

Hi,

 

I am building a trivial project for EzKit ADSP-SC589 using CCES 2.1.0 toolchain (gcc & cc21k).  The project is in C++.  I do not want to use Eclipse IDE to build the project so I am building it using a makefile.  I have a single source file (C++) with main() and all it does is puts("Aha").  I build three executables from this source file: one for ARM core, one for SHARC+ core in 8-bit mode, and one for SHARC+ core in 32-bit mode.

I can build the three executables and use custom debug configuration in the IDE to load them onto the EzBoard.  I can then run main of the ARM core.  It prints the string and stops.  So far so good.

 

Next step, I want to start both SHARC+ cores. So for the main of ARM core I add the following code (i.e. it is #ifdef CORE0):

    #include <sys/adi_core.h>

and

    adi_core_enable(ADI_CORE_SHARC0);
    adi_core_enable(ADI_CORE_SHARC1);

Again, I build the three executables.  I then run main of the ARM core.  It prints its string and stops.  I am now able to run main of SHARC1 core.  When I do, it also prints its string just fine and ends.  SHARC0 core is not enabled though.

Since I do not specify any linker placement options and since I do not have an LDF file [*], I suspect executables for both SHARC+ cores may be places at the same address.  Since SHARC1 is loaded after SHARC0, I can run SHARC1 fine but not SHARC0.

[*] Also, I do not initialize anything, not MCAPI, not anything else... not in the ARM's main, not in SHARC+s' main.

I looked at LDF as well as at linker options from another (working) tri-core project that was created and built using the IDE.  There are tons of memory-related linker settings.  I could probably grab the LDF and pass it to the linker when linking my own project using the makefile.  However, I would really prefer not to do this.  Instead, I would like to specify the minimum settings for my project (either on the cc21k command line or via LFD).

So the question I have is:  What are the minimum linker settings I need to specify to build a tri-core C++ project using a makefile?

Thanks.

Petr

Outcomes