From a8650b99a33cd6fbc557748ef719e0229296676d Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Mon, 23 Oct 2023 14:50:41 +0530 Subject: [PATCH] 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 --- README.md | 2 +- .../cmake_example}/CMakeLists.txt | 4 +-- .../cmake_example}/main.c | 24 -------------- .../sample_configuration}/FreeRTOSConfig.h | 32 ++++++++++++++----- .../sample_configuration}/readme.md | 0 portable/template/portmacro.h | 3 ++ 6 files changed, 30 insertions(+), 35 deletions(-) rename {cmake_example => examples/cmake_example}/CMakeLists.txt (88%) rename {cmake_example => examples/cmake_example}/main.c (74%) rename {sample_configuration => examples/sample_configuration}/FreeRTOSConfig.h (94%) rename {sample_configuration => examples/sample_configuration}/readme.md (100%) diff --git a/README.md b/README.md index 2ef719972..c6633563f 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ See the readme file in the ```./portable``` directory for more information. - 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 88% rename from cmake_example/CMakeLists.txt rename to examples/cmake_example/CMakeLists.txt index 723012039..2bb317296 100644 --- a/cmake_example/CMakeLists.txt +++ b/examples/cmake_example/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15) 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 @@ target_include_directories(freertos_config ) # 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 d00aeae72..bf1717e95 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 vApplicationStackOverflowHook( TaskHandle_t xTask, ( 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 43282118f..32b75bc9d 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 96b400c15..4e4aa934d 100644 --- a/portable/template/portmacro.h +++ b/portable/template/portmacro.h @@ -38,6 +38,9 @@ typedef unsigned char UBaseType_t; #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