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.

TMS320F280039C: System Configuration Tool, CCS, .syscfg file, no generated code? Only the .csv is generated.

Part Number: TMS320F280039C
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

I am using the TI Sytem Configuration Tool to set up the pin mux assignments. I created a .syscfg file and dropped it into my project directory. CCS prompted me to add it to the project and make necessary adjustments. When I compile, I do not get any generated code. I have looked at the training material but I found no mention of what to do if the code is not generated.

Here is an excerpt form the build window:

Building file: "../ti_sys_config_tool_file.syscfg"
Invoking: SysConfig
"C:/ti/ccs1120/ccs/utils/sysconfig_1.12.0/sysconfig_cli.bat" --script "C:/PRODEV/Prj_1/Prj_1_app/ti_sys_config_tool_file.syscfg" -o "syscfg" --compiler ccs
Running script...
Validating...
Generating Code (ti_sys_config_tool_file.syscfg)...
Writing C:\PROJECTS\Prj_1\Prj_1_app\Debug\syscfg\PinmuxConfigSummary.csv...
Finished building: "../ti_sys_config_tool_file.syscfg"

See attached images....

1) From my project

2) From: https://software-dl.ti.com/C2000/docs/software_guide/c2000_sysconfig.html

3) From: https://dev.ti.com/tirex/explore/node?node=AP0NCemnsxDP7lRhc3EokA__J4.hfJy__LATEST#:~:text=syscfg%20file%20in%20a%20project,the%20generated%20source%20files%20also.

  • Here are two more screen shots.

    1) From my project

    2) From YouTube: https://www.youtube.com/watch?v=tCDTawpA8i0

    The one from YouTube shows more options for generated files that I have available.

  • Also, the Project->Properties->SysConfig->Output is set to automatic.

    See attached image.

  • I found this post which mentioned adding the device type and package:

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/910829/faq-how-do-i-add-sysconfig-support-pinmux-and-peripheral-initialization-to-an-existing-driverlib-project

    The fields were blank in my project. I opened and "example project" to see what the settings should be. However, adding these settings did not help. Still, no code generated.

    See attached images...

  • Hi,

    Which version of C2000Ware and SysConfig are you using? It looks like an older version of the software and our most up-to-date version includes support for configuring more types of peripherals. 

    In CCS, you can select the SysConfig version by going into the Project Properties->General->Products and adding a specific version of SysConfig. Try using the latest version of SysConfig, if you can

    Regards,

    Peter

  • Peter,

    Thanks for the reply. I am using CCS 11.2. I downloaded the stand-alone windows System Configuration Tool from the TI website a couple of days ago. It is version 1.13.0+2553. I assumed this was the latest from the TI site. I created the .syscfg file and dropped it into the project and was prompted to allow changes to the project to support that, which I did. I assumed that CCS somehow hooked itself into this SCT v1.13.xxxx.

    I did NOT add the System Configuration Tool to Properties->General->Products as you suggested and when I checked it was not listed there. Oddly though, as you can see in one of my first post on this thread, the System Configuration Tool did indeed run. It does not print the tool version out to the console.

    So, going to Properties->General->Products, I found two versions of the  System Configuration Tool available, 1.12.0 and 1.5.0+1353. I chose the 1.5x version because it is newer. The System Configuration Tool failed, halting the build, with the following:
    ---------------------------------------------------------
    Building file: "../ti_sys_config_tool_file.syscfg"
    Invoking: SysConfig
    "C:/ti/sysconfig_1.5.0/sysconfig_cli.bat" -d "F28003x" -o "syscfg" --package 100PZ --part F28003x_100PZ "C:/PRODEV//project_1_ti/project_1_ti_app/ti_sys_config_tool_file.syscfg" --compiler ccs

    Usage:
     cli [-o <dir>] [-s <file>] [-u <string>] [-b <name>] [-d <name>] [-p <name>] [-r <name>] [--treatWarningsAsErrors] <script>
     cli --help
     cli --version

     example: cli -s meta_data/sdk.json -d MSP432P401R scripts/two_uarts.js
     example: -s sdk.json -d MSP432P401R -o ./display_cfg sdk/cfgs/display.syscfg

     Note that the all arguments other than '--help' and '--version' may also be
     specified via the script with an embedded @cliArgs comment directive.
     E.g. // @cliArgs -d MSP432P401R

     If an argument is embedded in a script and explicitly specified via the CLI
     then precedence is given to the CLI arguments. Additionally, specifying
     "--board" or "--device" on the CLI will override any "--board" and "--device"
      arguments specified in the script.

    subdir_rules.mk:23: recipe for target 'build-724233617' failed
    Device not found : F28003x
    gmake: *** [build-724233617] Error 1
    gmake: Target 'all' not remade because of errors.

    **** Build Finished ****
    ---------------------------------------------------------

    Went back to Properties->General->Products and changed the System Configuration Tool to version 1.12.0. The project built successfully. However, STILL, no code was generated. Here is the build output for the SCT:
    ---------------------------------------------------------
    Building file: "../ti_sys_config_tool_file.syscfg"
    Invoking: SysConfig
    "C:/ti/ccs1120/ccs/utils/sysconfig_1.12.0/sysconfig_cli.bat" -d "F28003x" --script "C:/project_1_ti/project_1_ti_app/ti_sys_config_tool_file.syscfg" -o "syscfg" --package 100PZ --part F28003x_100PZ --compiler ccs
    Running script...
    Validating...
    Generating Code (ti_sys_config_tool_file.syscfg)...
    Writing C:/project_1_ti/project_1_ti_app\Debug\syscfg\PinmuxConfigSummary.csv...
    Finished building: "../ti_sys_config_tool_file.syscfg"
    ---------------------------------------------------------

  • Dang It !
    I forgot to attach my screen shots for the previous post.
    I don't see any option to edit the post.
    So, here they are.

  • Hi,

    The stand-alone SysConfig is a separate tool from the one included within CCS, hence why you are seeing the difference between the versions you can select from within CCS. Version 1.12 should contain all of the device information for F28003x devices so that should be fine.

    Can you try importing the example pinmux project from the C2000Ware SDK? It can be found in the driverlib examples folder for f28003x. This project has an empty syscfg file, and when you build the proejct, it should generate some empty board.h and board.c files. 

    Regards,

    Peter

  • I do not see a "pinmux" project. See the project list in the attached image.

  • Hi,

    You can import the following project directory:

    C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f28003x\examples\pinmux

    Regards,

    Peter

  • OK. Got it!
    It built AND generated code.
    1) There is no System  Configuration Tool in Properties->General->Products but it ran the SysConfig anyway.
    2) It generated code
    See attached images.

  • Unfortunately though, my project still does NOT generate code.

  • Hi,

    My apologies, I had written a response earlier but it looks like the reply did not go through.

    Glad you got the example project to work. The project properties will automatically use the version of SysConfig specified in the example project unless you manually select one, hence why you don't see SysConfig in the Products panel (but you do see C2000Ware because the example is from that version of the SDK). 

    In that case, it may be that the CCS project properties is not configured properly. Within the CCS project properties, go to SysConfig Basic Options and try to match the flags in the example project, which should look like the below.

    That should involve adding the ${C2000WARE_ROOT}/.metadata/sdk.json and ${COM_TI_C2000WARE_SOFTWARE_PACKAGE_SYSCONFIG_MANIFEST}. Looks like you already have the second flag in your project, make sure to just add the sdk.json link. If your project doesn't recognize the C2000WARE_ROOT variable, you can add a path variable in the Resource->Linked Resources window and it should point to the install directory for C2000Ware

    Let me know if this changes the appearance of your SysConfig GUI and if you are able to see the built files.

    Regards,

    Peter

  • I added one line to the Project->Properties to match the example project. It did generate board.c & board.h. However, it was not very useful because board.c just has an empty function. I thought the idea behind the tool was to create the pin configuration C-code for the user. Below is the "entirety" of board.c. It produced nothing useful.

    ------------------------------------
     .... More copyright header stuff above ....
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     */
    #include "board.h"

    void Board_init()
    {
        EALLOW;

        PinMux_init();

        EDIS;
    }

    void PinMux_init()
    {

    }
    ------------------------------------

    I tried changing the Properties->General->Products->SysConfig to version 1.5.0+1353 (which is newer). However, that will not build at all. It gets the error:
    "Error: C2000 SysConfig version 4.01.00.00 requires at least version 1.11.0 of SysConfig."

    Should this tool be more useful than producing an empty function? If not, it is a waste of time.

    See attached images:

  • Hi,

    Glad you are now able to generate the board.h and board.c files. Your generated file looks like there is nothing configured within the SysConfig tool. What configurations have you made in SysConfig? Can you send a picture of your SysConfig GUI and the peripherals you have configured in it?

    SysConfig should be dynamic meaning that if you open the board.c file in the Generated Files panel on the right of SysConfig, you can see the DriverLib code that gets generated as you change each of the configurations in the SysConfig GUI. You can visit our C2000 SysConfig training video series for more information (https://training.ti.com/sysconfig-development-tool-c2000-real-time-mcus)

    Note: 1.13.x is the latest public version of SysConfig, 1.5.x is verrrrrrry old (maybe writing it as 1.05 might make that clearer) and doesn't have device support for F28003x

    Regards,

    Peter

  • Hi,
    Good point on the 1.13.xxx vs. 1.5.xxx. Trying to solve this system config issue on the side while still working on other tasks. I should have caught that. And yes, your 1.05 example cleared that right up.

    Anyway, I am still generating board.c but with only an empty functon. See the attached screen shots:

  • Dear MonkeyBusiness,

    I dont believe your sysconfig project settings are going through.

    Can you remove all items except the added one for sdk.json of C2000WARE/.metatdat/a?

    Remove everything except the last one.

    You sysconfig is not launching peripheral support. You are just getting the raw PINMUX GUI, which doesnt generate code in the board.c and borad.h.

    Nima

  • Thanks for the input, . I see the issue now.

    Jim, you will want to use the Software panel (boxed in the image below) to generate your code in the board.h/.c files. You care currently just using the deprecated PinMux GUI. Make the same configurations in this tab, build, and you should see some code in the generated files.

    Regards,

    Peter

  • Hi Peter,
    Well..... That did it. Now it produces code.

    Interestingly, under the "Software" button panel, I tried to name the devices with the same name I used in the stand-alone Windows SCT. Of course, those were the same under the SCT in CCS under the "Reserve Peripherals" (via tooltip) button. Which as you say is the depricated PinMux GUI. It would not let me use the same names (such as myEPWM1) even though it won't produce code from that depricated panel. You would think they would be in different spaces but it is a shared name pool. So, I deleted everything from the depricated panel and entered configuration only in the "Software" panel and it created code.

    Take aways:
    1) I followed instructions I found from TI that explained to use the stand-alone tool and save the file into the project.
       a) This does not work so maybe the stand-alone tool should be end-of-life'd or improved to be compatible with CCS
    2) It would be good if CCS would print out to the console which version of SCT it is using
       a) We found from this excersize that the SCT does NOT have to added to Properties->General->SysConfig
       b) It doesn't cause a problem to enter SCT in Properties->General->SysConfig but not necessary
       c) If not entered in Properties->General->SysConfig the user does not know what version is running
    3) If CCS encounters a .syscfg file with only the legacy format it could post an error message explaining to enter the data in the new format (pane)
    4) It's working. Thanks for all the assistance. There was a lot to try.

  • Peter,

    Now that the issue is resolved, I still have a couple of related follow-on questions.

    1) The stand-alone SCT and the legacy CCS (older CCS versions) SCT only create the pinmux.csv file. How was this meant to be used?
         a) Did users write thier own script to generate code?
         b) Was it just for documentation purposes?
         c) I never worked with SCT before, so I don't know how it was used.

    2) The newer SCT is generating code. It produces board.c with the functions:

    void Board_init()
    {
    EALLOW;
    PinMux_init();
    SYNC_init();
    EPWM_init();
    EDIS;
    }

    a) Does this function call, Board_init(), get hooked in automatically in the build?
       * Or, is it up to the user to add this call to the code
       * That is, add into main or some init_xxx function) manually?

  • There are two documents for SysConfig + video series.

    https://www.ti.com/lit/spracx3

    and

    https://www.ti.com/lit/spry341

    The video series is available at:

    https://training.ti.com/c2000-sysconfig-overview

    Nima

  • Hi Nima,

    OK. I reviewed the materials which did NOT answer any of the questions I asked.

    -------------------------------------------------------------------------------------------

    I have spent a lot of time (with the forum) to solve the original issue in this post. I followed instructions I found on the TI web site which led to the issue. The instructions were to:

    1) Create a .syscfg file with the Windows app SCT
    2) Drop the file into the project
    3) CCS will prompt to allow settings to be updated

    It turned out that that the issue is that the stand-alone, Windows app, SCT is not compatible with CCS. It produces a "legacy" file format. The links you provided only cover the newer SCT embedded in CCS using the software pane of the SCT.

    So, my question about the "STAND-ALONE" Windows application version of SCT is:

    1) The stand-alone SCT only creates the pinmux.csv file.
      a) How is this .csv file meant to be used?
      b) Are users to write thier own script to generate
         code from the .csv?
      c) Is the .csv just for documentation purposes?
    -------------------------------------------------------------------------------------------

    2) The newer SCT is generating code. It produces board.c with the functions:

    void Board_init()
    {
       EALLOW;
       PinMux_init();
       SYNC_init();
       EPWM_init();
       EDIS;
    }

    a) Does this function call, Board_init(), get hooked in automatically in the build?
       * Or, is it up to the user to add this call to the code
       * That is, add into main or some init_xxx function) manually?

    I did not find the answer to this question (how to hook in Board_init) in the materials provided. Maybe it's there but I can only spend so much time on the SCT issue.

    -------------------------------------------------------------------------------------------

    If you could provide the answer to these questions, that would be great.

    Then I will know in which scenarios the "stand-alone", Windows app, version of the SCT is useful. And, in what scenarios that the "stand-alone", Windows app, version of the SCT is NOT useful.

  • It turned out that that the issue is that the stand-alone, Windows app, SCT is not compatible with CCS. It produces a "legacy" file format. The links you provided only cover the newer SCT embedded in CCS using the software pane of the SCT.

    So, my question about the "STAND-ALONE" Windows application version of SCT is:

    MonkeyBusiness,

    That's not accurate. The standalone version is compatible you just have to select a "Software Product".

    The first entry being the Software Product selected as C2000 SysConfig.

    If the SW product is not showing, you can find it manually by selecting the top level folder of C2000WARE.

  • MonkeyBusiness,

    I would like your feedback on one thing! 

    Where do you think we should include the answer I provided above in our collateral so others dont run into the same issue?

    The choices are:

    1. TRM

    2. Application Report

    3. Whitepaper

    4. E2E FAQ

    This one is hard to categorize. Where did you first look and would have liked to find this answer?

  • Hi Nima,

    Man, you are really gonna make me earn this aren't you.

    I will reiterate the information and steps that are documented previously in this thread.

    >>> That's not accurate.

    Actually, it is accurate. If you read the posts that lead to the solution,  the "newer CCS embedded SCT" would not use any of the information from the stand-alone version. In fact, the "Software" panel was empty. So, as I attempted to recreate the pin assigments done in the stand-alone SCT, I had name conflicts because I was using the same names that I used in the "stand-alone" SCT. So, the "Software" panel of the CCS embedded SCT did NOT pick up any pin assignments from the stand-alone version. However, the "Software" panel of the CCS embedded SCT did pick up the user assigned names of the pin assignments which created the name conflict. My remedy to this was to create a new, empty, .syscfg file and then create the pin assignments from "Software" panel in the CCS embedded SCT. As, I mentioned, this information is the previous posts in this thread.

    This situation is why I am asking about the appropriate use of the "stand-alone" SCT.

  • You should NOT use the item:

    That one is legacy. 

    We use the:

    For code generation.

    This is available on both STANDALONE and INTEGREATED CCS. You just cannot use the calculator TAB.

    You do the pinmux within the SOFTWARE tab.

    In standalone, once you select the SOFTWARE PRODUCT on the start page, the tool should launch with both of these tabs. Then you just have to use the correct tab (first tab).

    Nima

  • If you look at the screen shot I sent you, you will see that I do not have that option on my stand-alone version. The stand-alone version that I downloaded from the TI site last week is version 1.13.0+2553.

    Please look at my screen shot (I took the time to make it).

    Why does your stand-alone version have the "Software" button option and mine does not?

    Is the version you have newer than 1.13.0+2553?

    Is there an enablement button somewhere that I missed?

  • Show me your start page.

  • Then fill it out and before you click START send me another screenshot.

  • I have been really busy. And I have already spent Sssooooo... much time on this that I have not had the opportunity to continue.

    I will try to send the requested info this weekend.

  • Sounds good! I will await your response.

    Niam