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.

HELP! Using BIOS 5.33.05 with DSP Link and CCS v4

Other Parts Discussed in Thread: OMAP-L138, OMAPL138, OMAP-L137

I am having a heck of a time getting started using DSP/BIOS 5.33.05, with DSPLink, in CCS v4, for an OMAP-L138 system.

 

First of all, I chose these packages for reasons I discussed here:

http://e2e.ti.com/support/embedded/bios/f/355/t/148135.aspx#535559

Nobody commented, so I just went with that.  DSP/BIOS 5.33.05 seems to be the latest version that is compatible with a built of DSPLink.

 

Now it appears that all the DSP/BIOS 5 stuff is setup for CCS v3.   Hrm....

And figuring out how to setup a dsplink project seems impossible.

 

What I really want to do is work on code in CCS, and then have my global build system do a (make?) build in linux along with all the ARM stuff.

I am running into a chicken and egg problem, do I start with a makefile project, and then try and port it into CCS, or vice versa, and where does this mythical starter project come from?  I can't figure out how to get these old packages setup with CCS v4, so I can't use the New Project wizard, so it seems.

 

 

  • Judson,

    Here is how you can set up a CCS4 project to build the DSP side for a DSPLink OMAPL138 application:

    • First build dsplink libraries using the makefiles provided.

                 For me, I found the "Empty DSP/BIOS v5.xx Project" under "BIOS Examples", and not under "Empty Projects" as shown in the link.

    • Once you have created the project, you can add the source files to your project.
    • You will need to add a bunch of include paths and defines to your project for it to build.  An easy way to do this is to use the text files IPS_defines.txt and IPS_includes.txt that got  generated when DspLink was built.  You can find these two files in:

                     dsplink_linux_1_65_00_03\dsplink\dsp\export\BIN\DspBios\OMAPL138\OMAPL138GEM_0\DEBUG

               In your CCS4 project properties, add these two files under Tool Settings -> C6000 Compiler -> Command Files

    • If your .tcf file includes other files in different locations, you will need to add those directories to Tool Settings -> TConf Script Compiler -> General Options
    • Add the dsplink libraries to the library search path (Tool Settings -> C6000 Linker -> File Search Path).

    Then your project should build.  I tried this with the DspLink message example, and I have attached an archive file with my project.  I had to modify one of the .tci files to get it to build, and I had to also add TSK_MODE to the defined symbols.

    Best regards,

        Janet

    6471.message_ccs4_pjt.rar

     

     

  •  

    Thank you, this has been extremely helpful advice.  I am going to add some comments to this to help others out.  I will probably edit this post.

    1) ---------------------------------------

    janet said:
    You will need to add a bunch of include paths and defines to your project for it to build.  An easy way to do this is to use the text files IPS_defines.txt and IPS_includes.txt

    janet said:
    I tried this with the DspLink message example, and I have attached an archive file with my project.  I had to modify one of the .tci files to get it to build, and I had to also add TSK_MODE to the defined symbols.

    The reason janet had to add the TSK_MODE symbol is because she used the IPS txt files instead of the MESSAGE txt files for the MESSAGE example.  If you use the MESSAGE txt files for the MESSAGE example it should just work.  (Although I had to edit the paths in the MESSAGE_includes.txt because the relevant paths were different in my Linux file system and my Windows file system.)

    2) --------------------------------------

    One problem I had was specifying the versions of DSP/BIOS.  This appears to be specified in the project properties under C/C++ Build-> Macros Tab->System Macros.  To override the System Macros I believe you simply write a macro of the same name in the User Macros up above it.  There is some discussion of this at: http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/51853.aspx

    There may be other ways to set the directory for DSP/BIOS, but I am not quite sure.  I personally like to make these things a property of the project, and not the code composer setup, so that when I pass projects to other developers they are using the same version as I am.

    3) -------------------------------------

    The tcf files in the dsplink build should be merged.  I simply opened up "message.tcf", which has several includes of .tci files, so I copied those into the file to get it in one place.  Then I compared them side by side.  The first thing I noticed was the include assert.tci - I kept that as is and brought it into my CCS project, you can read about it here http://www.ti.com/lit/an/spraa67/spraa67.pdf on page 15.  Everything after that I am presently wading through.

    At this point I found this, which has some great relevant info as well:

    http://processors.wiki.ti.com/index.php/CCS_Project_OMAP-L137_HelloDSP_DSPLINK_example

    The more useful part is the "Step by Step of What Was Done" which forms the second half of the page.

     

  • Judson,

    Thanks for your additional comments.  Regarding the DSP/BIOS version, in CCS 4, I was able to select the BIOS version of the project by:

        Project -> Properties -> CCS Build

    There I found a drop down list of the BIOS versions I had installed.  I was also add a version installed on the network by clicking on "More" and navigating to it.  This may have been an issue with older versions of CCS 4.  I am using CCS 4.2.4.00034.

    As for the .tcf file, you don't actually have to merge them.  If you don't merge them, you will need to add the path to the included .tci files to the Configuration import path.  To do this, go to

        Project -> Properties -> C/C++ Build -> TConf Script Compiler -> General Options

    and add the directory to "Configuration import path".  For example, I added:

        I:\jeh\dsplink_linux_1_65_00_03\dsplink\dsp\inc\DspBios\5.XX\OMAPL138GEM

    I also made a copy of dsplink-omapl138gem-base.tci, calling it dsplink-omapl138gem-base-ccs.tci, and replaced the line:

        prog.module("GBL").PROCID          = parseInt (arguments [0]) ;

    with

        prog.module("GBL").PROCID          = 0 ;

    I then included dsplink-omapl138gem-base-ccs.tci, in message.tcf.

    Also, I wanted to repeat the process, using another example, to more clearly document my steps.  So I tried this with the dsplink mp_list sample.  Here are the steps that I did:

    • Create a new CCS 4 project. (File -> New -> CCS Project).

                This time, for some reason, the Empty BIOS project was not available as a template, so I chose

                    DSP/BIOS v5.xx Examples -> evmOMAPL138 Examples -> hello example

    • Add the mp_list files to the project:  Select "Project -> Add files" and browse to the dsplink/dsp/src/samples/mp_list. Select the .c, .h, and .tci files in this directory.  Similarly, add mp_list.tcf (located in dsplink/dsp/src/samples/mp_list/DspBios/5.XX/OMAPL138GEM) to the project.
    • Remove hello.c and hello.tcf from the project.
    • Copy dsplink/dsp/export/BIN/DspBios/OMAPL138/OMAPL138GEM_0/DEBUG/IPS_defines.txt and IPS_includes.txt to your project directory.  Since I had built dsplink libraries on Linux, I had to replace the share names in IPS_includes.txt with the appropriate drive letters for my Windows machine.  I probably could have used MESSAGE_defines.txt and MESSAGE_includes.txt, but for this example, IPS worked.
    • Add the IPS_defines.txt and IPS_includes.txt to the C6000 Compiler command files:

                     Project -> Properties -> C/C++ Build -> Tool Settings -> C6000 Compiler -> Command Files

    • Add the project directory to the include search path (Project -> Properties -> C/C++ Build -> Tool Settings -> C6000 Compiler -> Include Options). (This is necessary because sample source code .c files includes files header files in the same directory with <> instead or "").
    • Make a copy of dsplink-omapl138gem-base.tci, and replace the line in your copy:

                prog.module("GBL").PROCID          = parseInt (arguments [0]) ;

                 with

               prog.module("GBL").PROCID          = 0 ;

    • Edit mp_list.tcf to include your copy of dsplink-omapl138gem-base.tci
    • Add the path to your copy of dsplink-omapl138gem-base.tci to the Configuration import path under:

                     Project -> Properties -> C/C++ Build -> TConf Script Compiler -> General Options

    • Add the dsplink libraries to the project:

                     Project -> Properties -> C/C++ Build -> C6000 Linker -> File Search Path

                I added I:\jeh\dsplink_linux_1_65_00_03\dsplink\dsp\export\BIN\DspBios\OMAPL138\OMAPL138GEM_0\DEBUG to the library search path,

                and the following libraries:

    dsplink.lib

    dsplinkmpcs.lib

    dsplinkmplist.lib

    dsplinkpool.lib

    dsplinkmsg.lib

    dsplinknotify.lib

    After doing the above steps, my project built without errors.  I am attaching an archive of this workspace also.

    4073.ccs4_mp_list.rar

    Best regards,

        Janet

  • NOTE: this post has been edited because it had a confusing mistake in it, which I comment about at the bottom in bold.

    janet said:
    Copy dsplink/dsp/export/BIN/DspBios/OMAPL138/OMAPL138GEM_0/DEBUG/IPS_defines.txt and IPS_includes.txt to your project directory.  Since I had built dsplink libraries on Linux, I had to replace the share names in IPS_includes.txt with the appropriate drive letters for my Windows machine.  I probably could have used MESSAGE_defines.txt and MESSAGE_includes.txt, but for this example, IPS worked.

    For this example you should be using MP_LIST_defines.txt, etc.  They way you determine this is by finding the COMPONENT file in the DspBios subfolder of the sample source file, i.e.:

    {$DSPLINK}/dsp/src/samples/mp_list/DspBios/COMPONENT

    This component is called MP_LIST to the makefile system, as can be seen on the following lines:

    #   ============================================================================
    #   Generic information about the component
    #   ============================================================================

    COMP_NAME       := MP_LIST

    the makefile opens this COMPONENT file, sets COMP_NAME to MP_LIST, and tries to use the MP_LIST_defines file by something of the form ${COMP_NAME}_defines.txt, or something similiar to this.

    This COMPONENT file tells make how to build a component, where in this case the component is called MP_LIST, and it is the mp_list example project.

    Long story short, to figure out which txt file goes with which example, use the COMP_NAME from the file COMPONENT, and append the "_defines.txt", "_includes.txt" and "_flags.txt"

    The system is pretty simple once you know it, but extremely difficult to figure out for the first time without someone telling you how it works.

    Edit Note: Apparently there is another component called MPLIST (without the underscore in the middle), which is NOT in the samples folder, and it is the MPLIST component for the OS, not the sample that uses it.  Don't get them confused like I accidentally did. The sample is called MP_LIST, not MPLIST

  • Judson,

    In my case, I did not have files named MP_LIST_defines.txt and MP_LIST_includes.txt, as I had not built the mp_list sample with the makefile.  Also, if you are creating a new DspLink DSP side app using only the CCS project, you will not have this COMPONENT file.  It may be better to say, copy one of the XXX_defines.txt and XXX_includes.txt files to your project.  You can then edit to add more defines or change the include paths.

    Best regards,

        Janet