This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

More Mcoreloader questions

Other Parts Discussed in Thread: SYSBIOS

I have been researching how to use mcoreloader to run tasks on cores 1 through 7 on my C6678.  There are a few examples on the TI website, but when I go to run them, most of them fail to run properly or, in the best case, run one of the examples runs once and then locks up the machine.  This is probably not the best starting place for me.

In addition, the build system used by the examples is quite convoluted in that the SysBIOS based components are built using the Make from the C6x Linux project Makefile.  Changing a line of code takes me over 2 hours to compile and I have not been able to find an easy way to get around this.  Again, probably not the best starting place for getting a multicore application up and running.

Now for my question:  I understand that the ucLinux toolset provided by TI can build an ELF binary.  I would assume that with the correct compiler settings file it would be perfectly compatible with mcoreloader and thus run on core 1 at some memory location assigned to it.  HAS ANYONE DONE THIS?  If so, what are the compiler settings you used?

Is anybody out there using C6x Linux and doing multicore work?  If you could let me know how you got past these issues, I would really appreciate it.  Thanks

  • Hi David,

    I compiled my Sys/BIOS programs using CCS. When everything goes right, you can just upload the Release file (*.out) to your TI board and load them using mcoreloader. However, when you do that, you won't see any output. What you also can do is on the linux side "insmod syslink.so", then load your application in CCS, start the sys/bios application and then start the linux application. This way you can have more debugging options.. Remember to clean up all applications after run and "rmmod syslink.so". If you have any more questions, please let me know, i've been going through this stuff the last 2 weeks so i have seen quite some bugs (my mistakes) coming by that i've solved.. 

    Just one more tip, if you use mcoreloader, you cannot use CCS to load sys/bios applications and vice versa. That is, you have to reboot your TI board when switching between mcoreloader and CCS.

  • Jonathan

    Thanks.  I followed the exact same procedure as you, but mcoreloader failed to load the code.  

    When I go to load the executable via "mcoreloader" I get the following errors:

    /mnt/McoreTesting # mcoreloader 1 Core1Test.out 

    ELF: ELF
    ELF file header entry point: 80014840
    << D L O A D >> ERROR: Failed to set target memory for segment.
    << D L O A D >> ERROR: Failed to allocate target memory for static executable.
    Failed to load file Core1Test.out on core 1

    This leads me to believe that there is some missing setup information that I cannot determine.  I have attached my CCS project used to build the core 1 test program.  It is a very simple hello world progam.     6087.Core1Test.zip

    If anybody can point me to what settings I have wrong, I would appreciate it.

    Thanks

  • Have you already tried the hello example without all the platform and DDR3 hacking?

    And instead of platform_write just using System_printf?

    You can see the output of your sys/bios application in your CCS console.

  • No, I have not and I am not exactly sure that I understand what you are doing here.  This could be my ignorance of the DSP world, but I do not think I have done anything special other than a simple hello world application that runs in core 1.  Can you upload your project that works and then I can to a mental-diff and see what I am doing wrong?

    I will also try using System_printf instead of platform_write.  But since the executable just fails to load, I am not sure that it will make any difference.

    Thanks

  • Jonathan

    Thanks for the help.  I removed the DDR3 and replaced with 

    I also removed everything except a while(1) and a call to System_printf.  Now, when I try to use mcoreloader, I get the following error

    /mnt/McoreTesting # mcoreloader 1 Core1Test.out
    ELF: ELF
    ELF file header entry point: c014820
    << D L O A D >> ERROR: Failed to set target memory for segment.
    << D L O A D >> ERROR: Failed to allocate target memory for static executable.
    Failed to load file Core1Test.out on core 1

    Everything is the same as before, except that the location of the entry point is different in this error.  It would really help me to see an example project from CCS that loads onto a second core with mcoreloader so I can check all of my other settings to see what I am doing wrong.

    Again, thanks, I really appreciate the help.  I think we are almost there, but not quite.

  • I have not been able to find the sequence of instructions to CCS to get past this.  I am really hoping that someone can help me out here.  If there is a way to execute something on cores 1 through 7 I have not found the secret yet.  Please, if anybody can help here I would appreciate it.  Thanks