Update example cmake project path (#851)
* fix build on 64 bit platform
* moving sample cmake project to a separate root level dir
* moving sample cmake project to a separate root level dir
* updating paths for the sample cmake project
* rename example folder
* use configKERNEL_PROVIDED_STATIC_MEMORY
* update comments
* update comments
* rename folder to examples
* fix formatting
diff --git a/README.md b/README.md
index 2ef7199..c663356 100644
--- a/README.md
+++ b/README.md
@@ -125,7 +125,7 @@
- The ```./include``` directory contains the real time kernel header files.
- The ```./sample_configuration``` directory contains a sample `FreeRTOSConfig.h` to help jumpstart a new project.
-See the [FreeRTOSConfig.h](sample_configuration/FreeRTOSConfig.h) file for instructions.
+See the [FreeRTOSConfig.h](examples/sample_configuration/FreeRTOSConfig.h) file for instructions.
### Code Formatting
diff --git a/cmake_example/CMakeLists.txt b/examples/cmake_example/CMakeLists.txt
similarity index 87%
rename from cmake_example/CMakeLists.txt
rename to examples/cmake_example/CMakeLists.txt
index 7230120..2bb3172 100644
--- a/cmake_example/CMakeLists.txt
+++ b/examples/cmake_example/CMakeLists.txt
@@ -2,7 +2,7 @@
project(example)
-set(FREERTOS_KERNEL_PATH "../")
+set(FREERTOS_KERNEL_PATH "../../")
# Add the freertos_config for FreeRTOS-Kernel
add_library(freertos_config INTERFACE)
@@ -13,7 +13,7 @@
)
# Select the heap port. values between 1-4 will pick a heap.
-# set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
+set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
# Select the native compile PORT
set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
diff --git a/cmake_example/main.c b/examples/cmake_example/main.c
similarity index 74%
rename from cmake_example/main.c
rename to examples/cmake_example/main.c
index d00aeae..bf1717e 100644
--- a/cmake_example/main.c
+++ b/examples/cmake_example/main.c
@@ -44,12 +44,6 @@
static StaticTask_t exampleTaskTCB;
static StackType_t exampleTaskStack[ configMINIMAL_STACK_SIZE ];
-static StaticTask_t xTimerTaskTCB;
-static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
-
-static StaticTask_t xIdleTaskTCB;
-static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
-
void exampleTask( void * parameters )
{
/* Unused parameters. */
@@ -91,21 +85,3 @@
( void ) xTask;
( void ) pcTaskName;
}
-
-void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer,
- StackType_t ** ppxTimerTaskStackBuffer,
- uint32_t * pulTimerTaskStackSize )
-{
- *ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
- *ppxTimerTaskStackBuffer = uxTimerTaskStack;
- *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
-}
-
-void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
- StackType_t ** ppxIdleTaskStackBuffer,
- uint32_t * pulIdleTaskStackSize )
-{
- *ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
- *ppxIdleTaskStackBuffer = uxIdleTaskStack;
- *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
-}
diff --git a/sample_configuration/FreeRTOSConfig.h b/examples/sample_configuration/FreeRTOSConfig.h
similarity index 94%
rename from sample_configuration/FreeRTOSConfig.h
rename to examples/sample_configuration/FreeRTOSConfig.h
index 4328211..32b75bc 100644
--- a/sample_configuration/FreeRTOSConfig.h
+++ b/examples/sample_configuration/FreeRTOSConfig.h
@@ -118,13 +118,21 @@
* human readable name. Includes the NULL terminator. */
#define configMAX_TASK_NAME_LEN 16
-/* The tick count is held in a variable of type TickType_t. Set
- * configUSE_16_BIT_TICKS to 1 to make TickType_t a 16-bit type. Set
- * configUSE_16_BIT_TICKS to 0 to make TickType_t either a 32 or 64-bit type
- * depending on the architecture. Using a 16-bit type can greatly improve
- * efficiency on 8-bit and 16-bit microcontrollers, but at the cost of limiting the
- * maximum specifiable block time to 0xffff. */
-#define configUSE_16_BIT_TICKS 0
+/* Time is measured in 'ticks' - which is the number of times the tick interrupt
+ * has executed since the RTOS kernel was started.
+ * The tick count is held in a variable of type TickType_t.
+ *
+ * configTICK_TYPE_WIDTH_IN_BITS controls the type (and therefore bit-width) of TickType_t:
+ *
+ * Defining configTICK_TYPE_WIDTH_IN_BITS as TICK_TYPE_WIDTH_16_BITS causes
+ * TickType_t to be defined (typedef'ed) as an unsigned 16-bit type.
+ *
+ * Defining configTICK_TYPE_WIDTH_IN_BITS as TICK_TYPE_WIDTH_32_BITS causes
+ * TickType_t to be defined (typedef'ed) as an unsigned 32-bit type.
+ *
+ * Defining configTICK_TYPE_WIDTH_IN_BITS as TICK_TYPE_WIDTH_64_BITS causes
+ * TickType_t to be defined (typedef'ed) as an unsigned 64-bit type. */
+#define configTICK_TYPE_WIDTH_IN_BITS TICK_TYPE_WIDTH_64_BITS
/* Set configIDLE_SHOULD_YIELD to 1 to have the Idle task yield to an
* application task if there is an Idle priority (priority 0) application task that
@@ -388,7 +396,15 @@
/* secureconfigMAX_SECURE_CONTEXTS define the maximum number of tasks that can
* call into the secure side of an ARMv8-M chip. Not used by any other ports. */
-#define secureconfigMAX_SECURE_CONTEXTS 5
+#define secureconfigMAX_SECURE_CONTEXTS 5
+
+/* Defines the kernel provided implementation of
+ * vApplicationGetIdleTaskMemory() and vApplicationGetTimerTaskMemory()
+ * to provide the memory that is used by the Idle task and Timer task respectively.
+ * The application can provide it's own implementation of
+ * vApplicationGetIdleTaskMemory() and vApplicationGetTimerTaskMemory() by
+ * setting configKERNEL_PROVIDED_STATIC_MEMORY to 0 or leaving it undefined. */
+#define configKERNEL_PROVIDED_STATIC_MEMORY 1
/******************************************************************************/
/* Definitions that include or exclude functionality. *************************/
diff --git a/sample_configuration/readme.md b/examples/sample_configuration/readme.md
similarity index 100%
rename from sample_configuration/readme.md
rename to examples/sample_configuration/readme.md
diff --git a/portable/template/portmacro.h b/portable/template/portmacro.h
index 96b400c..4e4aa93 100644
--- a/portable/template/portmacro.h
+++ b/portable/template/portmacro.h
@@ -38,6 +38,9 @@
#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
typedef uint32_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL
+#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_64_BITS )
+ typedef uint64_t TickType_t;
+ #define portMAX_DELAY ( TickType_t ) 0xffffffffffffffffULL
#else
#error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
#endif