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.

CCS/TMS320F28054F: code composer studio project configuration not working properly

Part Number: TMS320F28054F
Other Parts Discussed in Thread: MOTORWARE, CONTROLSUITE, TMS320F28054M

Tool/software: Code Composer Studio

after uninstalling CCS, Motorware, Control Suite and deleting the TI directory and the project workspace then reinstalling CCS8.1.0.00011_win32, controlSUITE3.4.9 and motorware_1_01_00_18 for a clean install I went to C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\hvkit_rev1p1\f28x\f2805xF\projects\ccs\proj_lab01 and opened the project. first thing I noticed is the wrong build command - it's trying to use make. I close CCS and reopen and magically the correct build command shows up.

but the worst part is if I change anything in Properties/Project for example setting the correct Variant and the correct device the configuration goes way off track, no longer can I build with the F28054F.cmd file I need to flash, even if I set it there the config changes after I close it, I can't build correctly and I can't recover, hense the uninstalling, deleting etc to get a clean install. using the manual project configuration somethings works but quickly goes down the tubes. I have quite a bit of experience in the field and I've never had this kind of experience with an eclipse based IDE. this is unusable as it is and trying to figure out how to make it work has taken a lot of time.

Maybe it's possible I'm doing something unexpected but I don't think so. Maybe the security software is doing something. Maybe I won't recommend using TI chips anymore.

I called the only tech line I could find but that was a training line, the person there gave me a 1-800 number and patched me through, that number said the number had changed and to call this other number. I called the other number and before I even explained the problem I was put on hold. Is this how TI cares?

I need to talk with someone that understands what's going on so I can get past not being able to build code for a TI product with a TI IDE.

  • Richard,

    I'm sorry that you've been having all this trouble getting the Motorware example projects going in CCS. 

    Richard Matthew said:
    but the worst part is if I change anything in Properties/Project for example setting the correct Variant and the correct device the configuration goes way off track, no longer can I build with the F28054F.cmd file I need to flash, even if I set it there the config changes after I close it, I can't build correctly and I can't recover

    When the device variant is changed in the Project Properties, usually it resets to a few default setting, specifically the linker command file field. If you wish to have the project continue to use the Flash linker command file F28054F.cmd, you can link the file in C:\ti\motorware\motorware_1_01_00_18\sw\ide\ccs\cmd\f2805x directory to the project (see this reference for linking files). Since the original project already had that file linked, it might simply have got excluded from build when you changed the Project Properties. In this case, you can add it back into the build and make sure that there is only one linker command file active in the project (and any others are excluded from build). 

    Any time you want to go back to the original example you can simply import the project into a different workspace, or if you wish to work in the current workspace then delete the existing project first and re-import. That should help you avoid uninstall/reinstalls of CCS and all the software packages each time.

  • Hi AartiG,
    OK that helps setting up the linker.cmd file there is still something off.
    I can build proj_lab02b which hasn't had the configuration modified but proj_lab01 doesn't build.
    same linker file, same devices, same runtime support library with a slight difference in that lab01 now uses compiler version v18.1.3.LTS and lab02b uses v18.1.2.LTS and the support libraries that match.
    the problem with the lab01 build is:
    warning #10247-D: creating output section "ramfuncs" without a SECTIONS
    which I thought would have been solved with the correct linker.cmd file (the same one used in the working build)
  • Which linker command file is linked to the proj_lab01 project? If it is the F28054F.cmd file from the Motorware installation, that file does contain a SECTIONS specification for the "ramfuncs" output section so I wouldn't expect it to generate that warning.

    Could you post the full build log as seen in the build console or better yet if you can zip up your copy of the proj_lab01 project and attach it here I could take a look.

  • I replied to your email with a zipped proj_lab1 dir, I'm not sure you got it. let me know 

    thanks

    rick

  • Sorry I did not receive it. Could you attach it here when you reply?

    Click on the link to "Insert Code, Attach Files and more" when posting a reply. Then use the paper clip icon to attach a file to your reply.

  • OK, I'm attaching the file again4621.proj_lab01.zip

  • Richard,

    I don't see any errors or warnings when building your attached project. I had to make some path adjustments to compensate for directory paths on my machine but after I did that the project built without any issues.

    Do you still see a build warning with the project you attached here? If so, perhaps taking a closer look at your build log output might give some clues. Maybe there is a resource linked to the project that is not getting resolved to the correct path.

    If other lab projects are importing and building fine, it might just be best to start over by re-importing the out-of-box lab01 project (in case something got corrupted in your set up), ensuring that it builds first, and then working to update/modify it.
  • I removed all the previous programs, ccs8 control suite and motorware
    - remove the project workspace directory
    - deleted the c:\ti directory
    - emptied the recycle bin
    - installed 7 zip
    - deleted previously unzipped copies of the ccs8 controlsuite 3.4.9 and motorware 1_01_00_18
    - unzipped them with 7 zip
    - did a fresh install with ccs8, controlsuite and motorware in that order
    - opened ccs8 and opened project lab 01
    - tried to build, first problem is that the build command is incorrect (make)
    - I close ccs8 and reopen it and magically the correct build command shows up …/gmake
    - so I build the project and it works successfully, I zipped up a copy of the directory
    - then I go into project properties and select the right chip for variant and device and before I even select apply and close the linker command file is changed to a ram version and the runtime support library is changed to automatic. the build fails with errors like I described above. I can never recover the build properties so that they work.

    the reason the other labs build successfully is because I don't touch the project properties, but then I can't select a debugger interface either. I will attach files in the next post
  • https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/81/proj_5F00_lab01_2D00_failed.7zhttps://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/81/proj_5F00_lab01_2D00_working.7z

  • https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/81/7416.proj_5F00_lab01_2D00_failed.7z

  • Richard,

    I took a look at your failed project. As you mentioned the following steps trigger the build error.

    Richard Matthew said:

    - then I go into project properties and select the right chip for variant and device and before I even select apply and close the linker command file is changed to a ram version and the runtime support library is changed to automatic. the build fails with errors like I described above. I can never recover the build properties so that they work.

    The step of changing the device variant does indeed change the linker command file, which eventually results in the build error. The original project uses F28054F.cmd (which is a Flash based linker command file) while the default one that gets added after changing the device variant is a RAM based one.

    There a couple of ways to fix this issue:

    1) Exclude the newly added 28055_RAM_lnk.cmd and include back the original F28054F.cmd (using the context menu "Exclude from Build"). If you wish to run the code on a F28055 device, just edit the target configuration file in the project (TMS320F28054M_xds100v2.ccxml) and change the Device to F28055.

    2) In the Project Properties->General->Linker command file field, browse and select the F28055.cmd file (the Flash based one for F28055) . This will copy over a default template of that file into the project. However note that the memory layout and section allocation of this .cmd file is a bit different than the one the original project pulls in from Motorware. In other words the linker cmd files in the Motorware directories are specifically customized to work well with Motorware projects.

    To make the project build with this file a few modifications are necessary. I have attached below a modified version of this file that you should be able to drop into your project and allow it to build without errors.

    Let me know if either of these options helps resolve the issue.

    /*
    // TI File $Revision: /main/3 $
    // Checkin $Date: March 16, 2012   14:54:08 $
    //###########################################################################
    //
    // FILE:	F28055.cmd
    //
    // TITLE:	Linker Command File For F28055 Device
    //
    //###########################################################################
    // $TI Release: 2805x C/C++ Header Files vBeta1 $
    // $Release Date: December 9, 2011 $
    //###########################################################################
    */
    
    /* ======================================================
    // For Code Composer Studio V2.2 and later
    // ---------------------------------------
    // In addition to this memory linker command file,
    // add the header linker command file directly to the project.
    // The header linker command file is required to link the
    // peripheral structures to the proper locations within
    // the memory map.
    //
    // The header linker files are found in <base>\F28055_Headers\cmd
    //
    // For BIOS applications add:      F28055_Headers_BIOS.cmd
    // For nonBIOS applications add:   F28055_Headers_nonBIOS.cmd
    ========================================================= */
    
    /* ======================================================
    // For Code Composer Studio prior to V2.2
    // --------------------------------------
    // 1) Use one of the following -l statements to include the
    // header linker command file in the project. The header linker
    // file is required to link the peripheral structures to the proper
    // locations within the memory map                                    */
    
    /* Uncomment this line to include file only for non-BIOS applications */
    /* -l F28055_Headers_nonBIOS.cmd */
    
    /* Uncomment this line to include file only for BIOS applications */
    /* -l F28055_Headers_BIOS.cmd */
    
    /* 2) In your project add the path to <base>\F28055_headers\cmd to the
       library search path under project->build options, linker tab,
       library search path (-i).
    /*========================================================= */
    
    /* Define the memory block start/length for the F28035
       PAGE 0 will be used to organize program sections
       PAGE 1 will be used to organize data sections
    
       Notes:
             Memory blocks on F28055 are uniform (ie same
             physical memory) in both PAGE 0 and PAGE 1.
             That is the same memory region should not be
             defined for both PAGE 0 and PAGE 1.
             Doing so will result in corruption of program
             and/or data.
    
             L0 memory block is mirrored - that is
             it can be accessed in high memory or low memory.
             For simplicity only one instance is used in this
             linker file.
    
             Contiguous SARAM memory blocks or flash sectors can be
             be combined if required to create a larger memory block.
    */
    
    MEMORY
    {
    PAGE 0:    /* Program Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
       RAML0			: origin = 0x008000, length = 0x000800		/* on-chip RAM block L0 */
       RAML1			: origin = 0x008800, length = 0x000400		/* on-chip RAM block L1 */
       FLASHJ			: origin = 0x3E8000, length = 0x001000		/* on-chip FLASH */
       FLASHI			: origin = 0x3E9000, length = 0x001000		/* on-chip FLASH */
       FLASHH			: origin = 0x3EA000, length = 0x002000		/* on-chip FLASH */
       FLASHG			: origin = 0x3EC000, length = 0x002000		/* on-chip FLASH */
    /*   FLASHF			: origin = 0x3EE000, length = 0x002000		/* on-chip FLASH */
    /*   FLASHE			: origin = 0x3F0000, length = 0x002000		/* on-chip FLASH */
    /*   FLASHD			: origin = 0x3F2000, length = 0x002000		/* on-chip FLASH */
       FLASHC			: origin = 0x3EE000, length = 0x008000		/* on-chip FLASH */
       FLASHA			: origin = 0x3F7000, length = 0x000FFE		/* on-chip FLASH */
       BEGIN			: origin = 0x3F7FFE, length = 0x000002		/* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       
       Z1_SCC_ROM		: origin = 0x3F8000, length = 0x000400		/* Zone 1 Safe-Copy Code Secure ROM */
       Z2_SCC_ROM		: origin = 0x3F8400, length = 0x000400		/* Zone 2 Safe-Copy Code Secure ROM */ 
       
       IQTABLES   		: origin = 0x3FDB52, length = 0x000b50  /* IQ Math Tables in Boot ROM */
       IQTABLES2  		: origin = 0x3FE6A2, length = 0x00008C  /* IQ Math Tables in Boot ROM */
       IQTABLES3  		: origin = 0x3FE72E, length = 0x0000AA  /* IQ Math Tables in Boot ROM */
    
    
       DCSM_OTP_Z2_P0	: origin = 0x3D7800, length = 0x000004		/* Part of Z1 OTP.  LinkPointer/JTAG lock/ Boot Mode */
       DCSM_OTP_Z1_P0	: origin = 0x3D7A00, length = 0x000006		/* Part of Z2 OTP.  LinkPointer/JTAG lock */
       
       /* DCSM Z1 Zone Select Contents and Reserved Locations (!!Movable!!) */
       /* Z1_DCSM_RSVD must be programmed to all 0x0000 and must immediately follow Z1 Zone Select block */
       DCSM_ZSEL_Z1_P0	: origin = 0x3D7A10, length = 0x000010		/* Part of Z1 OTP.  Z1 password locations / Flash and RAM partitioning */
       Z1_DCSM_RSVD     : origin = 0x3D7A20, length = 0x0001E0	    /* Part of Z1 OTP.  Program with all 0x0000 when Z1 DCSM is in use. */
       
       /* DCSM Z1 Zone Select Contents and Reserved Locations (!!Movable!!) */
       /* Z2_DCSM_RSVD must be programmed to all 0x0000 and must immediately follow Z2 Zone Select block */
       DCSM_ZSEL_Z2_P0	: origin = 0x3D7810, length = 0x000010		/* Part of Z2 OTP.  Z2 password locations / Flash and RAM partitioning  */
       Z2_DCSM_RSVD     : origin = 0x3D7820, length = 0x0001E0		/* Program with all 0x0000 when Z2 DCSM is in use. */
       
       ROM				: origin = 0x3FF27C, length = 0x000D44		/* Boot ROM */
       RESET			: origin = 0x3FFFC0, length = 0x000002		/* part of boot ROM  */
       VECTORS			: origin = 0x3FFFC2, length = 0x00003E		/* part of boot ROM  */
    
    PAGE 1 :   /* Data Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
               /* Registers remain on PAGE1                                                  */
       BOOT_RSVD		: origin = 0x000000, length = 0x000050		/* Part of M0, BOOT rom will use this for stack */
       RAMM0			: origin = 0x000050, length = 0x0003B0		/* on-chip RAM block M0 */
       RAMM1			: origin = 0x000400, length = 0x000400		/* on-chip RAM block M1 */
       RAML2			: origin = 0x008C00, length = 0x000400		/* on-chip RAM block L2 */
       RAML3			: origin = 0x009000, length = 0x001000		/* on-chip RAM block L3 */
       FLASHB			: origin = 0x3F6000, length = 0x001000		/* on-chip FLASH */
    
    }
    
    /* Allocate sections to memory blocks.
       Note:
             codestart user defined section in DSP28_CodeStartBranchasm used to redirect code
                       execution when booting to flash
             ramfuncs  user defined section to store functions that will be copied from Flash into RAM
    */
    
    SECTIONS
    {
    
       /* Allocate program areas: */
       .cinit			: > FLASHC				PAGE = 0
       .pinit			: > FLASHC,				PAGE = 0
       .text			: > FLASHC				PAGE = 0
       codestart		: > BEGIN				PAGE = 0
                       
       ramfuncs			: {} LOAD = FLASHC,
                             RUN = RAML0,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             RUN_START(_RamfuncsRunStart),
                             PAGE = 0   
    
       
       dcsm_otp_z1		: > DCSM_OTP_Z1_P0		PAGE = 0
       dcsm_otp_z2		: > DCSM_OTP_Z2_P0		PAGE = 0
       
       dcsm_zsel_z1		: > DCSM_ZSEL_Z1_P0		PAGE = 0
       dcsm_rsvd_z1		: > Z1_DCSM_RSVD		PAGE = 0
       dcsm_zsel_z2		: > DCSM_ZSEL_Z2_P0		PAGE = 0
       dcsm_rsvd_z2		: > Z2_DCSM_RSVD		PAGE = 0
    
       /* Allocate uninitalized data sections: */
       .stack			: > RAMM0				PAGE = 1
       .ebss			: > RAML2				PAGE = 1
       .esysmem			: > RAML2				PAGE = 1
    
       /* Initalized sections go in Flash */
       /* For SDFlash to program these, they must be allocated to page 0 */
       .econst			: > FLASHC				PAGE = 0
       .switch			: > FLASHC				PAGE = 0
    
       /* Allocate IQ math areas: */
       IQmath			: > FLASHC				PAGE = 0            /* Math Code */
       IQmathTables		: > IQTABLES,			PAGE = 0, TYPE = NOLOAD
    
      /* Uncomment the section below if calling the IQNexp() or IQexp()
          functions from the IQMath.lib library in order to utilize the
          relevant IQ Math table in Boot ROM (This saves space and Boot ROM
          is 1 wait-state). If this section is not uncommented, IQmathTables2
          will be loaded into other memory (SARAM, Flash, etc.) and will take
          up space, but 0 wait-state is possible.
       */
       /*
       IQmathTables2	: > IQTABLES2,			PAGE = 0, TYPE = NOLOAD
       {
    
                  IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)
    
       }
       */
        /* Uncomment the section below if calling the IQNasin() or IQasin()
           functions from the IQMath.lib library in order to utilize the
           relevant IQ Math table in Boot ROM (This saves space and Boot ROM
           is 1 wait-state). If this section is not uncommented, IQmathTables2
           will be loaded into other memory (SARAM, Flash, etc.) and will take
           up space, but 0 wait-state is possible.
        */
        /*
        IQmathTables3	: > IQTABLES3,			PAGE = 0, TYPE = NOLOAD
        {
    
                   IQmath.lib<IQNasinTable.obj> (IQmathTablesRam)
    
        }
        */
    
       /* .reset is a standard section used by the compiler.  It contains the */
       /* the address of the start of _c_int00 for C Code.   /*
       /* When using the boot ROM this section and the CPU vector */
       /* table is not needed.  Thus the default type is set here to  */
       /* DSECT  */
       .reset			: > RESET,				PAGE = 0, TYPE = DSECT
       vectors			: > VECTORS				PAGE = 0, TYPE = DSECT
    
    }
    
    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */
    
    

  • I'm trying what you suggest. The first thing I experience is I can't find the context menu or "Exclude from Build" you are mentioning in suggestion 1. Where is it?

    On the second point, the file you included works well for the 28055, however our development board is based on the 28054F and I want to walk through the labs on the dev board we are bringing up. the configuration menu doesn't accept 28054F linker command files although the selected processor is 28054F. what do you suggest.

  • Richard Matthew said:
    I'm trying what you suggest. The first thing I experience is I can't find the context menu or "Exclude from Build" you are mentioning in suggestion 1. Where is it?

    Sorry I wasn't clear. Right-click on the file in the Project Explorer view and you should see it.

    Richard Matthew said:
    the configuration menu doesn't accept 28054F linker command files although the selected processor is 28054F. what do you suggest.

    Ok I see that. Selecting the F28054F.cmd alone in the Linker command field does not preserve the setting. 

    I would suggest one of the following:

    - Do not change the device variant on the original project. That way the original F28054F.cmd will still be used. I don't think believe that changing the device variant is required or necessary to run this project on F28054F based board.

    - Re-include the F28054F.cmd file that got excluded from project when you changed the device variant.