We noticed subject in real application but because we can't share code I reproduced problem with just hello_world example for FreeRTOS: #include <stdlib.h> #include <kernel/dpl/DebugP.h> #include "ti_drivers_config.h" #include "ti_drivers_config.h" #include "ti_drivers_open_close.h" #include "ti_board_open_close.h" #include "ti_board_config.h" #include "FreeRTOS.h" #include "task.h" #define INIT_TASK_PRIORITY (configMAX_PRIORITIES-1) #define MAIN_TASK_SIZE (16384U/sizeof(configSTACK_DEPTH_TYPE)) StackType_t gMainTaskStack[MAIN_TASK_SIZE] __attribute__((aligned(32))); StaticTask_t gMainTaskObj; TaskHandle_t gMainTask; void Initialization(void *args); void TriggerReset(void); void TriggerReset(void) { CacheP_wbInvAll(CacheP_TYPE_L1P); CacheP_wbInvAll(CacheP_TYPE_L1D); SOC_rcmR5SS0TriggerReset(); while(true) { } } void StarterTask(void *args) { Initialization(NULL); vTaskDelete(NULL); } int main(void) { // TriggerReset(); // Here it works and resets CPU /* init SOC specific modules */ System_init(); Board_init(); TriggerReset(); // Here it does not work and endlessly loops after SOC_rcmR5SS0TriggerReset was called /* This task is created at highest priority, it should create more tasks and then delete itself */ gMainTask = xTaskCreateStatic( StarterTask, /* Pointer to the function that implements the task. */ "freertos_main", /* Text name for the task. This is to facilitate debugging only. */ MAIN_TASK_SIZE, /* Stack depth in units of StackType_t typically uint32_t on 32b CPUs */ NULL, /* We are not using the task parameter. */ INIT_TASK_PRIORITY, /* task priority, 0 is lowest priority, configMAX_PRIORITIES-1 is highest */ gMainTaskStack, /* pointer to stack base */ &gMainTaskObj ); /* pointer to statically allocated task object memory */ configASSERT(gMainTask != NULL); /* Start the scheduler to start the tasks executing. */ vTaskStartScheduler(); /* The following line should never be reached because vTaskStartScheduler() will only return if there was not enough FreeRTOS heap memory available to create the Idle and (if configured) Timer tasks. Heap management, and techniques for trapping heap exhaustion, are described in the book text. */ DebugP_assertNoLog(0); return 0; } void Initialization(void *args) { /* Open drivers to open the UART driver for console */ Drivers_open(); Board_driversOpen(); DebugP_log("Hello World!\r\n"); Board_driversClose(); Drivers_close(); } Syscfg file is same as in original example. I'm using most resent TI SDK (mcu_plus_sdk_am263x_09_00_00_35 ) and SysConfig 1.17. Can you please advise how to make it working?