/* | |
* FreeRTOS Kernel V10.0.1 | |
* Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. | |
* | |
* 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. | |
* | |
* http://www.FreeRTOS.org | |
* http://aws.amazon.com/freertos | |
* | |
* 1 tab == 4 spaces! | |
*/ | |
#ifndef FREERTOS_CONFIG_H | |
#define FREERTOS_CONFIG_H | |
#include <stdint.h> | |
extern uint32_t SystemCoreClock; | |
/*----------------------------------------------------------- | |
* Application specific definitions. | |
* | |
* These definitions should be adjusted for your particular hardware and | |
* application requirements. | |
* | |
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE | |
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. | |
* http://www.freertos.org/a00110.html | |
* | |
* The bottom of this file contains some constants specific to running the UDP | |
* stack in this demo. Constants specific to FreeRTOS+UDP itself (rather than | |
* the demo) are contained in FreeRTOSIPConfig.h. | |
*----------------------------------------------------------*/ | |
#define configUSE_PREEMPTION 1 | |
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 | |
#define configUSE_TICKLESS_IDLE 0 | |
#define configMAX_PRIORITIES ( 7 ) | |
#define configCPU_CLOCK_HZ ( SystemCoreClock ) | |
#define configTICK_RATE_HZ 100 | |
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 300 ) | |
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 40 * 1024 ) ) /* Has not effect in this demo as the heap is manually pointed to AHB RAM. */ | |
#define configMAX_TASK_NAME_LEN ( 9 ) | |
#define configIDLE_SHOULD_YIELD 0 | |
#define configQUEUE_REGISTRY_SIZE 10 | |
#define configUSE_TRACE_FACILITY 1 | |
#define configUSE_16_BIT_TICKS 0 | |
#define configUSE_MUTEXES 1 | |
#define configUSE_CO_ROUTINES 0 | |
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) | |
#define configUSE_COUNTING_SEMAPHORES 1 | |
#define configUSE_ALTERNATIVE_API 0 | |
#define configUSE_RECURSIVE_MUTEXES 1 | |
/* Hook function related definitions. */ | |
#define configUSE_TICK_HOOK 0 | |
#define configUSE_IDLE_HOOK 0 | |
#define configUSE_MALLOC_FAILED_HOOK 1 | |
#define configCHECK_FOR_STACK_OVERFLOW 2 | |
/* Software timer related definitions. */ | |
#define configUSE_TIMERS 1 | |
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) | |
#define configTIMER_QUEUE_LENGTH 5 | |
#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE | |
/* Run time stats gathering definitions. */ | |
void vMainConfigureTimerForRunTimeStats( void ); | |
uint32_t ulMainGetRunTimeCounterValue( void ); | |
#define configGENERATE_RUN_TIME_STATS 1 | |
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() | |
#define portGET_RUN_TIME_COUNTER_VALUE() ulMainGetRunTimeCounterValue() | |
/* Set the following definitions to 1 to include the API function, or zero | |
to exclude the API function. */ | |
#define INCLUDE_vTaskPrioritySet 1 | |
#define INCLUDE_uxTaskPriorityGet 1 | |
#define INCLUDE_vTaskDelete 1 | |
#define INCLUDE_vTaskCleanUpResources 0 | |
#define INCLUDE_vTaskSuspend 1 | |
#define INCLUDE_vTaskDelayUntil 1 | |
#define INCLUDE_vTaskDelay 1 | |
#define INCLUDE_uxTaskGetStackHighWaterMark 1 | |
#define INCLUDE_xTimerGetTimerTaskHandle 0 | |
#define INCLUDE_xTaskGetIdleTaskHandle 0 | |
#define INCLUDE_xQueueGetMutexHolder 1 | |
/* This demo makes use of one or more example stats formatting functions. These | |
format the raw data provided by the uxTaskGetSystemState() function in to human | |
readable ASCII form. See the notes in the implementation of vTaskList() within | |
FreeRTOS/Source/tasks.c for limitations. */ | |
#define configUSE_STATS_FORMATTING_FUNCTIONS 1 | |
/* Assert statement defined for debug builds. */ | |
#ifdef DEBUG | |
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } | |
#endif | |
/* Interrupt priority configuration settings follow. | |
http://www.freertos.org/RTOS-Cortex-M3-M4.html */ | |
/* Use the system definition for the number of interrupt priorities, if there | |
is one */ | |
#ifdef __NVIC_PRIO_BITS | |
#define configPRIO_BITS __NVIC_PRIO_BITS | |
#else | |
#define configPRIO_BITS 3 /* 8 priority levels */ | |
#endif | |
/* The maximum priority an interrupt that uses an interrupt safe FreeRTOS API | |
function can have. Note that lower priority have numerically higher values. */ | |
#define configMAX_LIBRARY_INTERRUPT_PRIORITY ( 5 ) | |
/* The minimum possible interrupt priority. */ | |
#define configMIN_LIBRARY_INTERRUPT_PRIORITY ( 7 ) | |
/* The lowest priority. */ | |
#define configKERNEL_INTERRUPT_PRIORITY ( configMIN_LIBRARY_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) | |
/* Priority 5, or 248 as only the top five bits are implemented. */ | |
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configMAX_LIBRARY_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) | |
/* 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 | |
/* | |
* DEMO APPLICATION SPECIFIC DEFINITIONS FOLLOW FROM HERE | |
*/ | |
/* Set to 1 to include "trace start" and "trace stop" CLI commands. These | |
commands start and stop the FreeRTOS+Trace recording. */ | |
#define configINCLUDE_TRACE_RELATED_CLI_COMMANDS 0 | |
/* Dimensions a buffer that can be used by the FreeRTOS+CLI command | |
interpreter. See the FreeRTOS+CLI documentation for more information: | |
http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/ */ | |
#define configCOMMAND_INT_MAX_OUTPUT_SIZE 1024 | |
/* The priority used by the Ethernet MAC driver interrupt. */ | |
#define configMAC_INTERRUPT_PRIORITY ( configMAX_LIBRARY_INTERRUPT_PRIORITY ) | |
/* If configINCLUDE_DEMO_DEBUG_STATS is set to one, then a few basic IP trace | |
macros are defined to gather some UDP stack statistics that can then be viewed | |
through the CLI interface. See | |
http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/UDP_IP_Trace.shtml*/ | |
#define configINCLUDE_DEMO_DEBUG_STATS 1 | |
/* The LPC1830 Ethernet peripheral uses a DMA to transmit and receive packets. | |
The DMA uses a chain of descriptors to reference Ethernet buffers, and provide | |
information on the state of each buffer (full/empty/error/etc.). | |
configNUM_RX_ETHERNET_DMA_DESCRIPTORS defines the total number of receive | |
descriptors (descriptors that point to buffers into which the DMA will write | |
packets received from the network). An Ethernet buffer is assigned to each | |
descriptor. Having too few descriptors will impact reliability because the DMA | |
will have to drop packets that are received when there are no receive | |
descriptors free. It is however only necessary to have a couple of free | |
descriptors at a time, and having more wastes the RAM used by the Ethernet | |
buffers that are surplus to requirements. */ | |
#define configNUM_RX_ETHERNET_DMA_DESCRIPTORS 4 | |
/* The LPC1830 Ethernet peripheral uses a DMA to transmit and receive packets. | |
The DMA uses a chain of descriptors to reference Ethernet buffers that are | |
waiting to be sent onto the network. configNUM_TX_ETHERNET_DMA_DESCRIPTORS | |
defines the total number of transmit descriptors. An Ethernet buffer is | |
not assigned to a transmit descriptor until data is actually sent, but will | |
remain assigned to the descriptor until the descriptor is re-used. It is not | |
necessary to have many transmit descriptors as the IP stack task will be held | |
in the Blocked state (so other tasks can run) until a descriptor becomes | |
available if it attempts to transmit when all the descriptors are in use. See | |
the iptraceWAITING_FOR_TX_DMA_DESCRIPTOR() IP trace macro. */ | |
#define configNUM_TX_ETHERNET_DMA_DESCRIPTORS 1 | |
/* The address of an echo server that will be used by the two demo echo client | |
tasks. | |
http://FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/Embedded_Ethernet_Examples/Common_Echo_Clients.shtml */ | |
#define configECHO_SERVER_ADDR0 172 | |
#define configECHO_SERVER_ADDR1 25 | |
#define configECHO_SERVER_ADDR2 218 | |
#define configECHO_SERVER_ADDR3 103 | |
/* MAC address configuration. In a deployed production system this would | |
probably be read from an EEPROM. In the demo it is just hard coded. Make sure | |
each node on the network has a unique MAC address. */ | |
#define configMAC_ADDR0 0x00 | |
#define configMAC_ADDR1 0x01 | |
#define configMAC_ADDR2 0x02 | |
#define configMAC_ADDR3 0x03 | |
#define configMAC_ADDR4 0x04 | |
#define configMAC_ADDR5 0x08 | |
/* Default IP address configuration. Used in ipconfigUSE_DNS is set to 0, or | |
ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ | |
#define configIP_ADDR0 172 | |
#define configIP_ADDR1 25 | |
#define configIP_ADDR2 218 | |
#define configIP_ADDR3 200 | |
/* Default gateway IP address configuration. Used in ipconfigUSE_DNS is set to | |
0, or ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ | |
#define configGATEWAY_ADDR0 172 | |
#define configGATEWAY_ADDR1 25 | |
#define configGATEWAY_ADDR2 218 | |
#define configGATEWAY_ADDR3 1 | |
/* Default DNS server configuration. OpenDNS addresses are 208.67.222.222 and | |
208.67.220.220. Used in ipconfigUSE_DNS is set to 0, or ipconfigUSE_DNS is set | |
to 1 but a DNS server cannot be contacted.*/ | |
#define configDNS_SERVER_ADDR0 208 | |
#define configDNS_SERVER_ADDR1 67 | |
#define configDNS_SERVER_ADDR2 222 | |
#define configDNS_SERVER_ADDR3 222 | |
/* Defalt netmask configuration. Used in ipconfigUSE_DNS is set to 0, or | |
ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ | |
#define configNET_MASK0 255 | |
#define configNET_MASK1 255 | |
#define configNET_MASK2 255 | |
#define configNET_MASK3 0 | |
/* Only include the trace macro definitions required by FreeRTOS+Trace if | |
the trace start and trace stop CLI commands are included. */ | |
#include "trcRecorder.h" | |
#endif /* FREERTOS_CONFIG_H */ |