• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Embedded Software » BIOS » BIOS forum » Tasks Not Displaying in Outline window of SYS/BIOS
Share
BIOS
  • Forum
  • Announcements
Options
  • Subscribe via RSS

Tasks Not Displaying in Outline window of SYS/BIOS

Tasks Not Displaying in Outline window of SYS/BIOS

This question is answered
Mark Skidmore
Posted by Mark Skidmore
on Jun 07 2012 18:30 PM
Intellectual720 points

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.

Report Abuse
  • Reply
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
All Replies
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 07 2012 19:31 PM
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 08 2012 12:41 PM
    Intellectual720 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 08 2012 13:09 PM
    Suggested Answer
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 13 2012 13:00 PM
    Intellectual720 points

    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.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 13 2012 13:38 PM
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 13 2012 15:24 PM
    Intellectual720 points

    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?

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 13 2012 15:55 PM
    Genius14085 points

    "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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 13 2012 16:18 PM
    Intellectual720 points

    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?

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 13 2012 19:04 PM
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 14 2012 11:39 AM
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 14 2012 14:05 PM
    Intellectual720 points

    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_".

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 14 2012 14:15 PM
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 14 2012 15:18 PM
    Intellectual720 points

    Attached...

    Thanks for the continued effort.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Mark Skidmore
    Posted by Mark Skidmore
    on Jun 14 2012 16:00 PM
    Intellectual720 points

    Alan,

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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Alan DeMars
    Posted by Alan DeMars
    on Jun 14 2012 17:54 PM
    Verified Answer
    Verified by David Friedland
    Genius14085 points

    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

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
12
TI E2E™ Community
  • Support Forums
  • Blogs
  • Videos
  • Groups
  • Site Support & Feedback
  • Settings
TI E2E™ Community Groups
  • TI University Program
  • Make the Switch
  • Microcontroller Projects
  • Motor Drive & Control
Other Communities
  • Deyisupport
  • Designsomething.org
  • beagleboard.org
  • TI on Element 14
  • TI on TechXchangeSM
Other Technical & Support Resources
  • WEBENCH® Design Center
  • Product Information Centers
  • Technical Documents
  • TI Design Network
  • TI Technical Articles
  • TI Training

All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
embedded processors, along with software, tools and the industry’s largest sales/support staff.

© Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy Policy | Terms of Use