[Add] First commit
This commit is contained in:
122
RTOS/FreeRTOS/include/freertos_tasks_c_additions.h
Normal file
122
RTOS/FreeRTOS/include/freertos_tasks_c_additions.h
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* 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
|
||||
Reference in New Issue
Block a user