-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Jarvis
committed
Oct 26, 2024
1 parent
5f31bb6
commit 69ea4cd
Showing
12 changed files
with
2,088 additions
and
1,004 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
#ifndef FREERTOS_CONFIG_H | ||
#define FREERTOS_CONFIG_H | ||
|
||
/* Ensure definitions are only used by the compiler, and not by the assembler. */ | ||
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) | ||
#include <stdint.h> | ||
extern uint32_t SystemCoreClock; | ||
#endif | ||
|
||
#define configUSE_PREEMPTION 1 | ||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 | ||
#define configUSE_TICKLESS_IDLE 0 | ||
#define configCPU_CLOCK_HZ SystemCoreClock | ||
#define configTICK_RATE_HZ 1000 | ||
#define configMAX_PRIORITIES 5 | ||
#define configMINIMAL_STACK_SIZE 128 | ||
#define configMAX_TASK_NAME_LEN 16 | ||
#define configUSE_16_BIT_TICKS 0 | ||
#define configIDLE_SHOULD_YIELD 1 | ||
#define configUSE_TASK_NOTIFICATIONS 1 | ||
#define configUSE_MUTEXES 1 | ||
#define configUSE_RECURSIVE_MUTEXES 1 | ||
#define configUSE_COUNTING_SEMAPHORES 1 | ||
#define configQUEUE_REGISTRY_SIZE 10 | ||
#define configUSE_QUEUE_SETS 0 | ||
#define configUSE_TIME_SLICING 0 | ||
#define configUSE_NEWLIB_REENTRANT 0 | ||
#define configENABLE_BACKWARD_COMPATIBILITY 1 | ||
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5 | ||
#define configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY 1 | ||
#define configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS 1 | ||
|
||
/* Memory allocation related definitions. */ | ||
#define configSUPPORT_STATIC_ALLOCATION 0 | ||
#define configSUPPORT_DYNAMIC_ALLOCATION 1 | ||
#define configTOTAL_HEAP_SIZE 10240 | ||
#define configAPPLICATION_ALLOCATED_HEAP 0 | ||
|
||
/* Hook function related definitions. */ | ||
#define configUSE_IDLE_HOOK 0 | ||
#define configUSE_TICK_HOOK 0 | ||
#define configCHECK_FOR_STACK_OVERFLOW 2 | ||
#define configUSE_MALLOC_FAILED_HOOK 1 | ||
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0 | ||
|
||
/* Run time and task stats gathering related definitions. */ | ||
#define configGENERATE_RUN_TIME_STATS 0 | ||
#define configUSE_TRACE_FACILITY 0 | ||
#define configUSE_STATS_FORMATTING_FUNCTIONS 0 | ||
|
||
/* Co-routine related definitions. */ | ||
#define configUSE_CO_ROUTINES 0 | ||
#define configMAX_CO_ROUTINE_PRIORITIES 2 | ||
|
||
/* Software timer related definitions. */ | ||
#define configUSE_TIMERS 1 | ||
#define configTIMER_TASK_PRIORITY 3 | ||
#define configTIMER_QUEUE_LENGTH 10 | ||
#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE | ||
|
||
/* Interrupt nesting behaviour configuration. */ | ||
#define configKERNEL_INTERRUPT_PRIORITY \ | ||
(configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) | ||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY \ | ||
(configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) | ||
|
||
/* Define to trap errors during development. */ | ||
#define configASSERT(x) \ | ||
if ((x) == 0) { \ | ||
taskDISABLE_INTERRUPTS(); \ | ||
for (;;); \ | ||
} | ||
|
||
/* FreeRTOS MPU specific definitions. */ | ||
#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0 | ||
|
||
/* Optional functions - most linkers will remove unused functions anyway. */ | ||
#define INCLUDE_vTaskPrioritySet 1 | ||
#define INCLUDE_uxTaskPriorityGet 1 | ||
#define INCLUDE_vTaskDelete 1 | ||
#define INCLUDE_vTaskSuspend 1 | ||
#define INCLUDE_xResumeFromISR 1 | ||
#define INCLUDE_vTaskDelayUntil 1 | ||
#define INCLUDE_vTaskDelay 1 | ||
#define INCLUDE_xTaskGetSchedulerState 1 | ||
#define INCLUDE_xTaskGetCurrentTaskHandle 1 | ||
#define INCLUDE_uxTaskGetStackHighWaterMark 1 | ||
#define INCLUDE_xTaskGetIdleTaskHandle 0 | ||
#define INCLUDE_eTaskGetState 0 | ||
#define INCLUDE_xEventGroupSetBitFromISR 1 | ||
#define INCLUDE_xTimerPendFunctionCall 0 | ||
#define INCLUDE_xTaskAbortDelay 0 | ||
#define INCLUDE_xTaskGetHandle 0 | ||
#define INCLUDE_xTaskResumeFromISR 1 | ||
|
||
/* Cortex-M specific definitions. */ | ||
#ifdef __NVIC_PRIO_BITS | ||
/* __NVIC_PRIO_BITS will be specified when CMSIS is being used. */ | ||
#define configPRIO_BITS __NVIC_PRIO_BITS | ||
#else | ||
#define configPRIO_BITS 4 /* 15 priority levels */ | ||
#endif | ||
|
||
/* The lowest interrupt priority that can be used in a call to a "set priority" function. */ | ||
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf | ||
|
||
/* The highest interrupt priority that can be used by any interrupt service | ||
routine that makes calls to interrupt safe FreeRTOS API functions. */ | ||
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 | ||
|
||
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS | ||
standard names. */ | ||
#define vPortSVCHandler SVC_Handler | ||
#define xPortPendSVHandler PendSV_Handler | ||
#define xPortSysTickHandler SysTick_Handler | ||
|
||
#endif /* FREERTOS_CONFIG_H */ |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
/* | ||
* FreeRTOS Kernel <DEVELOPMENT BRANCH> | ||
* Copyright 2020 Cambridge Consultants Ltd. | ||
* | ||
* SPDX-License-Identifier: MIT | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
* this software and associated documentation files (the "Software"), to deal in | ||
* the Software without restriction, including without limitation the rights to | ||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | ||
* the Software, and to permit persons to whom the Software is furnished to do so, | ||
* subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice shall be included in all | ||
* copies or substantial portions of the Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | ||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | ||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
* | ||
* https://www.FreeRTOS.org | ||
* https://github.com/FreeRTOS | ||
* | ||
*/ | ||
|
||
#ifndef PORTMACRO_H | ||
#define PORTMACRO_H | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
#include <limits.h> | ||
|
||
/*----------------------------------------------------------- | ||
* Port specific definitions. | ||
* | ||
* The settings in this file configure FreeRTOS correctly for the | ||
* given hardware and compiler. | ||
* | ||
* These settings should not be altered. | ||
*----------------------------------------------------------- | ||
*/ | ||
|
||
/* Type definitions. */ | ||
#define portCHAR char | ||
#define portFLOAT float | ||
#define portDOUBLE double | ||
#define portLONG long | ||
#define portSHORT short | ||
#define portSTACK_TYPE unsigned long | ||
#define portBASE_TYPE long | ||
#define portPOINTER_SIZE_TYPE intptr_t | ||
|
||
typedef portSTACK_TYPE StackType_t; | ||
typedef long BaseType_t; | ||
typedef unsigned long UBaseType_t; | ||
|
||
typedef unsigned long TickType_t; | ||
#define portMAX_DELAY (TickType_t) ULONG_MAX | ||
|
||
#define portTICK_TYPE_IS_ATOMIC 1 | ||
|
||
/*-----------------------------------------------------------*/ | ||
|
||
/* Architecture specifics. */ | ||
#define portSTACK_GROWTH (-1) | ||
#define portHAS_STACK_OVERFLOW_CHECKING (1) | ||
#define portTICK_PERIOD_MS ((TickType_t)1000 / configTICK_RATE_HZ) | ||
#define portTICK_RATE_MICROSECONDS ((portTickType)1000000 / configTICK_RATE_HZ) | ||
#define portBYTE_ALIGNMENT 8 | ||
/*-----------------------------------------------------------*/ | ||
|
||
/* Scheduler utilities. */ | ||
extern void vPortYield(void); | ||
|
||
#define portYIELD() vPortYield() | ||
|
||
#define portEND_SWITCHING_ISR(xSwitchRequired) \ | ||
if (xSwitchRequired != pdFALSE) vPortYield() | ||
#define portYIELD_FROM_ISR(x) portEND_SWITCHING_ISR(x) | ||
/*-----------------------------------------------------------*/ | ||
|
||
/* Critical section management. */ | ||
extern void vPortDisableInterrupts(void); | ||
extern void vPortEnableInterrupts(void); | ||
#define portSET_INTERRUPT_MASK() (vPortDisableInterrupts()) | ||
#define portCLEAR_INTERRUPT_MASK() (vPortEnableInterrupts()) | ||
|
||
extern portBASE_TYPE xPortSetInterruptMask(void); | ||
extern void vPortClearInterruptMask(portBASE_TYPE xMask); | ||
|
||
extern void vPortEnterCritical(void); | ||
extern void vPortExitCritical(void); | ||
#define portSET_INTERRUPT_MASK_FROM_ISR() xPortSetInterruptMask() | ||
#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vPortClearInterruptMask(x) | ||
#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK() | ||
#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK() | ||
#define portENTER_CRITICAL() vPortEnterCritical() | ||
#define portEXIT_CRITICAL() vPortExitCritical() | ||
|
||
/*-----------------------------------------------------------*/ | ||
|
||
extern void vPortThreadDying(void *pxTaskToDelete, volatile BaseType_t *pxPendYield); | ||
extern void vPortCancelThread(void *pxTaskToDelete); | ||
#define portPRE_TASK_DELETE_HOOK(pvTaskToDelete, pxPendYield) \ | ||
vPortThreadDying((pvTaskToDelete), (pxPendYield)) | ||
#define portCLEAN_UP_TCB(pxTCB) vPortCancelThread(pxTCB) | ||
/*-----------------------------------------------------------*/ | ||
|
||
#define portTASK_FUNCTION_PROTO(vFunction, pvParameters) void vFunction(void *pvParameters) | ||
#define portTASK_FUNCTION(vFunction, pvParameters) void vFunction(void *pvParameters) | ||
/*-----------------------------------------------------------*/ | ||
|
||
/* | ||
* Tasks run in their own pthreads and context switches between them | ||
* are always a full memory barrier. ISRs are emulated as signals | ||
* which also imply a full memory barrier. | ||
* | ||
* Thus, only a compilier barrier is needed to prevent the compiler | ||
* reordering. | ||
*/ | ||
#define portMEMORY_BARRIER() __asm volatile("" ::: "memory") | ||
|
||
extern unsigned long ulPortGetRunTime(void); | ||
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() /* no-op */ | ||
#define portGET_RUN_TIME_COUNTER_VALUE() ulPortGetRunTime() | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* PORTMACRO_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* FreeRTOS Kernel <DEVELOPMENT BRANCH> | ||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
* | ||
* SPDX-License-Identifier: MIT | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
* this software and associated documentation files (the "Software"), to deal in | ||
* the Software without restriction, including without limitation the rights to | ||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | ||
* the Software, and to permit persons to whom the Software is furnished to do so, | ||
* subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice shall be included in all | ||
* copies or substantial portions of the Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | ||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | ||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
* | ||
* https://www.FreeRTOS.org | ||
* https://github.com/FreeRTOS | ||
* | ||
*/ | ||
|
||
#ifndef _WAIT_FOR_EVENT_H_ | ||
#define _WAIT_FOR_EVENT_H_ | ||
|
||
#include <stdbool.h> | ||
#include <time.h> | ||
|
||
struct event; | ||
|
||
struct event * event_create( void ); | ||
void event_delete( struct event * ); | ||
bool event_wait( struct event * ev ); | ||
bool event_wait_timed( struct event * ev, | ||
time_t ms ); | ||
void event_signal( struct event * ev ); | ||
|
||
|
||
|
||
#endif /* ifndef _WAIT_FOR_EVENT_H_ */ |
File renamed without changes.
Oops, something went wrong.