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.

CCS/CC1310: Throughput in an async data exchange communication

Part Number: CC1310

Tool/software: Code Composer Studio

Hello, my goal is to transfer a certain quantity of data (say 128kbyte) on the wireless link using a cycle represented in the simplified (I've omitted all the controls, but trust me, I've added all the controls i could):

So:

- send a command asking for data (fires event on the top)

- Send the data and callback to DataCallback. The call back starts the async data rx:

- When a receive is reached, handle the data (i.e. write on external flash memory) and send another request.

Data packets are small (19 chars on my protocol)

This works perfectly and smoothly for hours if I have 1 packet every 5 seconds. It seems to work with a rate up to 2 packets per seconds, but as I try quicker (i.e. 8 packets per seconds) the board hangs in weird and unpredictble manner, after a certian number of data exchanges (about 15 if I add a delay on the cycle of about 125 ms, about 28 if delaly is around 350 ms)

- sometimes no more breakpoint is hit on the code. If I pause is stuck in Void Hwi_excHandler(UInt *excStack, UInt lr)  [hwi.c]

- sometimes EasyLink_transmitAsync returns EasyLink_Status_Tx_Error.

I'm using SDK 2.20.0.38, CCS 9, Easylink.

I've tried using an external delay (Task_sleep...) or adding time to easyLinkTxPacket.absTime, or using easyLinkTxPacket.absTime=0.

I've tried EasyLink_abort() in case of transmission error but it hangs.

Any suggestion?

  • Digging over and over, I've found that is stuck into Hwi_excHandler

    which seems to be a problem seen here

    So I've turned on the ROV, but it says:

    So, I've changed the configuration file as shown here: 

    /* ================ Hwi configuration ================ */
    var halHwi = xdc.useModule('ti.sysbios.hal.Hwi');
    var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
    /*
     * Checks for Hwi (system) stack overruns while in the Idle loop.
     *
     * Pick one:
     *  - true (default)
     *      Checks the top word for system stack overflows during the idle loop and
     *      raises an Error if one is detected.
     *  - false
     *      Disabling the runtime check improves runtime performance and yields a
     *      reduced flash footprint.
     */
    //halHwi.checkStackFlag = true;
    halHwi.checkStackFlag = false;
    
    /*
     * The following options alter the system's behavior when a hardware exception
     * is detected.
     *
     * Pick one:
     *  - Hwi.enableException = true
     *      This option causes the default m3Hwi.excHandlerFunc function to fully
     *      decode an exception and dump the registers to the system console.
     *      This option raises errors in the Error module and displays the
     *      exception in ROV.
     *  - Hwi.enableException = false
     *      This option reduces code footprint by not decoding or printing the
     *      exception to the system console.
     *      It however still raises errors in the Error module and displays the
     *      exception in ROV.
     *  - Hwi.excHandlerFunc = null
     *      This is the most aggressive option for code footprint savings; but it
     *      can difficult to debug exceptions. It reduces flash footprint by
     *      plugging in a default while(1) trap when exception occur. This option
     *      does not raise an error with the Error module.
     */
    m3Hwi.enableException = true;

    But... ROV does not suggest anything new.

    Any suggestion?

  • Hello Marco,

    I have assigned some experts to comment, but please be patient as answers might be prolonged during these times.

  • The first thing you need to do is to update to the latest SDK and perform the tests over again :-)

    The SDK you are using is almost 2 years old.

    BR

    Siri

  • Even if I could not find out what was the exception during the packet exchange I've found what the issue was. 

    The task calling for the async packet send was busy for a long time after data send, so there was an overlap and this was a possible issue:

      

    Best regards!