summaryrefslogtreecommitdiff
path: root/lib/FreeRTOS
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-05-17 17:29:43 +0700
committerhathach <[email protected]>2018-05-17 17:30:19 +0700
commitcb40a7bfd023c5d285158e137d6ad52a05d057c8 (patch)
tree11f5711b32943dcf3897eb7c9218dc115059a428 /lib/FreeRTOS
parent6528460563ddf160d45562cd6807ec941dc57968 (diff)
adding static API for freeRTOS
add vApplicationGetIdleTaskMemory(), vApplicationGetTimerTaskMemory()
Diffstat (limited to 'lib/FreeRTOS')
-rw-r--r--lib/FreeRTOS/freertos_hook.c65
1 files changed, 53 insertions, 12 deletions
diff --git a/lib/FreeRTOS/freertos_hook.c b/lib/FreeRTOS/freertos_hook.c
index 6672f72bf..d96c0a669 100644
--- a/lib/FreeRTOS/freertos_hook.c
+++ b/lib/FreeRTOS/freertos_hook.c
@@ -43,18 +43,7 @@
#include "task.h"
#include "common/tusb_common.h"
-//#include "board.h"
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-
-//--------------------------------------------------------------------+
-// INTERNAL OBJECT & FUNCTION DECLARATION
-//--------------------------------------------------------------------+
-//--------------------------------------------------------------------+
-// IMPLEMENTATION
-//--------------------------------------------------------------------+
void vApplicationMallocFailedHook(void)
{
taskDISABLE_INTERRUPTS();
@@ -75,5 +64,57 @@ void vApplicationStackOverflowHook(xTaskHandle pxTask, signed char *pcTaskName)
TU_ASSERT(false, );
}
+/* configSUPPORT_STATIC_ALLOCATION is set to 1, so the application must provide an
+ * implementation of vApplicationGetIdleTaskMemory() to provide the memory that is
+ * used by the Idle task. */
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )
+{
+ /* If the buffers to be provided to the Idle task are declared inside this
+ * function then they must be declared static - otherwise they will be allocated on
+ * the stack and so not exists after this function exits. */
+ static StaticTask_t xIdleTaskTCB;
+ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
+
+ /* Pass out a pointer to the StaticTask_t structure in which the Idle task's
+ state will be stored. */
+ *ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
+
+ /* Pass out the array that will be used as the Idle task's stack. */
+ *ppxIdleTaskStackBuffer = uxIdleTaskStack;
+
+ /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.
+ Note that, as the array is necessarily of type StackType_t,
+ configMINIMAL_STACK_SIZE is specified in words, not bytes. */
+ *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
+}
+
+/* configSUPPORT_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the
+ * application must provide an implementation of vApplicationGetTimerTaskMemory()
+ * to provide the memory that is used by the Timer service task. */
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )
+{
+ /* If the buffers to be provided to the Timer task are declared inside this
+ * function then they must be declared static - otherwise they will be allocated on
+ * the stack and so not exists after this function exits. */
+ static StaticTask_t xTimerTaskTCB;
+ static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
+
+ /* Pass out a pointer to the StaticTask_t structure in which the Timer
+ task's state will be stored. */
+ *ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
+
+ /* Pass out the array that will be used as the Timer task's stack. */
+ *ppxTimerTaskStackBuffer = uxTimerTaskStack;
+
+ /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.
+ Note that, as the array is necessarily of type StackType_t,
+ configTIMER_TASK_STACK_DEPTH is specified in words, not bytes. */
+ *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
+}
+
+
// executes from within an ISR
-void vApplicationTickHook(void) {}
+void vApplicationTickHook(void)
+{
+
+}