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.

Tasks Not Displaying in Outline window of SYS/BIOS

Other Parts Discussed in Thread: SYSBIOS

I'm in the process of migrating from DSP/BIOS to SYS/BIOS. I'm using CCS 5.2.0.00069, SYS/BIOS 6.33.05.46, and XDC Tools 3.23.03.53. I've converted my *.tcf file to a *.cfg file (attached (1526.VibrationMonitor.cfg) using the migration tool. None of the tasks in my *.cfg file are displaying in the Outline window. In addtion, CCS 5 is displaying related errors such as:

Description    Resource    Path    Location    Type
#20 identifier "UsbComms" is undefined    main.cpp    /VibrationMonitorSYSBIOS    line 1474    C/C++ Problem

when UsbComms is clearly defined in the *.cfg file. This is true for all my tasks.

My (two) memory heaps are also not displaying in the Outline window when they had been previously.

Could someone look at my *.cfg file and let me know why my tasks and heaps aren't displaying? Thanks.

  • Mark,

    I discussed the series of problems you've been struggling against with some of the engineers on the development team.

    Unfortunately the verdict is that using the GUI tool with a legacy encoded config file is NOT a supported use case.

    None of the instance objects created using the legacy syntax will appear in the GUI tool.

    If you need to use the GUI config tool, you'll have to manually convert your legacy BIOS tcf APIs into the corresponding SYS/BIOS syntax.

    If you have no compelling need to upgrade to SYS/BIOS for this application, a strong argument could be made for you to stay with BIOS 5.4x.

    If you need to use SYS/BIOS but want to continue using the old tcf syntax, any changes you make to the configuration will have to be done using a standard text editor.

    ---

    Regarding the missing UsbComms identifier, the additional command you need to add to your TSK definitions to make the instance objects public is:

         bios.TSK.instance("UsbComms").name = "UsbComms"; /* create a global symbol for this TSK object */

    The two HeapMem instances are gone because I commented out the HeapMem.create() lines associated with them yesterday since they were duplicates of and conflicted symbolically with the MEM instances defined near the top of your file:

        bios.MEM.instance("DDR").heapLabel = "DDR_HEAP";
        bios.MEM.instance("IRAM").heapLabel = "FAST_HEAP";

    Alan

  • Hi Alan,

    Many thanks for helping out with this. We'd really like to continue with SYS/BIOS...

    Also, yes, saw the commented out HeapMem related lines after I had sent the last email...

    On to the errors I'm seeing:

    I tried this change:

    bios.TSK.instance("UsbComms").name = "UsbComms"; /* create a global symbol for this TSK object */

    not only for "UsbComms" but also for any other error (180+) of this type:

    Description    Resource    Path    Location    Type
    #20 identifier "UsbComms" is undefined    main.cpp    /VibrationMonitorSYSBIOS    line 1474    C/C++ Problem

    but whether the line is in the cfg file or commented out, I still get the same error. Most errors are occurring in my main.cpp file. Is there a header file I need?

    Latest cfg file is attached 0474.VibrationMonitor.cfg

  • You only need to add the .name fields for objects that your application is going to reference at runtime.

    You have to have:

        #include <xdc/cfg/global.h>

    At the top of your .c file to pick up all the definitions from the config file.

    Alan

  • 99.9% of all my files include file baseos.h which has a #include VibrationMonitorcfg.h. VibrationMonitorcfg.h has a #include <xdc/cfg/global.h>. I even tried #include <xdc/cfg/global.h> in my main.cpp but I still get (183) errors such as:

    Description    Resource    Path    Location    Type
    #20 identifier "ImcComms" is undefined    main.cpp    /VibrationMonitorSYSBIOS    line 452    C/C++ Problem

    It appears that all of the name attributes in the cfg file are not getting read by CCS v5...suggestions? ideas? Thanks.

  • Mark,

    I did some digging into this and see that my previous post declaring that you had to explicitly set the .name field of each object was bogus.

    ALL object instances are given extern declarations in the generated app.h file like this:

         extern ti_sysbios_knl_Task_Struct TestTask;

    and the symbols are then equated to their corresponding object within the generated linker command file like this:

         _TestTask = _ti_sysbios_knl_Task_Object__table__V + 0;

    Perhaps the issue you're having is due to some kind of C++ name mangling.

    How are you referencing the Object instances in your C++ code?

    Alan

  • Here's a line of code referencing IMCComms, for example:

    TSK_setpri(&ImcComms, 5); // Resume IMCComms

    I'm not sure if this is what you mean by "referencing the Object instances in your C++ code."

    Also, I don't have an app.h (anywhere in my project/workspace directory) but I have an app.cfg (in the project/workspace root). I'm suspecting this is a major problem...? When/how should the app.h file get created?

  • "app.h" is my shorthand for the generated .h file that has the name of your application encoded in it.

    You'll find this file in your project's Debug/configPkg/package/cfg/ directory (assuming you're building a Debug .out file, otherwise its in Release/...).

    In my case, I named the project 'legacy6x' which results in the generated .h file being called "legacy6x_p674.h".

    When you add #include <xdc/cfg/global.h> in your C files, this application specific, generated header file gets magically included.

    The corresponding generated linker command file that contains the object label assignments resides in the same directory and is called "legacy6x_p674.xdl".

    Alan

  • So here's everything in VibrationMonitorSYSBIOS\Debug\configPkg\package\cfg\build_p674.h

    /*
     *  Do not modify this file; it is automatically
     *  generated and any modifications will be overwritten.
     *
     * @(#) xdc-y25
     */

    #include <xdc/std.h>

    extern int xdc_runtime_Startup__RESETFXN__C;

    extern int xdc_runtime_Startup_reset__I;

    extern int xdc_runtime_Startup__EXECFXN__C;

    extern int xdc_runtime_Startup_exec__E

    Q1: should there be more?

    Regarding the #include <xdc/cfg/global.h> issue,

    Q2: should I do what I'm doing (99.9% of all my files include file baseos.h which has a #include VibrationMonitorcfg.h. VibrationMonitorcfg.h has a #include <xdc/cfg/global.h>) or do #include <xdc/cfg/global.h> in each .cpp file that references an object in the .cfg fiel?

  • When I build an application using your config script, the generated header file is 458 lines long and contains definitions for every object in the config file.

    Do you have a config project separate from your application project? If so then you need to include the config project's generated header file in your application .c files. And you'll have to use an explicit path to that named .h file.

    Otherwise, I don't know why your build_p674.h file has so little content.

    Alan

  • I created a project using the separate configuration model and used your .cfg file for the configuration part.

    I had to include the following line in my main.c to import all the object definitions from the config project:

        #include <c:/Documents and Settings/a0868325/workspace_v5_2/legacy6x/Debug/configPkg/package/cfg/legacy6x_p674.h>

    Notice the explicit path (unique to my build environment of course) to my configuration project's generated .h file...

    You'll have to do something similar.

    Alan

  • Not sure what you mean by " a config project separate from your application project." The project that I'm trying to migrate from DSP/BIOS 5 to SYS/BIOS 6 is named "VibrationMonitorSYSBIOS", has all its relevant directories, sub-directories, files, and a cfg file in the root.

    I tried putting the absolute path to build_p674.h in my main but still got 163 errors and no difference in the build_p674.h file. Also, why does the file have "build" in the file name and not "VibrationMonitorSYSBIOS?" In fact, all files in $home\Debug\configPkg\package\cfg are prefixed with "build_".

  • I'm at a loss to understand why your generated .h file does not include all the objects from your config file.

    Can you export your project to an archive file and post it to the forum so I can take a closer look?

    Alan

  • Attached...

    Thanks for the continued effort.

  • Alan,

    Could you please remove any zip file I've posted from the web site as soon as you can...thanks.

  • Mark,

    Your project seems to be a combination of several other projects all thrown in together in a mutually exclusive manner.

    The attached project uses your VibrationMonitor.cfg and main.c files. It also uses your xdc target and platform settings. It does not include any of your other .cpp, .c, .or .h files.

    What I'd like you to try is importing the attached project and add to it only those .cpp, .c, and .h files that are absolutely necessary from your original project into this project.

    Do NOT add any other .cfg, .tcf, .tci, .cmd files to this new project.

    I think this approach will resolve the #include <xdc/cfg/global.h> problem and give you a clean start.

    Alan

    4314.VibrationMonitor.zip

  • Alan,

    Restarting the project. I don't think this project was recognizing my RTSC platform package generated by the conversion tool.Had a heck of a time getting the new project to recognize it...

    Got a new post for the new project under "xdc.tools.configuro: Error: can't open .tcf input file '../MPS_XMM/package/build.tcf'."

  • Alan,

    I've restarted my project from scratch but this time my project incorporates the migration tool generated RTSC platform package which hadn't been done in the previous project. However, I'm still getting the same problem - my project won't populate the build_p674.h file (7587.build_p674.h). Not sure if it will help but new cfg file is attached (0880.VibrationMonitor.cfg).

    If you have any ideas, I'm all ears. Thanks.

  • Mark,

    Can you post the build errors you are getting?

    Looking at this .cfg file versus the one on the other thread, this one is missing:

    var AlarmEventTaskFreeQueueParams = new Semaphore.Params();
    AlarmEventTaskFreeQueueParams.instance.name = "AlarmEventTaskFreeQueue";
    Program.global.AlarmEventTaskFreeQueue = Semaphore.create(null, AlarmEventTaskFreeQueueParams);

    var semaphore0Params = new Semaphore.Params();
    semaphore0Params.instance.name = "semaphore0";
    Program.global.semaphore0 = Semaphore.create(null, semaphore0Params);

    Is this intentional?

    Scott

  • Here's the first three (of 155)

    Description    Resource    Path    Location    Type
    #20 identifier "AlarmEventTaskFreeQueue" is undefined    UmmRuntimeModule.cpp    /Vibration Monitor    line 130    C/C++ Problem
    #20 identifier "AlarmEventTaskPoolSemaphore" is undefined    UmmRuntimeModule.cpp    /Vibration Monitor    line 130    C/C++ Problem
    #20 identifier "AlarmEventTaskUsedQueue" is undefined    UmmRuntimeModule.cpp    /Vibration Monitor    line 130    C/C++ Problem

    As far as these lines go:

    var AlarmEventTaskFreeQueueParams = new Semaphore.Params();
    AlarmEventTaskFreeQueueParams.instance.name = "AlarmEventTaskFreeQueue";
    Program.global.AlarmEventTaskFreeQueue = Semaphore.create(null, AlarmEventTaskFreeQueueParams);

    again, whether I use these or these (either set commented out appropriately):

    bios.SEM.create("AlarmEventTaskPoolSemaphore");
    bios.SEM.instance("AlarmEventTaskPoolSemaphore").comment = "Alarm Event Task Pool";

    my build_p674.h is not getting populated. Let me know if you need more...

  • Scott,

    Can you tell from the errors why my build_p674.h is not getting built?

    What concerns me is that when I did this project previously, I had run the ti.bios.coversion utility but had not incorporated the resulting RTSC platform (that the ti.bios.conversion utility creates) and am getting the same errors as in this project with the RTSC platform incorporated into the project (Properties->General->RTSC tab->Platform drop menu). The name of my RTSC platform is MPS_XMM and it is clearly selected from the noted drop menu.

    The undefined identifiers are clearly present in my cfg file but they are not getting put into the build_p674.h file. I appreciate all effort you can provide to help me find a solution to this problem. I'm hoping it's the only problem with finishing my DSP/BIOS to SYS/BIOS migration. Thanks.

  • Alan,

    When you built an application using my config script, what steps did you do such that the generated header file was 458 lines long? My project is still not generated a build_p674.h file?

  • Mark,

    I’d just typed a message to you to ask you to go back to this project and then saw your new post.

    I just rebuilt the project using these steps:

    1. File->Import

    2. Expand the "General" folder

    3. Select "Existing Projects into Workspace"

    4. Click Next

    5. Browse to and select file “4314.VibrationMonitor.zip”

    6. Click Finish

    7. Right click on project and select Clean Project

    8. Right click and select Build Project

    You should then see a large VibrationMonitor_p674.h file in this project subdirectory: VibrationMonitorSYSBIOS\Debug\configPkg\package\cfg\

    Does this work for you?

    Scott

  • No. I got the same result:

    /*
     *  Do not modify this file; it is automatically
     *  generated and any modifications will be overwritten.
     *
     * @(#) xdc-y25
     */

    #include <xdc/std.h>

    extern int xdc_runtime_Startup__RESETFXN__C;

    extern int xdc_runtime_Startup_reset__I;

    extern int xdc_runtime_Startup__EXECFXN__C;

    extern int xdc_runtime_Startup_exec__E;

    I did the exact steps you outline above but still get an unpopulated build_p674.h file...is there a setting within CCS to check/set in order the file to get populated?

  • From your steps above, you mentioned your generated file is named "VibrationMonitor_p674.h." Mine is named "build_p674.h" while the name of my project is "Vibration Monitor." In fact, everything in my %Project Home%\Vibration Monitor\Debug\configPkg\package\cfg folder begins with "build."

    Should everything begin with "Vibration Monitor?" Could you look at your %Project Home%\Vibration Monitor\Debug\configPkg\package\cfg folder and let me know what the names of your files begin with. Thanks.

  • Mark,

    Did you import the project using the exact same steps? 

    Your project name is “Vibration Monitor” but for the one Alan had posted it should be “VibrationMonitorSYSBIOS”. 

    This is what the directory should look like:

  • Yes but I started my project over with a slightly different name (Vibration Monitor). Also, in the project that you and Alan imported, although I ran the ti.bios.conversion utility that generated a cfg and RTSC platform, I don't think the platform package was incorporated properly. i.e., in Properties->CCS General->RTSC Tab->Products and Repositories Tab->Products and Repositories Window->Other Repositories folder didn't contain the RTSC platform package.

    In my current project, I have incorporated my RTSC platform package but am still getting the same results as without the package incorporated.

    As you can see from my screen shot, all the file names begin with "build" (whereas yours begins with the project name):

    Any ideas why this folder is not getting generated correctly? Am I missing a simple setting somewhere?

  • Mark,

    Why did you start the project over?  Were you able to build the project Alan sent (following the instructions I sent) and see the populated .h file?

    We’ve discussed this internally, and to provide some assistance we think you need to go back to the project that Alan had sent and baseline on that, adding in the various code modules from that point. 

    You have several open threads relating to what seem to be the same issue, and it really seems we need to back up and focus on building your app from the project Alan had put together for you…

    Scott

  • Hi Scott,

    I restarted the project just to get a clean start. But even with the re-started project, nothing has changed. As I've mentioned, the original project (which I've deleted permanently) did not have the RTSC platform package incorporated while the re-started project does and yet I get the same results - no populated build_p674.h file.

    Because the re-started project now has the RTSC platform package incorporated, even if the original project was available, it makes more sense to me to work on this project than to revert to the old one.

    My current project is on WIndows 7. When Alan and you got the build_p674.h file to populate, what OS were you using? Also, as I've asked before, why does my file start with the title "build" while yours starts with the actual project name?

    I sincerely appreciate your effort in helping me to find a solution for this. Thanks.

  • Mark,

    To be clear, the project we want you to revert to is not an older one that you had locally, but the one Alan had posted to the forum.    

    Alan had assembled this project for you since there had been difficulty with the initial conversion.  The .h file has an expected name, and the expected configuration contents corresponding to ported DSP/BIOS configuration.  He’d made this project so that you could use it as a baseline to add in your .c source files.

    I think many of the errors you are encountering now because of the clean start were resolved with Alan’s project.

    I don’t know why the file is named “build_p674.h” in your current project.  But I don’t understand all the steps you’ve taken to get to where you are at.

    Is there something missing from Alan’s project such that you cannot go back to it?

    Scott