diff --git a/flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c b/flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c similarity index 100% rename from flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c rename to flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c diff --git a/flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c.documentation.txt b/flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c.documentation.txt similarity index 100% rename from flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c.documentation.txt rename to flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/port.c.documentation.txt diff --git a/flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/portmacro.h b/flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/portmacro.h new file mode 100644 index 000000000..f378cd25d --- /dev/null +++ b/flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/Posix/portmacro.h @@ -0,0 +1,177 @@ +/* + FreeRTOS V8.0.0 - Copyright (C) 2014 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that has become a de facto standard. * + * * + * Help yourself get started quickly and support the FreeRTOS * + * project by purchasing a FreeRTOS tutorial book, reference * + * manual, or both from: http://www.FreeRTOS.org/Documentation * + * * + * Thank you! * + * * + *************************************************************************** + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception. + + >>! NOTE: The modification to the GPL is included to allow you to distribute + >>! a combined work that includes FreeRTOS without being obliged to provide + >>! the source code for proprietary components outside of the FreeRTOS + >>! kernel. + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available from the following + link: http://www.freertos.org/a00114.html + + 1 tab == 4 spaces! + + *************************************************************************** + * * + * Having a problem? Start by reading the FAQ "My application does * + * not run, what could be wrong?" * + * * + * http://www.FreeRTOS.org/FAQHelp.html * + * * + *************************************************************************** + + http://www.FreeRTOS.org - Documentation, books, training, latest versions, + license and Real Time Engineers Ltd. contact details. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High + Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + + +#ifndef PORTMACRO_H +#define PORTMACRO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * 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 + +typedef portSTACK_TYPE StackType_t; +typedef long BaseType_t; +typedef unsigned long UBaseType_t; + +#if( configUSE_16_BIT_TICKS == 1 ) + typedef uint16_t TickType_t; + #define portMAX_DELAY ( TickType_t ) 0xffff +#else + typedef uint32_t TickType_t; + #define portMAX_DELAY ( TickType_t ) 0xffffffffUL +#endif +/*-----------------------------------------------------------*/ + +/* Architecture specifics. */ +#define portSTACK_GROWTH ( -1 ) +#define portTICK_PERIOD_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) +#define portTICK_RATE_MICROSECONDS ( ( portTickType ) 1000000 / configTICK_RATE_HZ ) +#define portBYTE_ALIGNMENT 4 +#define portREMOVE_STATIC_QUALIFIER +/*-----------------------------------------------------------*/ + + +/* Scheduler utilities. */ +extern void vPortYieldFromISR( void ); +extern void vPortYield( void ); + +#define portYIELD() vPortYield() + +#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) vPortYieldFromISR() +/*-----------------------------------------------------------*/ + + +/* 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 ); + +#define portSET_INTERRUPT_MASK_FROM_ISR() xPortSetInterruptMask() +#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vPortClearInterruptMask(x) + + +extern void vPortEnterCritical( void ); +extern void vPortExitCritical( void ); + +#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK() +#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK() +#define portENTER_CRITICAL() vPortEnterCritical() +#define portEXIT_CRITICAL() vPortExitCritical() +/*-----------------------------------------------------------*/ + +/* Task function macros as described on the FreeRTOS.org WEB site. */ +#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) + +#define portNOP() + +#define portOUTPUT_BYTE( a, b ) + +extern void vPortForciblyEndThread( void *pxTaskToDelete ); +#define traceTASK_DELETE( pxTaskToDelete ) vPortForciblyEndThread( pxTaskToDelete ) + +extern void vPortAddTaskHandle( void *pxTaskHandle ); +#define traceTASK_CREATE( pxNewTCB ) vPortAddTaskHandle( pxNewTCB ) + +/* Posix Signal definitions that can be changed or read as appropriate. */ +#define SIG_SUSPEND SIGUSR1 + +/* Make use of times(man 2) to gather run-time statistics on the tasks. */ +extern void vPortFindTicksPerSecond( void ); +#undef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS +#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vPortFindTicksPerSecond() /* Nothing to do because the timer is already present. */ +extern unsigned long ulPortGetTimerValue( void ); +#undef portGET_RUN_TIME_COUNTER_VALUE +#define portGET_RUN_TIME_COUNTER_VALUE() ulPortGetTimerValue() /* Query the System time stats for this process. */ + +#ifdef __cplusplus +} +#endif + +#endif /* PORTMACRO_H */ + diff --git a/flight/pios/posix/libraries/.no-auto-format b/flight/pios/posix/libraries/.no-auto-format deleted file mode 100644 index e69de29bb..000000000 diff --git a/flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/portmacro.h b/flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/portmacro.h deleted file mode 100644 index 1742ea177..000000000 --- a/flight/pios/posix/libraries/FreeRTOS/Source/portable/GCC/Posix/portmacro.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - FreeRTOS.org V5.2.0 - Copyright (C) 2003-2009 Richard Barry. - - This file is part of the FreeRTOS.org distribution. - - FreeRTOS.org is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License (version 2) as published - by the Free Software Foundation and modified by the FreeRTOS exception. - - FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59 - Temple Place, Suite 330, Boston, MA 02111-1307 USA. - - A special exception to the GPL is included to allow you to distribute a - combined work that includes FreeRTOS.org without being obliged to provide - the source code for any proprietary components. See the licensing section - of http://www.FreeRTOS.org for full details. - - - *************************************************************************** - * * - * Get the FreeRTOS eBook! See http://www.FreeRTOS.org/Documentation * - * * - * This is a concise, step by step, 'hands on' guide that describes both * - * general multitasking concepts and FreeRTOS specifics. It presents and * - * explains numerous examples that are written using the FreeRTOS API. * - * Full source code for all the examples is provided in an accompanying * - * .zip file. * - * * - *************************************************************************** - - 1 tab == 4 spaces! - - Please ensure to read the configuration and relevant port sections of the - online documentation. - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - - -#ifndef PORTMACRO_H -#define PORTMACRO_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*----------------------------------------------------------- - * 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 int -#define portSHORT short -#define portSTACK_TYPE unsigned long -#define portBASE_TYPE long - -#if( configUSE_16_BIT_TICKS == 1 ) - typedef unsigned portSHORT portTickType; - #define portMAX_DELAY ( portTickType ) 0xffff -#else - typedef unsigned portLONG portTickType; - #define portMAX_DELAY ( portTickType ) 0xffffffff -#endif -/*-----------------------------------------------------------*/ - -/* Architecture specifics. */ -#define portSTACK_GROWTH ( -1 ) -#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) -#define portTICK_RATE_MICROSECONDS ( ( portTickType ) 1000000 / configTICK_RATE_HZ ) -#define portBYTE_ALIGNMENT 4 -#define portREMOVE_STATIC_QUALIFIER -/*-----------------------------------------------------------*/ - - -/* Scheduler utilities. */ -extern void vPortYieldFromISR( void ); -extern void vPortYield( void ); - -#define portYIELD() vPortYield() - -#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) vPortYieldFromISR() -/*-----------------------------------------------------------*/ - - -/* 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 ); - -#define portSET_INTERRUPT_MASK_FROM_ISR() xPortSetInterruptMask() -#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vPortClearInterruptMask(x) - - -extern void vPortEnterCritical( void ); -extern void vPortExitCritical( void ); - -#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK() -#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK() -#define portENTER_CRITICAL() vPortEnterCritical() -#define portEXIT_CRITICAL() vPortExitCritical() -/*-----------------------------------------------------------*/ - -/* Task function macros as described on the FreeRTOS.org WEB site. */ -#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) -#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) - -#define portNOP() - -#define portOUTPUT_BYTE( a, b ) - -extern void vPortForciblyEndThread( void *pxTaskToDelete ); -#define traceTASK_DELETE( pxTaskToDelete ) vPortForciblyEndThread( pxTaskToDelete ) - -extern void vPortAddTaskHandle( void *pxTaskHandle ); -#define traceTASK_CREATE( pxNewTCB ) vPortAddTaskHandle( pxNewTCB ) - -/* Posix Signal definitions that can be changed or read as appropriate. */ -#define SIG_SUSPEND SIGUSR1 - -/* Make use of times(man 2) to gather run-time statistics on the tasks. */ -extern void vPortFindTicksPerSecond( void ); -#undef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vPortFindTicksPerSecond() /* Nothing to do because the timer is already present. */ -extern unsigned long ulPortGetTimerValue( void ); -#undef portGET_RUN_TIME_COUNTER_VALUE -#define portGET_RUN_TIME_COUNTER_VALUE() ulPortGetTimerValue() /* Query the System time stats for this process. */ - -#ifdef __cplusplus -} -#endif - -#endif /* PORTMACRO_H */ - diff --git a/flight/pios/posix/libraries/FreeRTOS/Source/portable/MemMang/heap_3.c b/flight/pios/posix/libraries/FreeRTOS/Source/portable/MemMang/heap_3.c deleted file mode 100644 index 190b8d58c..000000000 --- a/flight/pios/posix/libraries/FreeRTOS/Source/portable/MemMang/heap_3.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd. - - *************************************************************************** - * * - * If you are: * - * * - * + New to FreeRTOS, * - * + Wanting to learn FreeRTOS or multitasking in general quickly * - * + Looking for basic training, * - * + Wanting to improve your FreeRTOS skills and productivity * - * * - * then take a look at the FreeRTOS eBook * - * * - * "Using the FreeRTOS Real Time Kernel - a Practical Guide" * - * http://www.FreeRTOS.org/Documentation * - * * - * A pdf reference manual is also available. Both are usually delivered * - * to your inbox within 20 minutes to two hours when purchased between 8am * - * and 8pm GMT (although please allow up to 24 hours in case of * - * exceptional circumstances). Thank you for your support! * - * * - *************************************************************************** - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - ***NOTE*** The exception to the GPL is included to allow you to distribute - a combined work that includes FreeRTOS without being obliged to provide the - source code for proprietary components outside of the FreeRTOS kernel. - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - - -/* - * Implementation of pvPortMalloc() and vPortFree() that relies on the - * compilers own malloc() and free() implementations. - * - * This file can only be used if the linker is configured to to generate - * a heap memory area. - * - * See heap_2.c and heap_1.c for alternative implementations, and the memory - * management pages of http://www.FreeRTOS.org for more information. - */ - -#include - -/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining -all the API functions to use the MPU wrappers. That should only be done when -task.h is included from an application file. */ -#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE - -#include "FreeRTOS.h" -#include "task.h" - -#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE - -/*-----------------------------------------------------------*/ - -void *pvPortMalloc( size_t xWantedSize ) -{ -void *pvReturn; - - vTaskSuspendAll(); - { - pvReturn = malloc( xWantedSize ); - } - xTaskResumeAll(); - - #if( configUSE_MALLOC_FAILED_HOOK == 1 ) - { - if( pvReturn == NULL ) - { - extern void vApplicationMallocFailedHook( void ); - vApplicationMallocFailedHook(); - } - } - #endif - - return pvReturn; -} -/*-----------------------------------------------------------*/ - -void vPortFree( void *pv ) -{ - if( pv ) - { - vTaskSuspendAll(); - { - free( pv ); - } - xTaskResumeAll(); - } -} - - - diff --git a/flight/pios/posix/libraries/FreeRTOS/Source/portable/readme.txt b/flight/pios/posix/libraries/FreeRTOS/Source/portable/readme.txt deleted file mode 100644 index a20d687e0..000000000 --- a/flight/pios/posix/libraries/FreeRTOS/Source/portable/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -Each real time kernel port consists of three files that contain the core kernel -components and are common to every port, and one or more files that are -specific to a particular microcontroller and/or compiler. - - -+ The FreeRTOS/Source/Portable/MemMang directory contains the three sample -memory allocators as described on the http://www.FreeRTOS.org WEB site. - -+ The other directories each contain files specific to a particular -microcontroller or compiler. - - - -For example, if you are interested in the GCC port for the ATMega323 -microcontroller then the port specific files are contained in -FreeRTOS/Source/Portable/GCC/ATMega323 directory. If this is the only -port you are interested in then all the other directories can be -ignored. - diff --git a/flight/pios/posix/libraries/FreeRTOS/library.mk b/flight/pios/posix/libraries/FreeRTOS/library.mk deleted file mode 100644 index 08381319f..000000000 --- a/flight/pios/posix/libraries/FreeRTOS/library.mk +++ /dev/null @@ -1,10 +0,0 @@ -# -# Rules to add FreeRTOS to a PiOS target -# -# Note that the PIOS target-specific makefile will detect that FREERTOS_DIR -# has been defined and add in the target-specific pieces separately. -# - -FREERTOS_DIR := $(dir $(lastword $(MAKEFILE_LIST)))/Source -SRC += $(sort $(wildcard $(FREERTOS_DIR)/*.c)) -EXTRAINCDIRS += $(FREERTOS_DIR)/include diff --git a/flight/pios/posix/library.mk b/flight/pios/posix/library.mk index ed2e5394e..a00baf723 100644 --- a/flight/pios/posix/library.mk +++ b/flight/pios/posix/library.mk @@ -67,10 +67,11 @@ EXTRAINCDIRS += $(PIOS_DEVLIB)/inc # the device-specific pieces of the code. # ifneq ($(FREERTOS_DIR),) -FREERTOS_PORTDIR := $(PIOS_DEVLIB)/libraries/FreeRTOS/Source +FREERTOS_PORTDIR := $(FREERTOS_DIR) SRC += $(sort $(wildcard $(FREERTOS_PORTDIR)/portable/GCC/Posix/*.c)) -SRC += $(sort $(wildcard $(FREERTOS_PORTDIR)/portable/MemMang/*.c)) +SRC += $(sort $(wildcard $(FREERTOS_PORTDIR)/portable/MemMang/heap_3.c)) EXTRAINCDIRS += $(FREERTOS_PORTDIR)/portable/GCC/Posix + endif diff --git a/flight/pios/posix/pios_udp.c b/flight/pios/posix/pios_udp.c index 8f25561ac..9a1768467 100644 --- a/flight/pios/posix/pios_udp.c +++ b/flight/pios/posix/pios_udp.c @@ -139,7 +139,7 @@ int32_t PIOS_UDP_Init(uint32_t *udp_id, const struct pios_udp_cfg *cfg) /* Create transmit thread for this connection */ #if defined(PIOS_INCLUDE_FREERTOS) // ( pdTASK_CODE pvTaskCode, const portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask ); - xTaskCreate((pdTASK_CODE)PIOS_UDP_RxThread, (const signed char *)"UDP_Rx_Thread", 1024, (void *)udp_dev, (tskIDLE_PRIORITY + 1), &udp_dev->rxThread); + xTaskCreate((pdTASK_CODE)PIOS_UDP_RxThread, (const char *)"UDP_Rx_Thread", 1024, (void *)udp_dev, (tskIDLE_PRIORITY + 1), &udp_dev->rxThread); #else pthread_create(&udp_dev->rxThread, NULL, PIOS_UDP_RxThread, (void *)udp_dev); #endif diff --git a/flight/targets/boards/simposix/firmware/simposix.c b/flight/targets/boards/simposix/firmware/simposix.c index 3b51a78bd..f753a3ce2 100644 --- a/flight/targets/boards/simposix/firmware/simposix.c +++ b/flight/targets/boards/simposix/firmware/simposix.c @@ -97,7 +97,7 @@ int main() /* For Revolution we use a FreeRTOS task to bring up the system so we can */ /* always rely on FreeRTOS primitive */ - result = xTaskCreate(initTask, (const signed char *)"init", + result = xTaskCreate(initTask, (const char *)"init", INIT_TASK_STACK, NULL, INIT_TASK_PRIORITY, &initTaskHandle); PIOS_Assert(result == pdPASS);