123 lines
3.7 KiB
C
123 lines
3.7 KiB
C
|
/*
|
||
|
* Copyright 2017-2019 NXP
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
*
|
||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||
|
*/
|
||
|
|
||
|
/* freertos_tasks_c_additions.h Rev. 1.3 */
|
||
|
#ifndef FREERTOS_TASKS_C_ADDITIONS_H
|
||
|
#define FREERTOS_TASKS_C_ADDITIONS_H
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#if (configUSE_TRACE_FACILITY == 0)
|
||
|
#error "configUSE_TRACE_FACILITY must be enabled"
|
||
|
#endif
|
||
|
|
||
|
#define FREERTOS_DEBUG_CONFIG_MAJOR_VERSION 1
|
||
|
#define FREERTOS_DEBUG_CONFIG_MINOR_VERSION 3
|
||
|
|
||
|
/* NOTE!!
|
||
|
* Default to a FreeRTOS version which didn't include these macros. FreeRTOS
|
||
|
* v7.5.3 is used here.
|
||
|
*/
|
||
|
#ifndef tskKERNEL_VERSION_BUILD
|
||
|
#define tskKERNEL_VERSION_BUILD 3
|
||
|
#endif
|
||
|
#ifndef tskKERNEL_VERSION_MINOR
|
||
|
#define tskKERNEL_VERSION_MINOR 5
|
||
|
#endif
|
||
|
#ifndef tskKERNEL_VERSION_MAJOR
|
||
|
#define tskKERNEL_VERSION_MAJOR 7
|
||
|
#endif
|
||
|
|
||
|
/* NOTE!!
|
||
|
* The configFRTOS_MEMORY_SCHEME macro describes the heap scheme using a value
|
||
|
* 1 - 5 which corresponds to the following schemes:
|
||
|
*
|
||
|
* heap_1 - the very simplest, does not permit memory to be freed
|
||
|
* heap_2 - permits memory to be freed, but not does coalescence adjacent free
|
||
|
* blocks.
|
||
|
* heap_3 - simply wraps the standard malloc() and free() for thread safety
|
||
|
* heap_4 - coalesces adjacent free blocks to avoid fragmentation. Includes
|
||
|
* absolute address placement option
|
||
|
* heap_5 - as per heap_4, with the ability to span the heap across
|
||
|
* multiple nonOadjacent memory areas
|
||
|
*/
|
||
|
#ifndef configFRTOS_MEMORY_SCHEME
|
||
|
#define configFRTOS_MEMORY_SCHEME 3 /* thread safe malloc */
|
||
|
#endif
|
||
|
|
||
|
#if ((configFRTOS_MEMORY_SCHEME > 5) || (configFRTOS_MEMORY_SCHEME < 1))
|
||
|
#error "Invalid configFRTOS_MEMORY_SCHEME setting!"
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
extern const uint8_t FreeRTOSDebugConfig[];
|
||
|
|
||
|
/* NOTES!!
|
||
|
* IAR documentation is confusing. It suggests the data must be statically
|
||
|
* linked, and the #pragma placed immediately before the symbol definition.
|
||
|
* The IAR supplied examples violate both "rules", so this is a best guess.
|
||
|
*/
|
||
|
|
||
|
#if (tskKERNEL_VERSION_MAJOR >= 10) && (tskKERNEL_VERSION_MINOR >= 2)
|
||
|
#if defined(__GNUC__)
|
||
|
char *const portArch_Name __attribute__((section(".rodata"))) = portARCH_NAME;
|
||
|
#elif defined(__CC_ARM) || defined(__ARMCC_VERSION)
|
||
|
char *const portArch_Name __attribute__((used)) = portARCH_NAME;
|
||
|
#elif defined(__IAR_SYSTEMS_ICC__)
|
||
|
char *const portArch_Name = portARCH_NAME;
|
||
|
#pragma required=portArch_Name
|
||
|
#endif
|
||
|
#else
|
||
|
char *const portArch_Name = NULL;
|
||
|
#endif // tskKERNEL_VERSION_MAJOR
|
||
|
|
||
|
#if defined(__GNUC__)
|
||
|
const uint8_t FreeRTOSDebugConfig[] __attribute__((section(".rodata"))) =
|
||
|
#elif defined(__CC_ARM) || defined(__ARMCC_VERSION)
|
||
|
const uint8_t FreeRTOSDebugConfig[] __attribute__((used)) =
|
||
|
#elif defined(__IAR_SYSTEMS_ICC__)
|
||
|
#pragma required=FreeRTOSDebugConfig
|
||
|
const uint8_t FreeRTOSDebugConfig[] =
|
||
|
#endif
|
||
|
{
|
||
|
FREERTOS_DEBUG_CONFIG_MAJOR_VERSION,
|
||
|
FREERTOS_DEBUG_CONFIG_MINOR_VERSION,
|
||
|
tskKERNEL_VERSION_MAJOR,
|
||
|
tskKERNEL_VERSION_MINOR,
|
||
|
tskKERNEL_VERSION_BUILD,
|
||
|
configFRTOS_MEMORY_SCHEME,
|
||
|
offsetof(struct tskTaskControlBlock, pxTopOfStack),
|
||
|
#if (tskKERNEL_VERSION_MAJOR > 8)
|
||
|
offsetof(struct tskTaskControlBlock, xStateListItem),
|
||
|
#else
|
||
|
offsetof(struct tskTaskControlBlock, xGenericListItem),
|
||
|
#endif
|
||
|
offsetof(struct tskTaskControlBlock, xEventListItem),
|
||
|
offsetof(struct tskTaskControlBlock, pxStack),
|
||
|
offsetof(struct tskTaskControlBlock, pcTaskName),
|
||
|
offsetof(struct tskTaskControlBlock, uxTCBNumber),
|
||
|
offsetof(struct tskTaskControlBlock, uxTaskNumber),
|
||
|
configMAX_TASK_NAME_LEN,
|
||
|
configMAX_PRIORITIES,
|
||
|
configENABLE_MPU,
|
||
|
configENABLE_FPU,
|
||
|
configENABLE_TRUSTZONE,
|
||
|
configRUN_FREERTOS_SECURE_ONLY,
|
||
|
0, // 32-bit align
|
||
|
0, 0, 0, 0 // padding
|
||
|
};
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // FREERTOS_TASKS_C_ADDITIONS_H
|