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.

RTOS/TMDSIDK437X: I can't see Led task in RTOS analyzer

Genius 5840 points
Part Number: TMDSIDK437X

Tool/software: TI-RTOS

Hello,

I am evaluating rtos_template_app_am437x_a9 in Processor SDK RTOS.

It runs properly on TMDSIDK437x by editting gpio configuration.

When I saw RTOS Analyzer result, I can't see gpio_toggle_led_task running in RTOS Analyzer in spite of EVM's led blinking.

And Running Percent of gpio_led_task is zero as following. 

Current .cfg file is as below.

3582.app.cfg

Are there any additional setting to solve this issue?

Regards,

U-SK

  • Hi,

    I saw your app.cfg doesn't have UIA modules inside, please check software-dl.ti.com/.../index_dsp_sw.html

    Regards, Eric
  • Hi Eric,

    Thank you for your reply.

    Sorry, I attached wrong file.

    Please confirm following file.

    /*
     * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * Redistributions of source code must retain the above copyright
     * notice, this list of conditions and the following disclaimer.
     *
     * Redistributions in binary form must reproduce the above copyright
     * notice, this list of conditions and the following disclaimer in the
     * documentation and/or other materials provided with the
     * distribution.
     *
     * Neither the name of Texas Instruments Incorporated nor the names of
     * its contributors may be used to endorse or promote products derived
     * from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     * THEORY OF LIABILITY, 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.
     *
     */
    /**
     *
     *  \brief  Sysbios config file for Multi peripheral application
     *
     */
    /* ================ General XDC configuration ================ */
    var Defaults = xdc.useModule('xdc.runtime.Defaults');
    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Error = xdc.useModule('xdc.runtime.Error');
    var Log = xdc.useModule('xdc.runtime.Log');
    var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
    var Main = xdc.useModule('xdc.runtime.Main');
    var SysMin = xdc.useModule('xdc.runtime.SysMin');
    var System = xdc.useModule('xdc.runtime.System');
    var Text = xdc.useModule('xdc.runtime.Text');
    
    /* ================ General sysbios configuration ================ */
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
    var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    
    /* ================ Specific sysbios configuration ================ */
    /*
     * The BIOS module will create the default heap for the system.
     * Specify the size of this default heap:
     * This depends on the dynamic memory allocated in the system 
     * See the SYSBIOS user guide for details about optimizing the size 
     * for a given application
     */
    BIOS.heapSize = 0xA0000;
    
    /* Enable SemiHost support */
    var SemiHost = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');
    
    /*
     * Program.argSize sets the size of the .args section.
     * The examples don't use command line args so argSize is set to 0.
     */
    /* Program.argSize = 0x0; */
    
    /*
     * Uncomment this line to globally disable Asserts.
     * All modules inherit the default from the 'Defaults' module.  You
     * can override these defaults on a per-module basis using Module.common$.
     * Disabling Asserts will save code space and improve runtime performance.
    Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;
     */
    
    /*
     * Following line to keep module names from being loaded on the target.
     * The module name strings are placed in the .const section. Setting this
     * parameter to false will save space in the .const section.  Error and
     * Assert messages will contain an "unknown module" prefix instead
     * of the actual module name.
     */
    Defaults.common$.namedModule = false;
    
    /*
     * Minimize exit handler array in System.  The System module includes
     * an array of functions that are registered with System_atexit() to be
     * called by System_exit().
     */
    System.maxAtexitHandlers = 4;
    
    /*
     * Uncomment this line to disable the Error print function.
     * We lose error information when this is disabled since the errors are
     * not printed.  Disabling the raiseHook will save some code space if
     * your app is not using System_printf() since the Error_print() function
     * calls System_printf().
    Error.raiseHook = null;
     */
    
    /*
     * Following line to keep Error, Assert, and Log strings from being
     * loaded on the target.  These strings are placed in the .const section.
     * Setting this parameter to false will save space in the .const section.
     * Error, Assert and Log message will print raw ids and args instead of
     * a formatted message.
     */
    Text.isLoaded = false;
    
    /*
     * Following line to disable the output of characters by SysMin
     * when the program exits.  SysMin writes characters to a circular buffer.
     * This buffer can be viewed using the SysMin Output view in ROV.
     */
    SysMin.flushAtExit = false;
    
    /* Circular buffer size for System_printf() 
     * This depends on the amount of System_printf history data needed.
     */
    SysMin.bufSize = 0x200;
    System.SupportProxy = SysMin;
    
    /*
     * Create and install logger for the whole system
     */
    var loggerBufParams = new LoggerBuf.Params();
    loggerBufParams.numEntries = 16;
    var logger0 = LoggerBuf.create(loggerBufParams);
    Defaults.common$.logger = logger0;
    Main.common$.diags_INFO = Diags.ALWAYS_ON;
    
    /* ================ SOC and Core specific configuration ================*/
    var socType           = "am437x";
    
    /* ================ Low level drivers configuration ================ */
    /* Load the Osal package */
    var osType           = "tirtos";
    var Osal             = xdc.loadPackage('ti.osal');
    Osal.Settings.osType = osType;
    
    /*use CSL package*/
    var Csl = xdc.loadPackage('ti.csl');
    Csl.Settings.deviceType = socType;
    
    /* Load the i2c package */
    var I2c = xdc.loadPackage('ti.drv.i2c');
    I2c.Settings.socType = socType;
    
    /* Load the uart package */
    var Uart              = xdc.loadPackage('ti.drv.uart');
    Uart.Settings.socType = socType;
    
    /* Load the gpio package */
    var Gpio = xdc.loadPackage('ti.drv.gpio');
    Gpio.Settings.socType = socType;
    
    /* Load the SPI package */
    var Spi = xdc.loadPackage('ti.drv.spi');
    Spi.Settings.socType = socType;
    
    /* Add additional drivers if needed here */
    
    
    /* ================ Cache and MMU configuration ================ */
    var Cache = xdc.useModule('ti.sysbios.family.arm.a9.Cache');
    /* NOTE: A9 uses the same MMU HW as A8 */
    var Mmu = xdc.useModule('ti.sysbios.family.arm.a8.Mmu');
    
    /* NOTE: The following statements enable cache and MMU
       and they are needed to enhance performance */
    /* Enable the cache                                                           */
    Cache.enableCache = true;
    
    /* Enable the MMU (Requir
    ed for L1 data caching)                              */
    Mmu.enableMMU = true;
    
    /* Configure MMU attributes:
     * See details of parameters in ti.sysbios.family.arm.a8.MMU API manual.
     * ( Part of SYSBIOS release documentation).
     */
    /* Force peripheral section to be NON cacheable strongly-ordered memory */
    var peripheralAttrs = {
        type : Mmu.FirstLevelDesc_SECTION, /* SECTION descriptor */
        tex: 0,
        bufferable : false,                /* not bufferable */
        cacheable  : false,                /* not cacheable */
        shareable  : false,                /* not shareable */
        noexecute  : true,                 /* not executable */
    };
    
    /* Define the base address of the 1 Meg page */
    /* the peripheral resides in. */
    var peripheralBaseAddr = 0x44DF2800;
    
    /* Configure the corresponding MMU page descriptor accordingly */
    Mmu.setFirstLevelDescMeta(peripheralBaseAddr,
                              peripheralBaseAddr,
                              peripheralAttrs);
    
    /* Load the application specific config file */
    xdc.loadCapsule("app.cfg");
    LoggingSetup.sysbiosSwiLogging = true;
    LoggingSetup.sysbiosHwiLogging = true;
    LoggingSetup.sysbiosSemaphoreLogging = true;
    LoggingSetup.enableTaskProfiler = true;
    LoggingSetup.enableContextAwareFunctionProfiler = true;
    LoggingSetup.sysbiosLoggerSize = 524288;
    

    Regards,

    U-SK

  • Hi Eric,

    Do you have any updates about my question?
    Regards,

    U-SK
  • Hi,

    We have one tested for AM335x, this should work for AM437x as well. Please see the attached one up to line 150 (after that is AM335x driver/MMU/cache setup, you can use what you have for AM437x).7848.am335x_app_bbbam335x.cfg

    Regards, Eric