Create SMP on target test framework. (#911)
* Framework initialization. * Move testRunner.c to test case subfolder. * Update README doc and formatting. * Add default configurations in test_config.h. * Fix License & formatting check. * Fix typo. * Move setup/teardown functions to main.c file. * Move setup/teardown functions back. * Update README doc. * Patch for comments. * Correct test runner file name. * Move test_config.h to the end of FreeRTOSConfig.h. * Add undef in test_config.h and description in README doc. * Correct the file format. * Fix chinglee-iot comments. * Code review suggestions Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> * Fix spell check Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> --------- Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>pull/953/head
parent
93a35f87d2
commit
67911f83a6
@ -0,0 +1,34 @@
|
||||
# Note that this file can be used as a top level CMakeLists.txt to build all the Demos (it includes
|
||||
# them all, but they are usable in their own right, which is why no common work is done here)
|
||||
|
||||
# The tests are defined here: https://quip-amazon.com/78LdAeL2txGu/Test-Plan
|
||||
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
set(UNITY_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../CMock/CMock/vendor/unity)
|
||||
|
||||
include(pico_sdk_import.cmake)
|
||||
|
||||
PROJECT(Tests)
|
||||
|
||||
include(CTest)
|
||||
|
||||
add_library(unity STATIC
|
||||
"${UNITY_DIR}/src/unity.c")
|
||||
target_include_directories(unity PUBLIC
|
||||
"${UNITY_DIR}/src/")
|
||||
|
||||
# Find all subdirectories in tests folder then add them by add_subdirectory
|
||||
file(GLOB_RECURSE SUBDIRS_TESTS_FILES tests/*)
|
||||
SET(test_dir_list "")
|
||||
|
||||
foreach(file_name ${SUBDIRS_TESTS_FILES})
|
||||
get_filename_component( dir_path ${file_name} PATH )
|
||||
LIST( APPEND test_dir_list ${dir_path})
|
||||
endforeach()
|
||||
LIST(REMOVE_DUPLICATES test_dir_list)
|
||||
|
||||
foreach(dir_name ${test_dir_list})
|
||||
message( STATUS "add subdirectory " ${dir_name} )
|
||||
add_subdirectory( ${dir_name} )
|
||||
endforeach()
|
@ -0,0 +1,140 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#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
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
/* Scheduler Related */
|
||||
#define configUSE_TICKLESS_IDLE 0
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
|
||||
#define configMAX_PRIORITIES 32
|
||||
#define configMINIMAL_STACK_SIZE ( configSTACK_DEPTH_TYPE ) 256
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 1
|
||||
|
||||
/* Synchronization Related */
|
||||
#define configUSE_MUTEXES 1
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configQUEUE_REGISTRY_SIZE 8
|
||||
#define configUSE_QUEUE_SETS 1
|
||||
#define configUSE_TIME_SLICING 1
|
||||
#define configUSE_NEWLIB_REENTRANT 0
|
||||
#define configENABLE_BACKWARD_COMPATIBILITY 0
|
||||
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5
|
||||
|
||||
/* System */
|
||||
#define configSTACK_DEPTH_TYPE uint32_t
|
||||
#define configMESSAGE_BUFFER_LENGTH_TYPE size_t
|
||||
|
||||
/* Memory allocation related definitions. */
|
||||
#define configSUPPORT_STATIC_ALLOCATION 0
|
||||
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||
#define configTOTAL_HEAP_SIZE ( 128 * 1024 )
|
||||
#define configAPPLICATION_ALLOCATED_HEAP 0
|
||||
|
||||
/* Hook function related definitions. */
|
||||
#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 1
|
||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 0
|
||||
|
||||
/* Co-routine related definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES 1
|
||||
|
||||
/* Software timer related definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
#define configTIMER_QUEUE_LENGTH 10
|
||||
#define configTIMER_TASK_STACK_DEPTH 1024
|
||||
|
||||
/* Interrupt nesting behaviour configuration. */
|
||||
|
||||
/*
|
||||
#define configKERNEL_INTERRUPT_PRIORITY [dependent of processor]
|
||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY [dependent on processor and application]
|
||||
#define configMAX_API_CALL_INTERRUPT_PRIORITY [dependent on processor and application]
|
||||
*/
|
||||
|
||||
/* SMP port only */
|
||||
#define configNUMBER_OF_CORES 2
|
||||
#define configTICK_CORE 1
|
||||
#define configRUN_MULTIPLE_PRIORITIES 1
|
||||
#define configUSE_CORE_AFFINITY 1
|
||||
#define configUSE_MINIMAL_IDLE_HOOK 0
|
||||
#define configUSE_TASK_PREEMPTION_DISABLE 0
|
||||
|
||||
/* RP2040 specific */
|
||||
#define configSUPPORT_PICO_SYNC_INTEROP 1
|
||||
#define configSUPPORT_PICO_TIME_INTEROP 1
|
||||
|
||||
#include <assert.h>
|
||||
/* Define to trap errors during development. */
|
||||
#define configASSERT( x ) assert( x )
|
||||
|
||||
/* 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_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTaskGetSchedulerState 1
|
||||
#define INCLUDE_xTaskGetCurrentTaskHandle 1
|
||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||
#define INCLUDE_xTaskGetIdleTaskHandle 1
|
||||
#define INCLUDE_eTaskGetState 1
|
||||
#define INCLUDE_xTimerPendFunctionCall 1
|
||||
#define INCLUDE_xTaskAbortDelay 1
|
||||
#define INCLUDE_xTaskGetHandle 1
|
||||
#define INCLUDE_xTaskResumeFromISR 1
|
||||
#define INCLUDE_xQueueGetMutexHolder 1
|
||||
/* A header file that defines trace macro can be included here. */
|
||||
|
||||
#include "test_config.h"
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
@ -0,0 +1,63 @@
|
||||
# This is a copy of <FREERTOS_KERNEL_PATH>/portable/ThirdParty/GCC/RP2040/FREERTOS_KERNEL_import.cmake
|
||||
|
||||
# This can be dropped into an external project to help locate the FreeRTOS kernel
|
||||
# It should be include()ed prior to project(). Alternatively this file may
|
||||
# or the CMakeLists.txt in this directory may be included or added via add_subdirectory
|
||||
# respectively.
|
||||
|
||||
if (DEFINED ENV{FREERTOS_KERNEL_PATH} AND (NOT FREERTOS_KERNEL_PATH))
|
||||
set(FREERTOS_KERNEL_PATH $ENV{FREERTOS_KERNEL_PATH})
|
||||
message("Using FREERTOS_KERNEL_PATH from environment ('${FREERTOS_KERNEL_PATH}')")
|
||||
endif ()
|
||||
|
||||
set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "portable/ThirdParty/GCC/RP2040")
|
||||
# undo the above
|
||||
set(FREERTOS_KERNEL_RP2040_BACK_PATH "../../../..")
|
||||
|
||||
if (NOT FREERTOS_KERNEL_PATH)
|
||||
# check if we are inside the FreeRTOS kernel tree (i.e. this file has been included directly)
|
||||
get_filename_component(_ACTUAL_PATH ${CMAKE_CURRENT_LIST_DIR} REALPATH)
|
||||
get_filename_component(_POSSIBLE_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH} REALPATH)
|
||||
if (_ACTUAL_PATH STREQUAL _POSSIBLE_PATH)
|
||||
get_filename_component(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH} REALPATH)
|
||||
endif()
|
||||
if (_ACTUAL_PATH STREQUAL _POSSIBLE_PATH)
|
||||
get_filename_component(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH} REALPATH)
|
||||
message("Setting FREERTOS_KERNEL_PATH to ${FREERTOS_KERNEL_PATH} based on location of FreeRTOS-Kernel-import.cmake")
|
||||
elseif (PICO_SDK_PATH AND EXISTS "${PICO_SDK_PATH}/../FreeRTOS-Kernel")
|
||||
set(FREERTOS_KERNEL_PATH ${PICO_SDK_PATH}/../FreeRTOS-Kernel)
|
||||
message("Defaulting FREERTOS_KERNEL_PATH as sibling of PICO_SDK_PATH: ${FREERTOS_KERNEL_PATH}")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if (NOT FREERTOS_KERNEL_PATH)
|
||||
foreach(POSSIBLE_SUFFIX Source FreeRTOS-Kernel FreeRTOS/Source)
|
||||
# check if FreeRTOS-Kernel exists under directory that included us
|
||||
set(SEARCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}})
|
||||
set(SEARCH_ROOT ../../../..)
|
||||
get_filename_component(_POSSIBLE_PATH ${SEARCH_ROOT}/${POSSIBLE_SUFFIX} REALPATH)
|
||||
if (EXISTS ${_POSSIBLE_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/CMakeLists.txt)
|
||||
get_filename_component(FREERTOS_KERNEL_PATH ${_POSSIBLE_PATH} REALPATH)
|
||||
message("Setting FREERTOS_KERNEL_PATH to '${FREERTOS_KERNEL_PATH}' found relative to enclosing project")
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if (NOT FREERTOS_KERNEL_PATH)
|
||||
message(FATAL_ERROR "FreeRTOS location was not specified. Please set FREERTOS_KERNEL_PATH.")
|
||||
endif()
|
||||
|
||||
set(FREERTOS_KERNEL_PATH "${FREERTOS_KERNEL_PATH}" CACHE PATH "Path to the FreeRTOS Kernel")
|
||||
|
||||
get_filename_component(FREERTOS_KERNEL_PATH "${FREERTOS_KERNEL_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
|
||||
if (NOT EXISTS ${FREERTOS_KERNEL_PATH})
|
||||
message(FATAL_ERROR "Directory '${FREERTOS_KERNEL_PATH}' not found")
|
||||
endif()
|
||||
if (NOT EXISTS ${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/CMakeLists.txt)
|
||||
message(FATAL_ERROR "Directory '${FREERTOS_KERNEL_PATH}' does not contain an RP2040 port here: ${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}")
|
||||
endif()
|
||||
set(FREERTOS_KERNEL_PATH ${FREERTOS_KERNEL_PATH} CACHE PATH "Path to the FreeRTOS_KERNEL" FORCE)
|
||||
|
||||
add_subdirectory(${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH} FREERTOS_KERNEL)
|
||||
set(TARGET_INCLUDE_PATH ${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/include)
|
@ -0,0 +1,123 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file main.c
|
||||
* @brief The implementation of main function to start test runner task.
|
||||
*
|
||||
* Procedure:
|
||||
* - Initialize environment.
|
||||
* - Run the test case.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h" /* Must come first. */
|
||||
#include "task.h" /* RTOS task related API prototypes. */
|
||||
|
||||
/* Unity includes. */
|
||||
#include "unity.h"
|
||||
|
||||
/* Pico includes. */
|
||||
#include "pico/multicore.h"
|
||||
#include "pico/stdlib.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Initialize required peripherals.
|
||||
*/
|
||||
static void prvInitializeHardware( void );
|
||||
|
||||
/**
|
||||
* @brief Run test.
|
||||
*/
|
||||
extern void vRunTest( void );
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvInitializeHardware( void )
|
||||
{
|
||||
/* Needed for printf. */
|
||||
stdio_init_all();
|
||||
|
||||
while( !stdio_usb_connected() )
|
||||
{
|
||||
sleep_ms( 250 );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationStackOverflowHook( TaskHandle_t xTask,
|
||||
char * pcTaskName )
|
||||
{
|
||||
( void ) pcTaskName;
|
||||
( void ) xTask;
|
||||
|
||||
printf( "ERROR: Stack Overflow\n\0" );
|
||||
|
||||
/* Run time stack overflow checking is performed if
|
||||
* configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook
|
||||
* function is called if a stack overflow is detected. pxCurrentTCB can be
|
||||
* inspected in the debugger if the task name passed into this function is
|
||||
* corrupt. */
|
||||
for( ; ; )
|
||||
{
|
||||
/* Always running, put asm here to avoid optimization by compiler. */
|
||||
__asm volatile ( "nop" );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationTickHook( void )
|
||||
{
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationMallocFailedHook( void )
|
||||
{
|
||||
printf( "ERROR: Malloc Failed\n\0" );
|
||||
|
||||
for( ; ; )
|
||||
{
|
||||
/* Always running, put asm here to avoid optimization by compiler. */
|
||||
__asm volatile ( "nop" );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int main( void )
|
||||
{
|
||||
prvInitializeHardware();
|
||||
|
||||
vRunTest();
|
||||
|
||||
vTaskStartScheduler();
|
||||
|
||||
/* Should never reach here. */
|
||||
panic_unsupported();
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,89 @@
|
||||
# This is a copy of <PICO_SDK_PATH>/external/pico_sdk_import.cmake
|
||||
|
||||
# This can be dropped into an external project to help locate this SDK
|
||||
# It should be include()ed prior to project()
|
||||
|
||||
set(BOARD_LINK_LIBRARIES pico_stdlib pico_multicore unity)
|
||||
set(BOARD_DEFINES PICO_STACK_SIZE=0x1000 TARGET_RASPBERRY_PICO=1)
|
||||
set(BOARD_INCLUDE_PATHS "${UNITY_DIR}/src/"
|
||||
${CMAKE_CURRENT_LIST_DIR})
|
||||
set(BOARD_LIBRARY_DIR ${CMAKE_CURRENT_LIST_DIR} CACHE INTERNAL "")
|
||||
|
||||
if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH))
|
||||
set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
|
||||
message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')")
|
||||
endif ()
|
||||
|
||||
if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT))
|
||||
set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT})
|
||||
message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')")
|
||||
endif ()
|
||||
|
||||
if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH))
|
||||
set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH})
|
||||
message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')")
|
||||
endif ()
|
||||
|
||||
set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK")
|
||||
set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable")
|
||||
set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK")
|
||||
|
||||
if (NOT PICO_SDK_PATH)
|
||||
if (PICO_SDK_FETCH_FROM_GIT)
|
||||
include(FetchContent)
|
||||
set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR})
|
||||
if (PICO_SDK_FETCH_FROM_GIT_PATH)
|
||||
get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
|
||||
endif ()
|
||||
FetchContent_Declare(
|
||||
pico_sdk
|
||||
GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk
|
||||
GIT_TAG master
|
||||
)
|
||||
if (NOT pico_sdk)
|
||||
message("Downloading Raspberry Pi Pico SDK")
|
||||
FetchContent_Populate(pico_sdk)
|
||||
set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR})
|
||||
endif ()
|
||||
set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE})
|
||||
else ()
|
||||
message(FATAL_ERROR
|
||||
"SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git."
|
||||
)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
|
||||
if (NOT EXISTS ${PICO_SDK_PATH})
|
||||
message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found")
|
||||
endif ()
|
||||
|
||||
set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake)
|
||||
if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE})
|
||||
message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the Raspberry Pi Pico SDK")
|
||||
endif ()
|
||||
|
||||
set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE)
|
||||
|
||||
include(${PICO_SDK_INIT_CMAKE_FILE})
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FreeRTOS_Kernel_import.cmake)
|
||||
|
||||
set(BOARD_INC_PATHS ${CMAKE_CURRENT_LIST_DIR} ${TARGET_INCLUDE_PATH})
|
||||
|
||||
pico_sdk_init()
|
||||
|
||||
# one of the following directories need be included, why is it not?
|
||||
# /home/ubuntu/pico/pico-sdk/src/host/pico_multicore/include
|
||||
# /home/ubuntu/pico/pico-sdk/src/rp2_common/pico_multicore/include
|
||||
|
||||
get_cmake_property(_variableNames VARIABLES)
|
||||
list (SORT _variableNames)
|
||||
foreach (_variableName ${_variableNames})
|
||||
message(STATUS "${_variableName}=${${_variableName}}")
|
||||
endforeach()
|
||||
|
||||
macro(enable_board_functions EXECUTABLE_NAME)
|
||||
pico_enable_stdio_usb(${EXECUTABLE_NAME} 1)
|
||||
pico_add_extra_outputs(${EXECUTABLE_NAME})
|
||||
endmacro()
|
@ -0,0 +1,33 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
project(example C CXX ASM)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
set(TEST_INCLUDE_PATHS ${CMAKE_CURRENT_LIST_DIR}/../../../../../tests/smp/multiple_tasks_running)
|
||||
set(TEST_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../../../tests/smp/multiple_tasks_running)
|
||||
|
||||
add_library(multiple_tasks_running INTERFACE)
|
||||
target_sources(multiple_tasks_running INTERFACE
|
||||
${BOARD_LIBRARY_DIR}/main.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/multiple_tasks_running_test_runner.c
|
||||
${TEST_SOURCE_DIR}/multiple_tasks_running.c)
|
||||
|
||||
target_include_directories(multiple_tasks_running INTERFACE
|
||||
${CMAKE_CURRENT_LIST_DIR}/../../..
|
||||
${TEST_INCLUDE_PATHS}
|
||||
)
|
||||
|
||||
target_link_libraries(multiple_tasks_running INTERFACE
|
||||
FreeRTOS-Kernel
|
||||
FreeRTOS-Kernel-Heap4
|
||||
${BOARD_LINK_LIBRARIES})
|
||||
|
||||
add_executable(test_multiple_tasks_running)
|
||||
enable_board_functions(test_multiple_tasks_running)
|
||||
target_link_libraries(test_multiple_tasks_running multiple_tasks_running)
|
||||
target_include_directories(test_multiple_tasks_running PUBLIC
|
||||
${BOARD_INCLUDE_PATHS})
|
||||
target_compile_definitions(test_multiple_tasks_running PRIVATE
|
||||
${BOARD_DEFINES}
|
||||
)
|
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file multiple_tasks_running_test_runner.c
|
||||
* @brief The implementation of test runner task which runs the test.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h" /* Must come first. */
|
||||
#include "task.h" /* RTOS task related API prototypes. */
|
||||
|
||||
/* Unity includes. */
|
||||
#include "unity.h"
|
||||
|
||||
/* Pico includes. */
|
||||
#include "pico/multicore.h"
|
||||
#include "pico/stdlib.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief The task that runs the test.
|
||||
*/
|
||||
static void prvTestRunnerTask( void * pvParameters );
|
||||
|
||||
/**
|
||||
* @brief The test case to run.
|
||||
*/
|
||||
extern void vRunMultipleTasksRunningTest( void );
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvTestRunnerTask( void * pvParameters )
|
||||
{
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Run test case. */
|
||||
vRunMultipleTasksRunningTest();
|
||||
|
||||
vTaskDelete( NULL );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vRunTest( void )
|
||||
{
|
||||
xTaskCreate( prvTestRunnerTask,
|
||||
"testRunner",
|
||||
configMINIMAL_STACK_SIZE,
|
||||
NULL,
|
||||
configMAX_PRIORITIES - 1,
|
||||
NULL );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,156 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file multiple_tasks_running.c
|
||||
* @brief The user shall be able to schedule tasks across multiple identical processor cores
|
||||
* with one instance of FreeRTOS scheduler.
|
||||
*
|
||||
* Procedure:
|
||||
* - Create ( num of cores - 1 ) tasks and keep them in busy loop.
|
||||
* Expected:
|
||||
* - All tasks are in running state.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h" /* Must come first. */
|
||||
#include "task.h" /* RTOS task related API prototypes. */
|
||||
|
||||
/* Unity includes. */
|
||||
#include "unity.h"
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
#ifndef TEST_CONFIG_H
|
||||
#error test_config.h must be included at the end of FreeRTOSConfig.h.
|
||||
#endif
|
||||
|
||||
#if ( configNUMBER_OF_CORES < 2 )
|
||||
#error This test is for FreeRTOS SMP and therefore, requires at least 2 cores.
|
||||
#endif /* if configNUMBER_OF_CORES != 2 */
|
||||
|
||||
#if ( configRUN_MULTIPLE_PRIORITIES != 1 )
|
||||
#error configRUN_MULTIPLE_PRIORITIES must be set to 1 for this test.
|
||||
#endif /* if ( configRUN_MULTIPLE_PRIORITIES != 1 ) */
|
||||
|
||||
#if ( configMAX_PRIORITIES <= 2 )
|
||||
#error configMAX_PRIORITIES must be larger than 2 to avoid scheduling idle tasks unexpectedly.
|
||||
#endif /* if ( configMAX_PRIORITIES <= 2 ) */
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Function that implements a never blocking FreeRTOS task.
|
||||
*/
|
||||
static void prvEverRunningTask( void * pvParameters );
|
||||
|
||||
/**
|
||||
* @brief Test case "Multiple Tasks Running".
|
||||
*/
|
||||
static void Test_MultipleTasksRunning( void );
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Handles of the tasks created in this test.
|
||||
*/
|
||||
static TaskHandle_t xTaskHandles[ configNUMBER_OF_CORES - 1 ];
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void Test_MultipleTasksRunning( void )
|
||||
{
|
||||
int i;
|
||||
eTaskState xTaskState;
|
||||
|
||||
/* Delay for other cores to run tasks. */
|
||||
vTaskDelay( pdMS_TO_TICKS( 10 ) );
|
||||
|
||||
/* Ensure that all the tasks are running. */
|
||||
for( i = 0; i < ( configNUMBER_OF_CORES - 1 ); i++ )
|
||||
{
|
||||
xTaskState = eTaskGetState( xTaskHandles[ i ] );
|
||||
|
||||
TEST_ASSERT_EQUAL_MESSAGE( eRunning, xTaskState, "Task is not running." );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvEverRunningTask( void * pvParameters )
|
||||
{
|
||||
/* Silence warnings about unused parameters. */
|
||||
( void ) pvParameters;
|
||||
|
||||
for( ; ; )
|
||||
{
|
||||
/* Always running, put asm here to avoid optimization by compiler. */
|
||||
__asm volatile ( "nop" );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Runs before every test, put init calls here. */
|
||||
void setUp( void )
|
||||
{
|
||||
int i;
|
||||
BaseType_t xTaskCreationResult;
|
||||
|
||||
/* Create configNUMBER_OF_CORES - 1 low priority tasks. */
|
||||
for( i = 0; i < ( configNUMBER_OF_CORES - 1 ); i++ )
|
||||
{
|
||||
xTaskCreationResult = xTaskCreate( prvEverRunningTask,
|
||||
"EverRunning",
|
||||
configMINIMAL_STACK_SIZE,
|
||||
NULL,
|
||||
configMAX_PRIORITIES - 2,
|
||||
&( xTaskHandles[ i ] ) );
|
||||
|
||||
TEST_ASSERT_EQUAL_MESSAGE( pdPASS, xTaskCreationResult, "Task creation failed." );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Runs after every test, put clean-up calls here. */
|
||||
void tearDown( void )
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Delete all the tasks. */
|
||||
for( i = 0; i < ( configNUMBER_OF_CORES - 1 ); i++ )
|
||||
{
|
||||
if( xTaskHandles[ i ] != NULL )
|
||||
{
|
||||
vTaskDelete( xTaskHandles[ i ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vRunMultipleTasksRunningTest( void )
|
||||
{
|
||||
UNITY_BEGIN();
|
||||
|
||||
RUN_TEST( Test_MultipleTasksRunning );
|
||||
|
||||
UNITY_END();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TEST_CONFIG_H
|
||||
#define TEST_CONFIG_H
|
||||
|
||||
/* This file must be included at the end of the FreeRTOSConfig.h. It contains
|
||||
* any FreeRTOS specific configurations that the test requires. */
|
||||
|
||||
#ifdef configRUN_MULTIPLE_PRIORITIES
|
||||
#undef configRUN_MULTIPLE_PRIORITIES
|
||||
#endif /* ifdef configRUN_MULTIPLE_PRIORITIES */
|
||||
|
||||
#ifdef configUSE_CORE_AFFINITY
|
||||
#undef configUSE_CORE_AFFINITY
|
||||
#endif /* ifdef configUSE_CORE_AFFINITY */
|
||||
|
||||
#ifdef configUSE_MINIMAL_IDLE_HOOK
|
||||
#undef configUSE_MINIMAL_IDLE_HOOK
|
||||
#endif /* ifdef configUSE_MINIMAL_IDLE_HOOK */
|
||||
|
||||
#ifdef configUSE_TASK_PREEMPTION_DISABLE
|
||||
#undef configUSE_TASK_PREEMPTION_DISABLE
|
||||
#endif /* ifdef configUSE_TASK_PREEMPTION_DISABLE */
|
||||
|
||||
#ifdef configUSE_TIME_SLICING
|
||||
#undef configUSE_TIME_SLICING
|
||||
#endif /* ifdef configUSE_TIME_SLICING */
|
||||
|
||||
#ifdef configUSE_PREEMPTION
|
||||
#undef configUSE_PREEMPTION
|
||||
#endif /* ifdef configUSE_PREEMPTION */
|
||||
|
||||
#define configRUN_MULTIPLE_PRIORITIES 1
|
||||
#define configUSE_CORE_AFFINITY 0
|
||||
#define configUSE_MINIMAL_IDLE_HOOK 0
|
||||
#define configUSE_TASK_PREEMPTION_DISABLE 0
|
||||
#define configUSE_TIME_SLICING 0
|
||||
#define configUSE_PREEMPTION 0
|
||||
|
||||
#endif /* ifndef TEST_CONFIG_H */
|
@ -0,0 +1,38 @@
|
||||
# How to add a new test?
|
||||
|
||||
1. Create a directory in the `FreeRTOS/Test/Target/tests` directory which will
|
||||
contain the test. For example: `FreeRTOS/Test/Target/tests/smp/multiple_tasks_running`.
|
||||
1. Copy the `test_name.c` and `test_config.h` files from this template
|
||||
directory to the newly created directory above.
|
||||
1. Rename the `test_name.c` according to the test name.
|
||||
1. Implement the test in the above test file.
|
||||
1. Add any FreeRTOS specific configuration required for the test to `test_config.h`.
|
||||
|
||||
# How to add a new target?
|
||||
|
||||
1. Create a target specific directory in the `FreeRTOS/Test/Target/boards` directory.
|
||||
1. Create required build files.
|
||||
- Include `test_config.h` in `FreeRTOSConfig.h` at the end.
|
||||
- Ensure that the following configurations are not defined in `FreeRTOSConfig.h` as those are defined in `test_config.h`:
|
||||
- `configRUN_MULTIPLE_PRIORITIES`
|
||||
- `configUSE_CORE_AFFINITY`
|
||||
- `configUSE_MINIMAL_IDLE_HOOK`
|
||||
- `configUSE_TASK_PREEMPTION_DISABLE`
|
||||
- `configUSE_TIME_SLICING`
|
||||
- `configUSE_PREEMPTION`
|
||||
|
||||
# How to add a test to a target
|
||||
|
||||
1. Create a directory in the target's directory which will contain
|
||||
the test. For example: `FreeRTOS/Test/Target/boards/pico/tests/smp/multiple_tasks_running`.
|
||||
1. Create a C file and invoke the test case from a task. The invocation
|
||||
usually looks like the following:
|
||||
```c
|
||||
void prvTestRunnerTask( void * pvParameters )
|
||||
{
|
||||
/* Invoke the test case. */
|
||||
vRunTestCaseName();
|
||||
}
|
||||
```
|
||||
1. Add the file created above and the test case file to the build system used
|
||||
for the target.
|
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TEST_CONFIG_H
|
||||
#define TEST_CONFIG_H
|
||||
|
||||
/* This file must be included at the end of the FreeRTOSConfig.h. It contains
|
||||
* any FreeRTOS specific configurations that the test requires. */
|
||||
|
||||
#ifdef configRUN_MULTIPLE_PRIORITIES
|
||||
#undef configRUN_MULTIPLE_PRIORITIES
|
||||
#endif /* ifdef configRUN_MULTIPLE_PRIORITIES */
|
||||
|
||||
#ifdef configUSE_CORE_AFFINITY
|
||||
#undef configUSE_CORE_AFFINITY
|
||||
#endif /* ifdef configUSE_CORE_AFFINITY */
|
||||
|
||||
#ifdef configUSE_MINIMAL_IDLE_HOOK
|
||||
#undef configUSE_MINIMAL_IDLE_HOOK
|
||||
#endif /* ifdef configUSE_MINIMAL_IDLE_HOOK */
|
||||
|
||||
#ifdef configUSE_TASK_PREEMPTION_DISABLE
|
||||
#undef configUSE_TASK_PREEMPTION_DISABLE
|
||||
#endif /* ifdef configUSE_TASK_PREEMPTION_DISABLE */
|
||||
|
||||
#ifdef configUSE_TIME_SLICING
|
||||
#undef configUSE_TIME_SLICING
|
||||
#endif /* ifdef configUSE_TIME_SLICING */
|
||||
|
||||
#ifdef configUSE_PREEMPTION
|
||||
#undef configUSE_PREEMPTION
|
||||
#endif /* ifdef configUSE_PREEMPTION */
|
||||
|
||||
#endif /* ifndef TEST_CONFIG_H */
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* FreeRTOS V202212.00
|
||||
* Copyright (C) 2022 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file test.c
|
||||
* @brief Describe the test here briefly.
|
||||
*
|
||||
* Describe the test here in detail.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
|
||||
/* Unity testing includes. */
|
||||
#include "unity.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
#if ( configNUMBER_OF_CORES < 2 )
|
||||
#error This test is for FreeRTOS SMP and therefore, requires at least 2 cores.
|
||||
#endif
|
||||
|
||||
#ifndef TEST_CONFIG_H
|
||||
#error test_config.h must be included at the end of FreeRTOSConfig.h.
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Declare #defines used in this file here. */
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Declare local functions used in this file here. */
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Declare local variables used in this file here. */
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Runs before every test, put init calls here. */
|
||||
void setUp( void )
|
||||
{
|
||||
/* Create FreeRTOS resources required for the test. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Runs after every test, put clean-up calls here. */
|
||||
void tearDown( void )
|
||||
{
|
||||
/* Delete all the FreeRTOS resources created in setUp. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void Test_TestCaseName( void )
|
||||
{
|
||||
/* Perform any API call needed for the test. */
|
||||
|
||||
/* Verify the result. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Function that runs the test case. This function must be called
|
||||
* from a FreeRTOS task. */
|
||||
void vRunTestCaseName( void )
|
||||
{
|
||||
UNITY_BEGIN();
|
||||
|
||||
RUN_TEST( Test_TestCaseName );
|
||||
|
||||
UNITY_END();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
Loading…
Reference in New Issue