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.

start callback failed when adding Power module

Other Parts Discussed in Thread: SYSBIOS, OMAP-L138

Hi,

I am able to run the example (ex02_messageq) provided in the examples folder. However when I try to add support for Power module by adding the following in cfg file I get an error

Main_main : start callback failed

CFG file additions :

var BIOS = xdc.useModule('ti.sysbios.BIOS');
BIOS.libType = BIOS.LibType_NonInstrumented;
var Power = xdc.useModule('ti.sysbios.family.c674.Power');
Power.idleCpu = true;
Power.trackResources = true;Program.sectMap[".text"] = "IRAM";
Program.sectMap[".far"] = "IRAM";
Program.sectMap[".bss"] = "IRAM";
Program.sectMap[".vecs"] = "IRAM";
Program.sectMap[".rodata"] = "IRAM";
Program.sectMap[".neardata"] = "IRAM";

void Power_idleStopClock(void) with call to _PMI_do_Idle is added to main_dsp.c

BIO version : 6_33_05_46

IPC : 1_24_03_53

XDC : 3_23_03_53

Any pointers to why the start callback fails on adding Power Module support

Thanks,

-Vikas Sharma

  • Can you describe what you are doing in the start callback?

    And what do you see when you say fail? CPU in the weeds?

    Judah

  • Hi Judah,

    I ended up compling our application again with the following and I do not have any issue regarding

    the start callback. it seems to occur only with example code.

    bios_6_33_05_46 
    ipc_1_24_03_32 
    xdctools_3_23_03_53

    I do have Questions regarding Power Module 

    Following changes are made to cfg file
     

    var Power = xdc.useModule('ti.sysbios.family.c674.Power');

    Power.idleCpu = true;
    Power.trackResources = true;
    Power.onChipRegion = "IRAM";
    Power.enableScaling = false;
    Power.pmiControlLib = Power.pmiLib_null;
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
     

    and have added the following function in our code

     

    void Power_idleStopClock(void)

    {
    _PMI_doIdle();
    }

    Are the above sufficient to have the DSP sleep during idle. I am not sure about it as

    a.there is no call to Hwi_disable();

    b.Not sure what pmi or pscl library to use (For C674x /L138)

    c. I am not changing the PDCCMD register.

    Any help will be appreciated as I ahve been struggling eith this issue as per the post below

     

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/295917.aspx


    -Vikas Sharma

  • Vikas,

    If you are setting “Power.idleCpu = true;” then the Power module will automatically plug a function into the idle loop for you.  So you don’t need to add your own idle function as you indicate you have.

    Regarding your specific questions:

    a) Why do you see it as an issue that there is no call to Hwi_disable()?

    b) The PMI and PSCL library selection will depend on the hardware you are running on.  We provide pre-built libraries for some standard development boards.  Along with all the sources if you need to port these libraries to your own hardware.  What hardware are you using?

    c) If you are just idling the CPU then you don’t need to touch the PDCCMD register.  What level of CPU power down are you attempting?

    Also, have you looked thru this wiki page that Mukul pointed to on that other forum thread? http://processors.wiki.ti.com/index.php/Power_Module_for_C6748_and_OMAP-L138

    Thanks,
    Scott

  • Hi Scott,

    We are using OMAP-L138.Could you please let me know which PMI and PSCL library I should use

    As far as CPU power down is concerned  we would like to get the most power reduction and from what I understand we could  do the following  (please correct me if I am wrong):

    a. Implement the  c674x Megamodule as per section 9.2.5 (SPRUFK5A) .

    b. idle the CPU using the Power.idle.CPU

    c. Using sleep Mode as per the document Mukul and you have pointed to. 

    d. C674x Megamodule clock off (section 10.7.4.1) of SPRUH7A

    I have tried the (a) and (b) above and with (b) we do get some degree of power reduction. Implementing (a) did not give any power reduction.

    Thanks,

    -Vikas

  • Hi Vikas,

    What *board* are you using the L138 device on?  Is it a custom board, or a TI development board?  Communication with the voltage regulator is board-specific, that is why I am asking.  We provide pre-built libraries for the evm6748 board (that takes SOM modules with either C6748 or OMAP-L138 devices), and the LCDK board. We provide full sources for the PMI and PSCL libraries so customers can port them to their own custom boards and regulator configurations.

    The level of power savings you can attempt will depend on your application requirements.  Have you looked at Chapter 9 of the OMAP-L138 reference guide (http://www.ti.com/lit/ug/spruh77a/spruh77a.pdf)?  This has power management information specific to the OMAP-L138 device.  

    The best power savings will be “Deep Sleep” mode (section 9.7), but depending on your application and latency requirements, this might not be applicable.  The SYS/BIOS Power module supports three different sleep modes, including deep sleep.  There are some examples exercising these modes on that wiki page, here: http://processors.wiki.ti.com/index.php/Power_Module_for_C6748_and_OMAP-L138#Examples

    Hope this helps.  I was forwarded an internal email from your FAE.  If after looking at the reference guide it is still unclear which power down options are available, and which are applicable to your particular application, it might be best to follow up with him directly…

    Regards,
    Scott