Developer Portal Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    STACK OVERFLOW error when using freeRTOS

    Stallion
    Member

    STACK OVERFLOW error when using freeRTOS

    Hi All,

    I am trying to run the task template found here: https://developer.bosch.com/web/xdk/tasks

    Initially it was working fine, then I tried to change the 'myTaskFunction' as follows:

    void pParameters;

         for (int i = 0 ; i < 2 ; i ++){

                printf("Task fired\n\r");

                vTaskDelay(3000)

        }

    This printed once, then I recieved a stackoverflow error. I then deleted this and i'm trying to run the template as is, without modifying the code, and I am recieving the following in the console:

    INFO | Connecting to XDK device 'XDK Device 1' in port 'COM5'...
    INFO | Connection to port 'COM5' established
    INFO | XDK DEVICE 1: Task fired
    INFO | XDK DEVICE 1: ----- STACK OVERFLOW -----Task Name:My Task-----Current Task Handle:0x200044e8
    ERROR | Exception occured: Timeout: Ready Response took longer than 10000 ms
    at com.bosch.cds.xdk.io.device.XdkDevice.waitForReadyResponse(XdkDevice.java:392) at com.bosch.cds.xdk.io.device.XdkDevice.flashViaSerial(XdkDevice.java:354)

    I thought the stack would be reset each time the task is created, therefore it should be reset by running the project, however this did not happen. The things I have done to try and fix this error are:

    - Power cycle the XDK and cycle the project to try and fix it.

    - Run the template in a different project

    - Close XDK-Workbench and reopen

    - Restart my computer (I know, I didnt expect this to fix it either)

    None of these worked. I tried running a different project template that doesn't use freeRTOS, and that worked fine. Any tips on how I can fix this problem?

    Thanks 

    Stallion

     

     

     

    1 REPLY 1
    LlobetAtWork
    Long-established Member

    Re: STACK OVERFLOW error when using freeRTOS

    Hi Stallion,

    task functions work in FreeRTOS as an infinite loop (or at least, you should not exit the stack area alloted to the instance of the task executing function) and it looks like the code will step out of the function after completing the loops i==0 and i==1. FreeRTOS does not have automatic resource handling, so if the task was not deleted or stopped, the task will continue to step into unknown territory. 

    Best regards,

    Francisco

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist