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.

C6678 BIOS MCSDK

Customer trying to develop different application/task for C6678 using BIOS MCSDK

It would be preferable for a current design to have 8 different applications each running on its own core. Most code examples I have seen utilize looking at the core number to decide which functionality to run on a particular core. Due to the size of each of these applications, the local memory of a core will not be able to fit an executable containing more than one application. 

How to assign/load the application executable to each DSP core from BIOS MCSDK?

From a development standpoint each application will be a different project under CCS?

How does everything get combined/linked (if thats the right term) together?

 

  • Lawrence,

    I have moved this thread over to the device forum in hopes that an MCSDK expert can respond.

  • Hi Lawrence,

    The MCSDK actually utilizes two approaches to solve this issue, the first is the approach you talked about wherein a single application binary is created with control code to identify the core number and execute core specfic code. This approach has many advantages it is simple, if the applications share libraries they will be linked only once and there is no need for additional code to parse and load different binaries on different cores.

    The second approach is more complex and needs deeper understanding of the application binary format. It is referred to as the Multicore Application Deployment (MAD) utilities and it is provide under tools/boot_loader/mad-utils in the MCSDK. It is designed to deploy multiple applications on mulitple cores dynamically and to conserve memory by sharing common code. The image processing demo that is part of the MCSDK uses this framework to demonstrate mutli-core implementation of the image processing algortihms.The user guide MAD utilities is provided here::

    http://processors.wiki.ti.com/index.php/MAD_Utils_User_Guide

    In this approach, each application can be different project under CCS or can have its own MAkefile based build.

    There is also a third approach to implmenting this, that I think is a good tradeoff between the two approaches but will probably have larger code size. you can do application development for each core using global addresses create individual boot tables with the application images for each core and then concatenate the image to create the final boot image. This will ensure that RBL loads the code with respect to all the cores at the time of boot and then the primary master core can place the entry points to the magic address for the slave cores and issue IPC interrupts to start code execution on slave cores as done in the first use case.

    Disadvantages: Code shared between aplication will be statically linked to all core applications that use it, therby increasing code size.

    Regards,

    Rahul