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