diff options
| author | hathach <[email protected]> | 2018-11-22 01:04:18 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2018-11-22 01:04:18 +0700 |
| commit | d2d833c0abd3a2678720f8c2462fa29406c6fdc4 (patch) | |
| tree | 47c04741a9ab4fd553229975e8d3e6b253bd5cf2 /examples | |
| parent | 3fccd24854fd2857aba2cb287fa5712a7b9b76ca (diff) | |
update freertos ses project
Diffstat (limited to 'examples')
5 files changed, 263 insertions, 6 deletions
diff --git a/examples/device_composite_freertos/ses/nrf5x/FreeRTOSConfig.h b/examples/device_composite_freertos/ses/nrf5x/FreeRTOSConfig.h new file mode 100644 index 000000000..96de8f8c5 --- /dev/null +++ b/examples/device_composite_freertos/ses/nrf5x/FreeRTOSConfig.h @@ -0,0 +1,167 @@ +/* + * FreeRTOS Kernel V10.0.0 + * 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. If you wish to use our Amazon + * FreeRTOS name, please do so in a fair use way that does not cause confusion. + * + * 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 + +/*----------------------------------------------------------- + * 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. + * + * See http://www.freertos.org/a00110.html. + *----------------------------------------------------------*/ +#include "nrf.h" + + +#define configUSE_PREEMPTION 1 +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +#define configCPU_CLOCK_HZ SystemCoreClock +#define configTICK_RATE_HZ ( 1000 ) +#define configMAX_PRIORITIES ( 5 ) +#define configMINIMAL_STACK_SIZE ( 128 ) +#define configTOTAL_HEAP_SIZE ( 16*1024 ) +#define configMAX_TASK_NAME_LEN 16 +#define configUSE_16_BIT_TICKS 0 +#define configIDLE_SHOULD_YIELD 1 +#define configUSE_MUTEXES 1 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_COUNTING_SEMAPHORES 1 +#define configQUEUE_REGISTRY_SIZE 2 +#define configUSE_QUEUE_SETS 0 +#define configUSE_TIME_SLICING 0 +#define configUSE_NEWLIB_REENTRANT 0 +#define configENABLE_BACKWARD_COMPATIBILITY 1 + +#define configSUPPORT_STATIC_ALLOCATION 1 +#define configSUPPORT_DYNAMIC_ALLOCATION 1 + +/* Hook function related definitions. */ +#define configUSE_IDLE_HOOK 0 +#define configUSE_TICK_HOOK 0 +#define configUSE_MALLOC_FAILED_HOOK 1 +#define configCHECK_FOR_STACK_OVERFLOW 2 + +/* Run time and task stats gathering related definitions. */ +#define configGENERATE_RUN_TIME_STATS 0 +#define configUSE_TRACE_FACILITY 1 // legacy trace +#define configUSE_STATS_FORMATTING_FUNCTIONS 0 + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES 2 + +/* Software timer related definitions. */ +#define configUSE_TIMERS 1 +#define configTIMER_TASK_PRIORITY 2 +#define configTIMER_QUEUE_LENGTH 32 +#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE + +/* Optional functions - most linkers will remove unused functions anyway. */ +#define INCLUDE_vTaskPrioritySet 0 +#define INCLUDE_uxTaskPriorityGet 0 +#define INCLUDE_vTaskDelete 0 +#define INCLUDE_vTaskSuspend 1 // required for queue, semaphore, mutex to be blocked indefinitely with portMAX_DELAY +#define INCLUDE_xResumeFromISR 0 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_xTaskGetSchedulerState 0 +#define INCLUDE_xTaskGetCurrentTaskHandle 0 +#define INCLUDE_uxTaskGetStackHighWaterMark 0 +#define INCLUDE_xTaskGetIdleTaskHandle 0 +#define INCLUDE_xTimerGetTimerDaemonTaskHandle 0 +#define INCLUDE_pcTaskGetTaskName 0 +#define INCLUDE_eTaskGetState 0 +#define INCLUDE_xEventGroupSetBitFromISR 0 +#define INCLUDE_xTimerPendFunctionCall 0 + +/* Define to trap errors during development. */ +// Halt CPU (breakpoint) when hitting error, only apply for Cortex M3, M4, M7 +#if defined(__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__) +#define configASSERT(_exp) \ + do {\ + if ( !(_exp) ) { \ + volatile uint32_t* ARM_CM_DHCSR = ((volatile uint32_t*) 0xE000EDF0UL); /* Cortex M CoreDebug->DHCSR */ \ + if ( (*ARM_CM_DHCSR) & 1UL ) { /* Only halt mcu if debugger is attached */ \ + taskDISABLE_INTERRUPTS(); \ + __asm("BKPT #0\n"); \ + }\ + }\ + } while(0) +#else +#define configASSERT( x ) +#endif + +/* FreeRTOS hooks to NVIC vectors */ +#define xPortPendSVHandler PendSV_Handler +#define xPortSysTickHandler SysTick_Handler +#define vPortSVCHandler SVC_Handler + +//--------------------------------------------------------------------+ +// Interrupt nesting behavior configuration. +//--------------------------------------------------------------------+ +/* Cortex-M specific definitions. __NVIC_PRIO_BITS is defined in core_cmx.h */ +#ifdef __NVIC_PRIO_BITS + #define configPRIO_BITS __NVIC_PRIO_BITS +#else + #error "This port requires __NVIC_PRIO_BITS to be defined" +#endif + +/* The lowest interrupt priority that can be used in a call to a "set priority" +function. */ +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY ((1<<configPRIO_BITS) - 1) + +/* The highest interrupt priority that can be used by any interrupt service +routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL +INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER +PRIORITY THAN THIS! (higher priorities are lower numeric values. */ + +/* SD priority + * 0: SD timing critical + * 1: SD memory protection + * 2: App Highest + * 3: App High + * 4: SD non-time-critical + * 5+ Remaining Application + */ +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 2 + +/* Interrupt priorities used by the kernel port layer itself. These are generic +to all Cortex-M ports, and do not rely on any particular library functions. */ +#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) + +/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! +See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ +#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) + +#endif /* __FREERTOS_CONFIG__H */ diff --git a/examples/device_composite_freertos/ses/nrf5x/nrf5x.emProject b/examples/device_composite_freertos/ses/nrf5x/nrf5x.emProject index 705d0c015..978116988 100644 --- a/examples/device_composite_freertos/ses/nrf5x/nrf5x.emProject +++ b/examples/device_composite_freertos/ses/nrf5x/nrf5x.emProject @@ -20,7 +20,7 @@ arm_target_interface_type="SWD" build_treat_warnings_as_errors="Yes" c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_PCA10056;CFG_TUSB_MCU=OPT_MCU_NRF5X" - c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(nrfxDir)/..;$(nrfxDir);$(nrfxDir)/mdk;$(nrfxDir)/hal;$(nrfxDir)/drivers/include;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F" + c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(nrfxDir)/..;$(nrfxDir);$(nrfxDir)/mdk;$(nrfxDir)/hal;$(nrfxDir)/drivers/include;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F" debug_register_definition_file="nrf52840_Registers.xml" debug_target_connection="J-Link" gcc_entry_point="Reset_Handler" diff --git a/examples/device_composite_freertos/ses/samd21/samd21.emProject b/examples/device_composite_freertos/ses/samd21/samd21.emProject index 54767199a..cb9cee4f5 100644 --- a/examples/device_composite_freertos/ses/samd21/samd21.emProject +++ b/examples/device_composite_freertos/ses/samd21/samd21.emProject @@ -19,7 +19,7 @@ arm_target_interface_type="SWD" build_treat_warnings_as_errors="Yes" c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CONF_XOSC32K_CONFIG=1;CONF_OSC32K_ENABLE=1;CONF_OSC32K_EN32K=1;CONF_XOSC32K_STARTUP=CONF_XOSC32K_STARTUP_TIME_2000092MCS;CONF_DFLL_ONDEMAND=0;CONF_DFLL_OVERWRITE_CALIBRATION=0;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21" - c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm" + c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm" debug_register_definition_file="ATSAMD21G18A_Registers.xml" debug_target_connection="J-Link" gcc_entry_point="Reset_Handler" @@ -27,7 +27,7 @@ linker_memory_map_file="$(ProjectDir)/ATSAMD21G18A_MemoryMap.xml" linker_section_placement_file="flash_placement.xml" linker_section_placements_segments="FLASH RX 0x00000000 0x00080000;RAM RWX 0x20000000 0x00030000" - macros="DeviceFamily=SAMD21;Target=ATSAMD21G18A;Placement=Flash;rootDir=../../../..;asf4Dir=../../../../hw/mcu/microchip/samd/asf4/samd21" + macros="DeviceFamily=SAMD21;Target=ATSAMD21G18A;Placement=Flash;rootDir=../../../..;asf4Dir=../../../../hw/mcu/microchip/samd/asf4/samd21;freertosDir=../../../../lib/FreeRTOS" project_directory="" project_type="Executable" target_reset_script="Reset();" @@ -98,6 +98,49 @@ filter="*.c;*.h" path="../../../../lib/segger_rtt" recurse="No" /> + <folder Name="lib"> + <folder Name="FreeRTOS"> + <folder Name="Source"> + <folder Name="include"> + <file file_name="../../../../lib/FreeRTOS/Source/include/croutine.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/deprecated_definitions.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/event_groups.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/FreeRTOS.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/list.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/message_buffer.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/mpu_prototypes.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/mpu_wrappers.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/portable.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/projdefs.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/queue.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/semphr.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/stack_macros.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/StackMacros.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/stream_buffer.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/task.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/timers.h" /> + </folder> + <folder Name="portable"> + <folder Name="Common" /> + <folder Name="GCC"> + <folder Name="ARM_CM0"> + <file file_name="../../../../lib/FreeRTOS/Source/portable/GCC/ARM_CM0/port.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/portable/GCC/ARM_CM0/portmacro.h" /> + </folder> + </folder> + <folder Name="MemMang"> + <file file_name="../../../../lib/FreeRTOS/Source/portable/MemMang/heap_4.c" /> + </folder> + </folder> + <file file_name="../../../../lib/FreeRTOS/Source/list.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/queue.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/tasks.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/timers.c" /> + </folder> + <file file_name="../../../../lib/FreeRTOS/FreeRTOSConfig.h" /> + <file file_name="../../../../lib/FreeRTOS/freertos_hook.c" /> + </folder> + </folder> </project> <configuration Name="Metro M0 Express" /> </solution> diff --git a/examples/device_composite_freertos/ses/samd51/samd51.emProject b/examples/device_composite_freertos/ses/samd51/samd51.emProject index 76be9cf5e..222190a90 100644 --- a/examples/device_composite_freertos/ses/samd51/samd51.emProject +++ b/examples/device_composite_freertos/ses/samd51/samd51.emProject @@ -20,7 +20,7 @@ arm_target_interface_type="SWD" build_treat_warnings_as_errors="Yes" c_preprocessor_definitions="__SAMD51_FAMILY;__SAMD51J19A__;ARM_MATH_CM4;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;BOARD_METRO_M4_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD51" - c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk" + c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F" debug_register_definition_file="ATSAMD51J19A_Registers.xml" debug_target_connection="J-Link" gcc_entry_point="Reset_Handler" @@ -28,7 +28,7 @@ linker_memory_map_file="ATSAMD51J19A_MemoryMap.xml" linker_section_placement_file="flash_placement.xml" linker_section_placements_segments="FLASH RX 0x00000000 0x00080000;RAM RWX 0x20000000 0x00030000" - macros="DeviceFamily=SAMD51;Target=ATSAMD51J19A;Placement=Flash;rootDir=../../../..;asf4Dir=../../../../hw/mcu/microchip/samd/asf4/samd51" + macros="DeviceFamily=SAMD51;Target=ATSAMD51J19A;Placement=Flash;rootDir=../../../..;asf4Dir=../../../../hw/mcu/microchip/samd/asf4/samd51;freertosDir=../../../../lib/FreeRTOS" project_directory="" project_type="Executable" target_reset_script="Reset();" @@ -102,6 +102,49 @@ filter="*.c;*.h" path="../../../../lib/segger_rtt" recurse="No" /> + <folder Name="lib"> + <folder Name="FreeRTOS"> + <folder Name="Source"> + <folder Name="include"> + <file file_name="../../../../lib/FreeRTOS/Source/include/croutine.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/deprecated_definitions.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/event_groups.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/FreeRTOS.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/list.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/message_buffer.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/mpu_prototypes.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/mpu_wrappers.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/portable.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/projdefs.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/queue.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/semphr.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/stack_macros.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/StackMacros.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/stream_buffer.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/task.h" /> + <file file_name="../../../../lib/FreeRTOS/Source/include/timers.h" /> + </folder> + <folder Name="portable"> + <folder Name="Common" /> + <folder Name="GCC"> + <folder Name="ARM_CM4F"> + <file file_name="../../../../lib/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h" /> + </folder> + </folder> + <folder Name="MemMang"> + <file file_name="../../../../lib/FreeRTOS/Source/portable/MemMang/heap_4.c" /> + </folder> + </folder> + <file file_name="../../../../lib/FreeRTOS/Source/list.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/queue.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/tasks.c" /> + <file file_name="../../../../lib/FreeRTOS/Source/timers.c" /> + </folder> + <file file_name="../../../../lib/FreeRTOS/FreeRTOSConfig.h" /> + <file file_name="../../../../lib/FreeRTOS/freertos_hook.c" /> + </folder> + </folder> </project> <configuration Name="Metro M4 Express" /> </solution> diff --git a/examples/device_composite_freertos/src/tusb_config.h b/examples/device_composite_freertos/src/tusb_config.h index 9641f7bde..4c8635fc0 100644 --- a/examples/device_composite_freertos/src/tusb_config.h +++ b/examples/device_composite_freertos/src/tusb_config.h @@ -48,7 +48,11 @@ //-------------------------------------------------------------------- // COMMON CONFIGURATION //-------------------------------------------------------------------- -#define CFG_TUSB_MCU OPT_MCU_NRF5X +// defined by compiler flags for flexibility +#ifndef CFG_TUSB_MCU + #error CFG_TUSB_MCU should be defined using compiler flags +#endif + #define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE #define CFG_TUSB_DEBUG 2 |
