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.

CC3100MOD: sl_Start() sometimes take longer time.

Part Number: CC3100MOD
Other Parts Discussed in Thread: UNIFLASH, CC3200, CC3100

Hi Experts,

A customer has ported our SimpleLink to an MCU which controls CC3100MOD.
At the system starting, sl_Start() API is called.

They found that some times the wake up time takes 4 sec.
After their investigation, sl_Start() takes sometimes longer.

Could you please share the possible reasons for the time of the variation for sl_Start()?

SimpleLInk version is 1.1.0.

Each version shown in "device.h" for SimpleLink is as follows:

Data name

Value

RomVersion

0x3333

NwpVersion[0]

0x00000200

NwpVersion[1]

0x00000200

NwpVersion[2]

0x00000000

NwpVersion[3]

0x00000100

ChipId

0x00040000

FwVersion[0]

0x00000100

FwVersion[1]

0x00000200

FwVersion[2]

0x00000000

FwVersion[3]

0x00000200

PhyVersion[0]

0x00

PhyVersion[1]

0x01

PhyVersion[2]

0x17

PhyVersion[3]

0x03

Thank you for your kind advice.
Best regards,
Hitoshi

  • Hi Hitoshi Sugawara,

    1. What servicepack is flashed to the CC3100MOD?
    2. Is the application using a RTOS? Is there an interrupt or high priority thread on the MCU that is blocking the execution of the SimpleLink task?

    Best regards,

    Sarah

  • Hi Sarah,

    1.Could you please how to check the version for the service pack?
       Device.h shows versions.

    2) NO RTOS used. 
        A customer says that sl_Start() API is used for the blocking.

    I hope you could understand the meaning of "blocking."

    Thank you for your help.
    Best regards,
    Hitoshi

  • Hi Hitoshi,

    1) Those defines are not a valid servicepack version (i.e. 1.0.1.15-2.13.0.2). The servicepack should be in your customer's UniFlash project, or you can retrieve the version from the application by using the following code:

    SlVersionFull   ver = {0};
    unsigned char ucConfigOpt = 0;
    unsigned char ucConfigLen = 0;
    ucConfigOpt = SL_DEVICE_GENERAL_VERSION;
    ucConfigLen = sizeof(ver);
    lRetVal = sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION, &ucConfigOpt, 
                                    &ucConfigLen, (unsigned char *)(&ver));
    
    ASSERT_ON_ERROR(lRetVal);
        
    printf("Host Driver Version: %s\n\r",SL_DRIVER_VERSION);
    printf("Build Version %d.%d.%d.%d.%d.%d.%d.%d.%d.%d.%d.%d\n\r",
        ver.NwpVersion[0],ver.NwpVersion[1],ver.NwpVersion[2],ver.NwpVersion[3],
        ver.ChipFwAndPhyVersion.FwVersion[0],ver.ChipFwAndPhyVersion.FwVersion[1],
        ver.ChipFwAndPhyVersion.FwVersion[2],ver.ChipFwAndPhyVersion.FwVersion[3],
        ver.ChipFwAndPhyVersion.PhyVersion[0],ver.ChipFwAndPhyVersion.PhyVersion[1],
        ver.ChipFwAndPhyVersion.PhyVersion[2],ver.ChipFwAndPhyVersion.PhyVersion[3]);

    2) I'm not sure what you mean by sl_Start() is used for blocking. Can you debug and step through sl_Start() to determine where it takes a long time?

    Best regards,

    Sarah

  • Hi Sarah,

    1) The customer will check the version of the service pack.

    2) 
       The point is in the sl_Start() in device.c from SimpleLink1.1.10.
       OSI_RET_OK_CHECK(sl_SyncObjWait(&g_pCB->ObjPool[ObjIdx].SyncObj, SL_OS_WAIT_FOREVER));
       A while loop in _SlNonOsSemGet() in nonos.c

       in addition, the blocking means that it is described in the CC3100/CC3200 SimpleLink User's guide (SWRU368B) page 21.
       

       Blocking – pInitCallBack must be set to NULL. The calling application is blocked until the entire
       initialization process completes (upon receiving the Init complete interrupt). See the following code
       example:
       if( sl_Start(NULL, NULL, NULL) == 0)
       {
         LOG("Error opening interface to device\n");
       }

    Hope it helps for your investigation.
    Best regards,
    Hitoshi



  • Hi Hitoshi,

    Thank you for the explanation. That should be fine.

    The next step I recommend is testing with the latest servicepack version 1.0.1.14-2.12.2.8: https://www.ti.com/tool/download/CC3100SDK. If you continue to see the issue with that servicepack, your customer should capture NWP logs.

    Best regards,

    Sarah

  • Hi Sarah,

    After the latest servicepack was programmed, the time of sl_Start() finishes faster.
    Thank you for your suggestion.

    A customer would like to know the reason.
    Could you please let us know the reason why it runs faster after the servicepack is updated?

    Here is the version info. by sl_DevGet as follows:

    ChipID:0x3000003

    FwVersion[0]:0x00000001

    FwVersion[1]:0x00000003

    FwVersion[2]:0x00000004

    FwVersion[3]:0x00000001

    PhyVersion[0]:0x01

    PhyVersion[1]:0x05

    PhyVersion[2]:0x03

    PhyVersion[3]:0x22

    NwpVersion[0]:0x00000002

    NwpVersion[1]:0x00000004

    NwpVersion[2]:0x00000007

    NwpVersion[3]:0x00000002

    RomVersion:0x2222

    Best regards,
    Hitoshi

  • Hi Hitoshi,

    There are few possible reasons.

    • The servicepack version may not have been fully compatible with the host driver version. The customer must always check the SDK release notes to be sure they are using the required servicepack version or newer.
    • There may have been a bug fix in the servicepack that solved an error internal to the network processor. This is why we suggest customers update and test with the latest servicepack whenever possible.

    Best regards,

    Sarah

  • Hi Sarah,

    Thank you so much for sharing the possible reasons.
    It helps us a lot.


    Best regards,
    Hitoshi