| Changes between FreeRTOS V10.4.4 and TBD | |
| + Introduce configRUN_TIME_COUNTER_TYPE which enables developers to define | |
| the type used to hold run time statistic counters. Defaults to uint32_t | |
| for backward compatibility. #define configRUN_TIME_COUNTER_TYPE to a type | |
| (for example, uint64_t) in FreeRTOSConfig.h to override the default. | |
| + Introduce ulTaskGetIdleRunTimePercent() to complement the pre-existing | |
| ulTaskGetIdleRunTimeCounter(). Whereas the pre-existing function returns | |
| the raw run time counter value, the new function returns the percentage of | |
| the entire run time consumed by the idle task. Note the amount of idle | |
| time is only a good measure of the slack time in a system if there are no | |
| other tasks executing at the idle priority, tickless idle is not used, and | |
| configIDLE_SHOULD_YIELD is set to 0. | |
| Documentation and download available at https://www.FreeRTOS.org/ | |
| Changes between FreeRTOS V10.4.3 and FreeRTOS V10.4.4 released May 28 2021 | |
| + Minor performance improvements to xTaskIncrementTick() achieved by providing | |
| macro versions of uxListRemove() and vListInsertEnd(). | |
| + Minor refactor of timers.c that obsoletes the need for the | |
| tmrCOMMAND_START_DONT_TRACE macro and removes the need for timers.c to | |
| post to its own event queue. A consequence of this change is that auto- | |
| reload timers that miss their intended next execution time will execute | |
| again immediately rather than executing again the next time the command | |
| queue is processed. (thanks Jeff Tenney). | |
| + Fix a race condition in the message buffer implementation. The | |
| underlying cause was that length and data bytes are written and read as | |
| two distinct operations, which both modify the size of the buffer. If a | |
| context switch occurs after adding or removing the length bytes, but | |
| before adding or removing the data bytes, then another task may observe | |
| the message buffer in an invalid state. | |
| + The xTaskCreate() and xTaskCreateStatic() functions accept a task priority | |
| as an input parameter. The priority has always been silently capped to | |
| (configMAX_PRIORITIES - 1) should it be set to a value above that priority. | |
| Now values above that priority will also trigger a configASSERT() failure. | |
| + Replace configASSERT( pcQueueName ) in vQueueAddToRegistry with a NULL | |
| pointer check. | |
| + Introduce the configSTACK_ALLOCATION_FROM_SEPARATE_HEAP configuration | |
| constant that enables the stack allocated to tasks to come from a heap other | |
| than the heap used by other memory allocations. This enables stacks to be | |
| placed within special regions, such as fast tightly coupled memory. | |
| + If there is an attempt to add the same queue or semaphore handle to the | |
| queue registry more than once then prior versions would create two separate | |
| entries. Now if this is done the first entry is overwritten rather than | |
| duplicated. | |
| + Update the ESP32 port and TF-M (Trusted Firmware M)code to the latest from | |
| their respective repositories. | |
| + Correct a build error in the POSIX port. | |
| + Additional minor formatting updates, including replacing tabs with spaces | |
| in more files. | |
| + Other minor updates include adding additional configASSERT() checks and | |
| correcting and improving code comments. | |
| + Go look at the smp branch to see the progress towards the Symetric | |
| Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp | |
| Changes between FreeRTOS V10.4.2 and FreeRTOS V10.4.3 released December 14 2020 | |
| V10.4.3 is included in the 202012.00 LTS release. Learn more at https:/freertos.org/lts-libraries.html | |
| See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html | |
| + Changes to improve robustness and consistency for buffer allocation in | |
| the heap, queue and stream buffer. | |
| + The following functions can no longer be called from unprivileged code. | |
| - xTaskCreateRestricted | |
| - xTaskCreateRestrictedStatic | |
| - vTaskAllocateMPURegions | |
| Changes between FreeRTOS V10.4.1 and FreeRTOS V10.4.2 released November 10 2020 | |
| See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html | |
| + Fix an issue in the ARMv8-M ports that caused BASEPRI to be masked | |
| between the first task starting to execute and that task making | |
| a FreeRTOS API call. | |
| + Introduced xTaskDelayUntil(), which is functionally equivalent to | |
| vTaskDelayUntil(), with the addition of returning a value to | |
| indicating whether or not the function placed the calling task into | |
| the Blocked state or not. | |
| + Update WolfSSL to 4.5.0 and add the FIPS ready demo. | |
| + Add support for ESP IDF 4.2 to ThirdParty Xtensa port. | |
| + Re-introduce uxTopUsedPriority to support OpenOCD debugging. | |
| + Convert most dependent libraries in FreeRTOS/FreeRTOS to submodules. | |
| + Various general maintenance and improvements to MISRA compliance. | |
| Changes between FreeRTOS V10.4.0 and FreeRTOS V10.4.1 released September 17 2020 | |
| See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html | |
| + Fixed an incorrectly named parameter that prevented the | |
| ulTaskNotifyTakeIndexed macro compiling, and the name space clash in the | |
| test code that prevented this error causing test failures. | |
| Changes between FreeRTOS V10.3.1 and FreeRTOS V10.4.0 released September 10 2020 | |
| See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html | |
| Major enhancements: | |
| + Task notifications: Prior to FreeRTOS V10.4.0 each created task had a | |
| single direct to task notification. From FreeRTOS V10.4.0 each task has | |
| an array of notifications. The direct to task notification API has been | |
| extended with API functions postfixed with "Indexed" to enable the API to | |
| operate on a task notification at any array index. See | |
| https://www.freertos.org/RTOS-task-notifications.html for more information. | |
| + Kernel ports that support memory protection units (MPUs): The ARMv7-M and | |
| ARMv8-M MPU ports now support a privilege access only heap. The ARMv7-M | |
| MPU ports now support devices that have 16 MPU regions, have the ability | |
| to override default memory attributes for privileged code and data | |
| regions, and have the ability to place the FreeRTOS kernel code outside of | |
| the Flash memory. The ARMv8-M MPU ports now support tickless idle mode. | |
| See https://www.freertos.org/FreeRTOS-MPU-memory-protection-unit.html | |
| for more information. | |
| Additional noteworthy updates: | |
| + Code formatting is now automated to facilitate the increase in | |
| collaborative development in Git. The auto-formated code is not identical | |
| to the original formatting conventions. Most notably spaces are now used | |
| in place of tabs. | |
| + The prototypes for callback functions (those that start with "Application", | |
| such as vApplicationStackOverflowHook()) are now in the FreeRTOS header | |
| files, removing the need for application writers to add prototypes into | |
| the C files in which they define the functions. | |
| + New Renesas RXv3 port layer. | |
| + Updates to the Synopsys ARC code, including support for EM and HS cores, | |
| and updated BSP. | |
| + Added new POSIX port layer that allows FreeRTOS to run on Linux hosts in | |
| the same way the Windows port layer enables FreeRTOS to run on Windows | |
| hosts. | |
| + Many other minor optimisations and enhancements. For full details | |
| see https://github.com/FreeRTOS/FreeRTOS-Kernel/commits/main | |
| Changes between FreeRTOS V10.3.0 and FreeRTOS V10.3.1 released February 18 2020 | |
| See https://www.FreeRTOS.org/FreeRTOS-V10.3.x.html | |
| + ./FreeRTOS-Labs directory was removed from this file. The libraries it | |
| contained are now available as a separate download. | |
| Changes between FreeRTOS V10.2.1 and FreeRTOS V10.3.0 released February 7 2020 | |
| See https://www.FreeRTOS.org/FreeRTOS-V10.3.x.html | |
| New and updated kernel ports: | |
| + Added RISC-V port for the IAR compiler. | |
| + Update the Windows simulator port to use a synchronous object to prevent | |
| a user reported error whereby a task continues to run for a short time | |
| after being moved to the Blocked state. Note we were not able to | |
| replicate the reported issue and it likely depends on your CPU model. | |
| + Correct alignment of stack top in RISC-V port when | |
| configISR_STACK_SIZE_WORDS is defined to a non zero value, which causes | |
| the interrupt stack to be statically allocated. | |
| + The RISC-V machine timer compare register can now be for any HART, whereas | |
| previously it was always assumed FreeRTOS was running on HART 0. | |
| + Update the sequence used to update the 64-bit machine timer | |
| compare register on 32-bit cores to match that suggested in RISC-V | |
| documentation. | |
| + Added tickless low power modes into the ARM, IAR and GCC Cortex-M0 compiler | |
| ports. | |
| + Updated the behaviour of the ARMv7-M MPU (Memory Protection Unit) ports to | |
| match that of the ARMv8-M ports whereby privilege escalations can only | |
| originate from within the kernel's own memory segment. Added | |
| configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY configuration constant. | |
| + Update existing MPU ports to correctly disable the MPU before it is | |
| updated. | |
| + Added contributed port and demo application for a T-Head (formally C-SKY) | |
| microcontroller. | |
| New API functions: | |
| + Added the vPortGetHeapStats() API function which returns information on | |
| the heap_4 and heap_5 state. | |
| + Added xTaskCatchUpTicks(), which corrects the tick count value after the | |
| application code has held interrupts disabled for an extended period. | |
| + Added xTaskNotifyValueClear() API function. | |
| + Added uxTimerGetReloadMode() API function. | |
| Other miscellaneous changes: | |
| + Change type of uxPendedTicks from UBaseType_t to TickType_t to ensure it | |
| has the same type as variables with which it is compared to, and therefore | |
| also renamed the variable xPendingTicks. | |
| + Update Keil projects that use the MPU so memory regions come from linker | |
| script (scatter file) variables instead of being hard coded. | |
| + Added LPC51U68 Cortex-M0+ demos for GCC (MCUXpresso), Keil and IAR | |
| compilers. | |
| + Added CORTEX_MPU_STM32L4_Discovery_Keil_STM32Cube demo. | |
| + Added LPC54018 MPU demo. | |
| + Rename xTaskGetIdleRunTimeCounter() to ulTaskGetIdleRunTimeCounter(). | |
| Changes between FreeRTOS V10.2.1 and FreeRTOS V10.2.0 released May 13 2019: | |
| + Added ARM Cortex-M23 port layer to complement the pre-existing ARM | |
| Cortex-M33 port layer. | |
| + The RISC-V port now automatically switches between 32-bit and 64-bit | |
| cores. | |
| + Introduced the portMEMORY_BARRIER macro to prevent instruction re-ordering | |
| when GCC link time optimisation is used. | |
| + Introduced the portDONT_DISCARD macro to the ARMv8-M ports to try and | |
| prevent the secure side builds from removing symbols required by the | |
| non secure side build. | |
| + Introduced the portARCH_NAME to provide additional data to select semi- | |
| automated build environments. | |
| + Cortex-M33 and Cortex-M23 ports now correctly disable the MPU before | |
| updating the MPU registers. | |
| + Added Nuvoton NuMaker-PFM-M2351 ARM Cortex-M23 demo. | |
| + Added LPC55S69 ARM Cortex-M33 demo. | |
| + Added an STM32 dual core AMP stress test demo. | |
| Changes between FreeRTOS V10.1.1 and FreeRTOS V10.2.0 released February 25 2019: | |
| + Added GCC RISC-V MCU port with three separate demo applications. | |
| + Included pre-existing ARM Cortex-M33 (ARMv8-M) GCC/ARMclang and IAR ports | |
| with Keil simulator demo. | |
| + Update the method used to detect if a timer is active. Previously the | |
| timer was deemed to be inactive if it was not referenced from a list. | |
| However, when a timer is updated it is temporarily removed from, then | |
| re-added to a list, so now the timer's active status is stored separately. | |
| + Add vTimerSetReloadMode(), xTaskGetIdleRunTimeCounter(), and | |
| xTaskGetApplicationTaskTagFromISR() API functions. | |
| + Updated third party Xtensa port so it is MIT licensed. | |
| + Added configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H to the Renesas | |
| compiler RX600v2 port to enable switching between platform.h and | |
| iodefine.h includes within that port's port.c file. | |
| + Removed the 'FromISR' functions from the MPU ports as ISRs run privileged | |
| anyway. | |
| + Added uxTaskGetStackHighWaterMark2() function to enable the return type to | |
| be changed without breaking backward compatibility. | |
| uxTaskGetStackHighWaterMark() returns a UBaseType_t as always, | |
| uxTaskGetStackHighWaterMark2() returns configSTACK_DEPTH_TYPE to allow the | |
| user to determine the return type. | |
| + Fixed issues in memory protected ports related to different combinations | |
| of static memory only and dynamic memory only builds. As a result the | |
| definition of tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE became more | |
| complex and was moved to FreeRTOS.h with a table explaining its definition. | |
| + Added a 'get task tag from ISR' function. | |
| + Change the method used to determine if a timer is active or not from just | |
| seeing if it is referenced from the active timer list to storing its | |
| active state explicitly. The change prevents the timer reporting that it | |
| is inactive while it is being moved from one list to another. | |
| + The pcName parameter passed into the task create functions can be NULL, | |
| previously a name had to be provided. | |
| + When using tickless idle, prvResetNextTaskUnblockTime() is now only called | |
| in xTaskRemoveFromEventList() if the scheduler is not suspended. | |
| + Introduced portHAS_STACK_OVERFLOW_CHECKING, which should be set to 1 for | |
| FreeRTOS ports that run on architectures that have stack limit registers. | |
| Changes between FreeRTOS V10.1.0 and FreeRTOS V10.1.1 released 7 September 2018 | |
| + Reverted a few structure name changes that broke several kernel aware | |
| debugger plug-ins. | |
| + Updated to the latest trace recorder code. | |
| + Fixed some formatting in the FreeRTOS+TCP TCP/IP stack code. | |
| + Reverted moving some variables from file to function scope as doing so | |
| broke debug scenarios that require the static qualifier to be removed. | |
| Changes between FreeRTOS V10.0.1 and FreeRTOS V10.1.0 released 22 August 2018 | |
| FreeRTOS Kernel Changes: | |
| + Update lint checked MISRA compliance to use the latest MISRA standard, was | |
| previously using the original MISRA standard. | |
| + Updated all object handles (TaskHandle_t, QueueHandle_t, etc.) to be | |
| unique types instead of void pointers, improving type safety. (this was | |
| attempted some years back but had to be backed out due to bugs in some | |
| debuggers). Note this required the pvContainer member of a ListItem_t | |
| struct to be renamed - set configENABLE_BACKWARD_COMPATIBILITY to 1 if | |
| this causes an issue. | |
| + Added configUSE_POSIX_ERRNO to enable per task POSIX style errno | |
| functionality in a more user friendly way - previously the generic thread | |
| local storage feature was used for this purpose. | |
| + Added Xtensa port and demo application for the XCC compiler. | |
| + Changed the implementation of vPortEndScheduler() for the Win32 port to | |
| simply call exit( 0 ). | |
| + Bug fix in vPortEnableInterrupt() for the GCC Microblaze port to protect | |
| the read modify write access to an internal Microblaze register. | |
| + Fix minor niggles when the MPU is used with regards to prototype | |
| differences, static struct size differences, etc. | |
| + The usStackHighWaterMark member of the TaskStatus_t structure now has type | |
| configSTACK_DEPTH_TYPE in place of uint16_t - that change should have been | |
| made when the configSTACK_DEPTH_TYPE type (which gets around the previous | |
| 16-bit limit on stack size specifications) was introduced. | |
| + Added the xMessageBufferNextLengthBytes() API function and likewise stream | |
| buffer equivalent. | |
| + Introduce configMESSAGE_BUFFER_LENGTH_TYPE to allow the number of bytes | |
| used to hold the length of a message in the message buffer to be reduced. | |
| configMESSAGE_BUFFER_LENGTH_TYPE default to size_t, but if, for example, | |
| messages can never be more than 255 bytes it could be set to uint8_t, | |
| saving 3 bytes each time a message is written into the message buffer | |
| (assuming sizeof( size_t ) is 4). | |
| + Updated the StaticTimer_t structure to ensure it matches the size of the | |
| Timer_t structure when the size of TaskFunction_t does not equal the size | |
| of void *. | |
| + Update various Xilinx demos to use 2018.1 version of the SDK tools. | |
| + Various updates to demo tasks to maintain test coverage. | |
| + FreeRTOS+UDP was removed in FreeRTOS V10.1.0 as it was replaced by | |
| FreeRTOS+TCP, which was brought into the main download in FreeRTOS | |
| V10.0.0. FreeRTOS+TCP can be configured as a UDP only stack, and | |
| FreeRTOS+UDP does not contain the patches applied to FreeRTOS+TCP. | |
| FreeRTOS+TCP Changes: | |
| + Multiple security improvements and fixes in packet parsing routines, DNS | |
| caching, and TCP sequence number and ID generation. | |
| + Disable NBNS and LLMNR by default. | |
| + Add TCP hang protection by default. | |
| We thank Ori Karliner of Zimperium zLabs Team for reporting these issues. | |
| Changes between FreeRTOS V10.0.0 and FreeRTOS V10.0.1, released December 20 2017 | |
| + Fix position of "#if defined( __cplusplus )" in stream_buffer.h. | |
| + Correct declarations of MPU_xQueuePeek() and MPU_xQueueSemaphoreTake() in | |
| mpu_prototypes.h. | |
| + Correct formatting in vTaskList() helper function when it prints the state | |
| of the currently executing task. | |
| + Introduce #error if stream_buffer.c is built without | |
| configUSE_TASK_NOTIFICATIONS set to 1. | |
| + Update FreeRTOS+TCP to V2.0.0 | |
| - Improve the formatting of text that displays the available netword | |
| interfaces when FreeRTOS+TCP is used on Windows with WinPCap. | |
| - Introduce ipconfigSOCKET_HAS_USER_WAKE_CALLBACK option to enable a user | |
| definable callback to execute when data arrives on a socket. | |
| Changes between FreeRTOS V9.0.1 and FreeRTOS V10.0.0: | |
| The FreeRTOS kernel is now MIT licensed: https://www.FreeRTOS.org/license | |
| New Features and components: | |
| + Stream Buffers - see https://www.FreeRTOS.org/RTOS-stream-buffer-example.html | |
| + Message Buffers - see https://www.FreeRTOS.org//RTOS-message-buffer-example.html | |
| + Move FreeRTOS+TCP into the main repository, along with the basic Win32 | |
| TCP demo FreeRTOS_Plus_TCP_Minimal_Windows_Simulator. | |
| New ports or demos: | |
| + Added demo for TI SimpleLink CC3220 MCU. | |
| + Added MPU and non MPU projects for Microchip CEC and MEC 17xx and 51xx | |
| MCUs. | |
| + Added CORTEX_MPU_Static_Simulator_Keil_GCC demo to test static allocation | |
| in the MPU port. | |
| Fixes or enhancements: | |
| + Cortex-M ports push additional register prior to calling | |
| vTaskSwitchContext to ensure 8-byte alignment is maintained. Only | |
| important if a user defined tick hook function performs an operation that | |
| requires 8-byte alignment. | |
| + Optimisations to the implementation of the standard tickless idle mode on | |
| Cortex-M devices. | |
| + Improvements to the Win32 port including using higher priority threads. | |
| + Ensure interrupt stack alignment on PIC32 ports. | |
| + Updated GCC TriCore port to build with later compiler versions. | |
| + Update mpu_wrappers.c to support static allocation. | |
| + The uxNumberOfItems member of List_t is now volatile - solving an issue | |
| when the IAR compiler was used with maximum optimization. | |
| + Introduced configRECORD_STACK_HIGH_ADDRESS. When set to 1 the stack start | |
| address is saved into each task's TCB (assuming stack grows down). | |
| + Introduced configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H to allow user defined | |
| functionality, and user defined initialisation, to be added to FreeRTOS's | |
| tasks.c source file. When configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H is | |
| set to 1 a user provided header file called freertos_task_c_additions.h | |
| will be included at the bottom of tasks.c. Functions defined in that | |
| header file can call freertos_tasks_c_additions_init(), which in turn | |
| calls a macro called FREERTOS_TASKS_C_ADDITIONS_INIT(), if it is defined. | |
| FREERTOS_TASKS_C_ADDITIONS_INIT() can be defined in FreeRTOSConfig.h. | |
| + Introduced configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( x ) which can be | |
| defined by a user in FreeRTOSConfig.h. The macro is called before | |
| assessing whether to enter tickless idle mode or not. If the macro sets | |
| x to zero then tickless idle mode will not be entered. This allows users | |
| to abort tickless idle mode entry before the tickless idle function is | |
| even called - previously it was only possible to abort from within the | |
| tickless idle function itself. | |
| + Added configPRINTF(), which can be defined by users to allow all libraries | |
| to use the same print formatter. | |
| + Introduced configMAX() and configMIN() macros which default to standard | |
| max( x, y ) and min( x, y ) macro behaviour, but can be overridden if the | |
| application writer defines the same macros in FreeRTOSConfig.h. | |
| + Corrected the definition of StaticTask_t in the case where | |
| INCLUDE_xTaskAbortDelay is set to 1. | |
| + Introduced configTIMER_SERVICE_TASK_NAME and configIDLE_TASK_NAME, both of | |
| which can be defined to strings in FreeRTOSConfig.h to change the default | |
| names of the timer service and idle tasks respectively. | |
| + Only fill the stack of a newly created task with a known value if stack | |
| checking, or high water mark checking/viewing, is in use - removing the | |
| dependency on memset() in other cases. | |
| + Introduced xTaskCreateRestrictedStatic() so static allocation can be used | |
| with the MPU. | |
| + Ensure suspended tasks cannot be unsuspended by a received task | |
| notification. | |
| + Fix race condition in vTaskSetTimeOutState(). | |
| + Updated trace recorder files to the latest version. | |
| Changes since FreeRTOS V9.0.0: | |
| + Priority dis-inheritance behaviour has been enhanced in the case where a | |
| task that attempted to take a mutex that was held by a lower priority task | |
| timed out before it was able to obtain the mutex (causing the task that | |
| holds the mutex to have its priority raised, then lowered again, in | |
| accordance with the priority inheritance protocol). | |
| + Split the overloaded xQueueGenericReceive() function into three separate | |
| dedicated functions. | |
| + Allow the default human readable text names given to the Idle and Timer | |
| tasks to be overridden by defining the configIDLE_TASK_NAME and | |
| configTIMER_SERVICE_TASK_NAME definitions respectively in FreeRTOSConfig.h. | |
| + Introduced configINITIAL_TICK_COUNT to allow the tick count to take a | |
| value of than than 0 when the system boots. This can be useful for | |
| testing purposes - although setting configUSE_16_BIT_TICKS to 1 can also | |
| be used to test frequent tick overflows. | |
| + Ensure the Cortex-M SysTick count is cleared to zero before starting the | |
| first task. | |
| + Add configASSERT() into ARM Cortex-M ports to check the number of priority | |
| bit settings. | |
| + Clear the 'control' register before starting ARM Cortex-M4F ports in case | |
| the FPU is used before the scheduler is started. This just saves a few | |
| bytes on the main stack as it prevents space being left for a later save | |
| of FPU registers. | |
| + Added xSemaphoreGetMutexHolderFromISR(). | |
| + Corrected use of portNVIC_PENDSVSET to portNVIC_PENDSVSET_BIT in MPU ports. | |
| + Introduced configSTACK_DEPTH_TYPE to allow users to change the type used | |
| to specify the stack size when using xTaskCreate(). For historic reasons, | |
| when FreeRTOS was only used on small MCUs, the type was set to uint16_t, | |
| but that can be too restrictive when FreeRTOS is used on larger | |
| processors. configSTACK_DEPTH_TYPE defaults to uint16_t. | |
| xTaskCreateStatic(), being a newer function, used a uint32_t. | |
| + Increase the priority of the Windows threads used by the Win32 port. As | |
| all the threads run on the same core, and the threads run with very high | |
| priority, there is a risk that the host will become unresponsive, so also | |
| prevent the Windows port executing on single core hosts. | |
| Changes between FreeRTOS V9.0.0 and FreeRTOS V9.0.0rc2 released May 25 2016: | |
| See https://www.FreeRTOS.org/FreeRTOS-V9.html | |
| RTOS kernel updates: | |
| + The prototype of the new xTaskCreateStatic() API function was modified to | |
| remove a parameter and improve compatibility with other new | |
| "CreateStatic()" API functions. The stack size parameter in | |
| xTaskCreateStatic() is now uint32_t, which changes the prototype of the | |
| callback functions. See the following URL: | |
| https://www.FreeRTOS.org/xTaskCreateStatic.html | |
| + GCC ARM Cortex-A port: Introduced the configUSE_TASK_FPU_SUPPORT | |
| constant. When configUSE_TASK_FPU_SUPPORT is set to 2 every task is | |
| automatically given a floating point (FPU) context. | |
| + GCC ARM Cortex-A port: It is now possible to automatically save and | |
| restore all floating point (FPU) registers on entry to each potentially | |
| nested interrupt by defining vApplicationFPUSafeIRQHandler() instead of | |
| vApplicationIRQHandler(). | |
| + All ARM Cortex-M3/4F/7 ports: Clear the least significant bit of the task | |
| entry address placed onto the stack of a task when the task is created for | |
| strict compliance with the ARM Cortex-M3/4/7 architecture documentation | |
| (no noticeable effect unless using the QMEU emulator). | |
| + Added GCC and Keil ARM Cortex-M4F MPU ports - previously the MPU was only | |
| supported on ARM Cortex-M3. | |
| + ARM Cortex-M3/4F MPU ports: Update to fully support the FreeRTOS V9.0.0 | |
| API (other than static object creation) and added the | |
| FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC demo application to | |
| demonstrate how to use the updated MPU port. | |
| + All ARM Cortex-M3/4F/7 ports: Add additional barrier instructions to the | |
| default low power tickless implementation. | |
| + All ARM Cortex-M0 ports: Prevent an item being left on the stack of the | |
| first task that executes. | |
| + Win32 ports: Reduce the amount of stack used and change the way Windows | |
| threads are deleted to increase the maximum execution time. | |
| + Add an ARM Cortex-M4F port for the MikroC compiler. Ensure to read the | |
| documentation page for this port before use. | |
| + MPS430X IAR port: Update to be compatible with the latest EW430 tools | |
| release. | |
| + IAR32 GCC port: Correct vPortExitCritical() when | |
| configMAX_API_CALL_INTERRUPT_PRIORITY == portMAX_PRIORITY. | |
| + For consistency vTaskGetTaskInfo() now has the alias vTaskGetInfo(), | |
| xTaskGetTaskHandle() now has the alias xTaskGetHandle() and | |
| pcQueueGetQueueName() now has an alias pcQueueGetName(). | |
| + Fix various errors in comments and compiler warnings. | |
| Demo application updates: | |
| + Update Atmel Studio projects to use Atmel Studio 7. | |
| + Update Xilinx SDK projects to use the 2016.1 version of the SDK. | |
| + Remove dependency on legacy IO libraries from the PIC32 demos. | |
| + Move the Xilinx UltraScale Cortex-R5 demo into the main distribution. | |
| + Update the MSP432 libraries to the latest version. | |
| + Add Microchip CEC1302 (ARM Cortex-M4F) demos for GCC, Keil and MikroC | |
| compilers. | |
| + Move the Atmel SAMA5D2 demo into the main distribution. | |
| Changes between FreeRTOS V9.0.0rc1 and FreeRTOS V9.0.0rc2 (release candidate 2) | |
| released March 30 2016: | |
| NOTE - See https://www.FreeRTOS.org/FreeRTOS-V9.html for details | |
| + The functions that create RTOS objects using static memory allocation have | |
| been simplified and will not revert to using dynamic allocation if a | |
| buffer is passed into a function as NULL. | |
| + Introduced the configSUPPORT_DYNAMIC_ALLOCATION configuration constant to | |
| allow a FreeRTOS application to be built without a heap even being being | |
| defined. The Win32 example located in the | |
| /FreeRTOS/demo/WIN32-MSVC-Static-Allocation-Only directory is provided as | |
| a reference for projects that do not include a FreeRTOS heap. | |
| + Minor run-time optimisations. | |
| + Two new low power tickless implementations that target Silicon Labs EFM32 | |
| microcontrollers. | |
| + Addition of the xTimerGetPeriod() and xTimerGetExpireTime() API functions. | |
| Changes between FreeRTOS V8.2.3 and FreeRTOS V9.0.0rc1 (release candidate 1) | |
| released February 19 2016: | |
| RTOS Kernel Updates: | |
| + Major new feature - tasks, semaphores, queues, timers and event groups can | |
| now be created using statically allocated memory, so without any calls to | |
| pvPortMalloc(). | |
| + Major new features - Added the xTaskAbortDelay() API function which allows | |
| one task to force another task to immediately leave the Blocked state, | |
| even if the event the blocked task is waiting for has not occurred, or the | |
| blocked task's timeout has not expired. | |
| + Updates necessary to allow FreeRTOS to run on 64-bit architectures. | |
| + Added vApplicationDaemonTaskStartupHook() which executes when the RTOS | |
| daemon task (which used to be called the timer service task) starts | |
| running. This is useful if the application includes initialisation code | |
| that would benefit from executing after the scheduler has been started. | |
| + Added the xTaskGetTaskHandle() API function, which obtains a task handle | |
| from the task's name. xTaskGetTaskHandle() uses multiple string compare | |
| operations, so it is recommended that it is called only once per task. | |
| The handle returned by xTaskGetTaskHandle() can then be stored locally for | |
| later re-use. | |
| + Added the pcQueueGetQueueName() API function, which obtains the name of | |
| a queue from the queue's handle. | |
| + Tickless idling (for low power applications) can now also be used when | |
| configUSE_PREEMPTION is 0. | |
| + If one task deletes another task, then the stack and TCB of the deleted | |
| task is now freed immediately. If a task deletes itself, then the stack | |
| and TCB of the deleted task are freed by the Idle task as before. | |
| + If a task notification is used to unblock a task from an ISR, but the | |
| xHigherPriorityTaskWoken parameter is not used, then pend a context switch | |
| that will then occur during the next tick interrupt. | |
| + Heap_1.c and Heap_2.c now use the configAPPLICATION_ALLOCATED_HEAP | |
| settings, which previously was only used by heap_4.c. | |
| configAPPLICATION_ALLOCATED_HEAP allows the application writer to declare | |
| the array that will be used as the FreeRTOS heap, and in-so-doing, place | |
| the heap at a specific memory location. | |
| + TaskStatus_t structures are used to obtain details of a task. | |
| TaskStatus_t now includes the bae address of the task's stack. | |
| + Added the vTaskGetTaskInfo() API function, which returns a TaskStatus_t | |
| structure that contains information about a single task. Previously this | |
| information could only be obtained for all the tasks at once, as an array | |
| of TaskStatus_t structures. | |
| + Added the uxSemaphoreGetCount() API function. | |
| + Replicate previous Cortex-M4F and Cortex-M7 optimisations in some | |
| Cortex-M3 port layers. | |
| Demo Application Updates: | |
| Further demo applications will be added prior to the final FreeRTOS V9 | |
| release. | |
| + Updated SAM4L Atmel Studio project to use Atmel Studio 7. | |
| + Added ARM Cortex-A53 64-bit port. | |
| + Added a port and demo for the ARM Cortex-A53 64-bit cores on the Xilinx | |
| Ultrascale MPSoC. | |
| + Added Cortex-M7 SAME70 GCC demo. | |
| + Added EFM32 Giant and Wonder Gecko demos. | |
| Changes between V8.2.2 and V8.2.3 released October 16, 2015 | |
| RTOS kernel updates: | |
| + Fix bug identified in a modification made in V8.2.2 to the software timer | |
| code that allows tickless low power applications to sleep indefinitely | |
| when software timers are used. | |
| + Simplify and improve efficiency of stack overflow checking. | |
| + Add xTaskNotifyStateClear() API function. | |
| + New IAR and GCC Cortex-R ports for microprocessors that do not use an ARM | |
| generic interrupt controller (GIC). | |
| + New PIC32MEC14xx port. | |
| + Add support for PIC32MZ EF parts (with floating point) into the PIC32MZ | |
| port. | |
| + Zynq7000 port layer now declares the functions that setup and clear the | |
| tick interrupt as weak symbols so they can be overridden by the | |
| application, and uses a global XScuGic object so the same object can be | |
| used by the application code. | |
| + Introduced configUSE_TASK_FPU_SUPPORT, although the PIC32MZ EF port is | |
| currently the only port that uses it. | |
| + Updates to RL78 and 78K0 IAR port layers to improve support for | |
| combinations of memory models. | |
| + Minor updates to heap_5.c to remove compiler warnings generated by some | |
| compilers. | |
| + License simplifications. See /FreeRTOS/License/license.txt in the | |
| official distribution. | |
| FreeRTOS+ updates: | |
| + Update directory names to use WolfSSL instead of CyaSSL, inline with | |
| WolfSSL's re-branding. | |
| + Update to latest WolfSSL code. | |
| + Update to latest FreeRTOS+Trace recorder code. | |
| + Add in the FreeRTOS+Trace recorder library required for streaming trace. | |
| Demo application changes: | |
| + Add demo applications for Renesas RZ/T (Cortex-R), PIC32MZ EF (PIC32 with | |
| floating point hardware), PIC32MEC14xx, RX71M, RX113 and RX231. | |
| + General tidy up of spelling and compiler warnings. | |
| Changes between V8.2.1 and V8.2.2 released August 12, 2015 | |
| RTOS kernel updates: | |
| + Added Intel IA32/x86 32-bit port. | |
| + General maintenance. | |
| + PRIVILEGED_FUNCTION and PRIVILEGED_DATA macros, which are used in memory | |
| protected systems, have been added to the newer event group and software | |
| timer functions. | |
| + Add the errno definitions used by FreeRTOS+ components into projdefs.h. | |
| + Remove the restriction that prevented tick-less idle implementations | |
| waiting indefinitely when software timers were used in the same | |
| application. | |
| + Introduce xTaskNotifyAndQueryFromISR() as the interrupt safe version of | |
| xTaskNotifyAndQuery(). | |
| + Add additional NOPs to the MSP430X port layers to ensure strict compliance | |
| with the hardware documentation. | |
| + Microblaze port: Added option for port optimised task selection. | |
| + Microblaze port: Previously tasks inherited the exception enable state | |
| at the time the task was created. Now all tasks are created with | |
| exceptions enabled if the Microblaze design supports exceptions. | |
| + Windows port: Add additional safe guards to ensure the correct start up | |
| sequence and thread switching timing. | |
| + Windows port: Improve the implementation of the port optimised task | |
| selection assembly code. | |
| + Update heap_4 and heap_5 to allow use on 64-bit processors. | |
| + Simplify the code that creates a queue. | |
| + General improved tick-less idle behaviour. | |
| + Ensure none of the variables in the common kernel files are initialised to | |
| anything other than zero. | |
| + Correct calculation of xHeapStructSize in heap_4 and heap_5. | |
| Demo application updates: | |
| + Added demo project for the new IA32/x86 port that targets the Galileo | |
| hardware. | |
| + Added MSP430FR5969 demos (previously provided as a separate download). | |
| + Added FreeRTOS BSP repository for automatic creation of FreeRTOS | |
| applications in the Xilinx SDK. | |
| + Added Atmel Studio / GCC project for the SAMV71 (ARM Cortex-M7) | |
| + Update Xilinx SDK projects to use version 2015.2 of the SDK. | |
| + Remove Microblaze demos that were using obsolete tools. | |
| + Add MSP43FR5969 IAR and CCS demos. | |
| FreeRTOS+ Updates: | |
| + Updated FreeRTOS+Trace recorder library, which requires an update to the | |
| FreeRTOS+Trace application. | |
| + Added Reliance Edge source code and demo application. Reliance edge is | |
| a fail safe transactional file system ideal for applications that require | |
| file storage, and especially when high reliability is essential. | |
| + Introduce configAPPLICATION_PROVIDES_cOutputBuffer to allow FreeRTOS+CLI | |
| users to place the output buffer at a fixed memory address. | |
| + Improve the NetworkInterface.c file provided for the Windows port of | |
| FreeRTOS+UDP. | |
| Changes between V8.2.0 and V8.2.1 released 24th March 2015. | |
| RTOS kernel updates: | |
| + Added user definable and flexible thread local storage facility. | |
| + Added vTimerSetTimerID() API function to complement the pvTimerGetTimerID() | |
| function to allow the timer's ID to be used as timer local storage. | |
| + Fixed a potential issue related to the use of queue sets from an ISR. | |
| + Some updates to the Xilinx Microblaze GCC port. | |
| + Added ARM Cortex-M4F port for Texas Instruments Code Composer Studio. | |
| + Added ARM Cortex-M7 r0p1 port layer for IAR, GCC and Keil which contains a | |
| minor errata work around. All other ARM Cortex-M7 core revisions should | |
| use the ARM Cortex-M4F port. | |
| + Exclude the whole of croutine.c if configUSE_CO_ROUTINES is set to 0. | |
| + Change some data types from uint32_t to size_t in preparation for 64-bit | |
| Windows port. | |
| + Update the PIC32 port to remove deprecation warnings output by the latest | |
| XC32 compilers. | |
| + Fix bug when xQueueOverwrite() and xQueueOverwrite() from ISR are used to | |
| overwrite items in two queues that are part of the same set. | |
| Demo application updates: | |
| + Added demo application for TI's ARM Cortex-M4F based MSP432 | |
| microcontroller using IAR, Keil and CCS compilers. | |
| + Added demo application for STM32F ARM Cortex-M7 based microcontroller | |
| using IAR and Keil. | |
| + Added demo application for Atmel SAMV71 ARM Cortex-M7 based | |
| microcontroller using IAR and Keil. | |
| + Added Microblaze demo that uses the 2014.4 version of the Xilinx SDK and | |
| runs on the KC705 evaluation board (Kintex FPGA). | |
| Changes between V8.1.2 and V8.2.0 released 16th January 2015 | |
| Changes between release candidate 1 and the official release are restricted | |
| to maintenance only. | |
| Significant RTOS kernel updates: | |
| + MAJOR NEW FEATURE! Task notifications. Please see the following URL for | |
| details: https://www.FreeRTOS.org/RTOS-task-notifications.html | |
| + NEW HEADER FILE REQUIRED! Obsolete definitions have been separated into | |
| a new header file called FreeRTOS/Source/include/deprecated_definitions.h. | |
| This header file must be present to build. Note some of the obsolete | |
| definitions are still used by very old demo application projects. | |
| Other RTOS kernel updates: | |
| + Made xSemaphoreGiveFromISR() a function rather than a macro that calls | |
| xQueueGenericSendFromISR(). This allows for major performance | |
| enhancements at the expense of some additional code size if both functions | |
| are used in the same application. NOTE: In most uses cases such use of | |
| a semaphore can now be replaced with a task notification which is smaller | |
| and faster still. | |
| + The TCB is now always allocated such that the task's stack grows away from | |
| the TCB (improves debugging of stack overflows as the overflow will not | |
| overwrite the task's name). | |
| + GCC, IAR and Keil Cortex-M4F ports now use more inlining (performance | |
| enhancements at the cost of a little additional code space). | |
| + Queues are now allocated with a single call to pvPortMalloc() which | |
| allocates both the queue structure and the queue storage area. | |
| + Introduced a new critical section macro for reading the tick count that | |
| defines away to nothing in cases where the width of the tick allows the | |
| tick count to be read atomically (performance benefits - especially when | |
| optimisation is on). | |
| + Introduced configAPPLICATION_ALLOCATED_HEAP in heap_4.c to allow the | |
| application writer to provide their own heap array - and in so doing | |
| control the location of the heap. | |
| + Introduced configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES which, when set, will | |
| include known values in both list and list item structures. The values | |
| are intended to assist debugging. If the values get overwritten then it | |
| is likely application code has written over RAM used by the kernel. | |
| + configASSERT()s in all Cortex-M ports used to test the lowest 5 bits of | |
| the interrupt control register to detect taskENTER_CRITICAL() being called | |
| from an interrupt. This has been changed to test all 8 bits. | |
| + Introduced uxTaskPriorityGetFromISR(). | |
| + Microblze V8 port now tests XPAR_MICROBLAZE_0_USE_FPU for inequality to 0 | |
| rather than equality to 1, and 2 and 3 are also valid values. | |
| + Cortex-A5 GIC-less port no longer passes the address of the interrupting | |
| peripheral into the interrupt handler. | |
| + Fix an issue in FreeRTOS-MPU where an attempt was made to free the stack | |
| belonging to a task when the task was deleted, even when the stack was | |
| allocated statically. | |
| + Utility (helper) functions that format task statistic information into | |
| human readable tables now pad task names with spaces to ensure columns | |
| line up correctly even where task name lengths vary greatly. | |
| + Update FreeRTOS+Trace recorder library to version 2.7.0. | |
| Demo application updates: | |
| + Added two new standard demo task sets: IntSemTest and TaskNotify. | |
| + Added port and demo application for Atmel SAMA5D4 Cortex-A5 MPU. | |
| + Added demo application for Altera Cyclone V Cortex-A9 MPU. | |
| + Updated Zynq demo to use version 2014.4 of Xilinx's SDK and added in | |
| demo tasks for new RTOS features. | |
| + Updated Atmel SAM4E and SAM4S demos to include a lot of additional test | |
| and demo tasks. | |
| + Fixed a corner case issue in Atmel SAM4L low power tickless | |
| implementation, and added button interrupt handling. | |
| + Make the interrupt queue tests more tolerant to heave CPU loads. | |
| + Updated MSVC FreeRTOS simulator demo to include the latest standard test | |
| and demo tasks. | |
| + Updated MingW/Eclipse FreeRTOS simulator demo to match the FreeRTOS MSVC | |
| simulator demo. | |
| + Updated all demos that use FreeRTOS+Trace to work with the latest trace | |
| recorder code. | |
| Changes between V8.1.1 and V8.1.2 released September 2nd 2014 | |
| Move the defaulting of configUSE_PORT_OPTIMISED_TASK_SELECTION into the | |
| individual port layers where necessary so it does not affect ports that do | |
| not support the definition. | |
| Changes between V8.1.0 and V8.1.1 released August 29th 2014 | |
| By popular requests - a minor patch to V8.1.0 to re-instate the ability to | |
| give a mutex type semaphore (with priority inheritance) from an interrupt | |
| handler. | |
| Changes between V8.0.1 and V8.1.0 released August 26th 2014 | |
| FreeRTOS scheduler, kernel, demo and test updates: | |
| + Improved the priority inheritance algorithms to assist integration with | |
| off the shelf middleware that may hold multiple mutexes simultaneously. | |
| + Introduce heap_5.c, which is similar to heap_4.c but allows the heap to | |
| span multiple non-contiguous memory regions. | |
| + Updated all Cortex-A9 ports to help trap a couple of common usage errors - | |
| the first being when a task incorrectly attempts to exit its implementing | |
| function and the second being when a non interrupt safe API function is | |
| called from an interrupt. | |
| + Update all Cortex-A9 ports to remove obsolete mode switches prior to | |
| restoring a task context. | |
| + configUSE_PORT_OPTIMISED_TASK_SELECTION now defaults to 1 instead of 0. | |
| + Update all Cortex-M3/4F ports to trap a non interrupt safe API function | |
| being called from an interrupt handler. | |
| + Simplify the alignment checks in heap_4.c. | |
| + Update the MSVC Windows simulator demo to use heap_5.c in place of | |
| heap_4.c to ensure end users have an example to refer to. | |
| + Updated standard demo test code to test the new priority inheritance | |
| algorithms. | |
| + Updated the standard demo tasks to make use of stdint and the FreeRTOS | |
| specific typedefs that were introduced in FreeRTOS V8.0.0. | |
| + Introduce the pdMS_TO_TICKS() macro as a more user friendly and intuitive | |
| alternative to pdTICKS_PER_MS - both of which can be used to convert a | |
| time specified in milliseconds to a time specified in RTOS ticks. | |
| + Fix a bug in the Tasking compiler's Cortex-M port that resulted in an | |
| incorrect value being written to the basepri register. This only effects | |
| users of the Tasking compiler. | |
| + Update the Zynq demo to use version 2014.2 of the SDK and add in an lwIP | |
| example that demonstrates lwIP being used with both its raw and sockets | |
| interfaces. | |
| + Updated the CCS Cortex-R4 port to enable it to be built with the latest | |
| CCS compiler. | |
| New ports and demo applications: | |
| + Two Renesas RX64M ports (RXv2 core) and demos introduced, one for the GCC | |
| compiler and one for the Renesas compiler. Both demos use e2 studio. | |
| + Generic IAR Cortex-A5 port (without any reliance on a GIC) introduced. | |
| The new port is demonstrated on an Atmel SAMA5D3 XPlained board. | |
| FreeRTOS+ component updates: | |
| + Update CyaSSL to the latest version. | |
| + Updated the FreeRTOS+ components supplied directly by Real Time Engineers | |
| Ltd. to make use of stdint and the FreeRTOS specific typedefs that were | |
| introduced in FreeRTOS V8.0.0. | |
| + Rework and simplify the FreeRTOS+FAT SL RAM disk driver. | |
| Miscellaneous updates and maintenance: | |
| + Update the IAR and DS-5/ARM RZ demos to target the official RZ RSK | |
| hardware in place of the previously targeted Renesas internal (not | |
| publicly available) hardware. | |
| + Various other maintenance tasks. | |
| Changes between V8.0.0 and V8.0.1 released 2nd May 2014 | |
| + Minor fixes to the event group functionality that was released in V8.0.0. | |
| The 'clear bits from ISR' functionality is now implemented using a | |
| deferred interrupt callback instead of a function, and the 'wait bits' and | |
| 'task sync' functions now correctly clear internal control bits before | |
| returning a value in every possible path through the respective functions. | |
| + Ensure the updating of internal control data is protected by a critical | |
| section after a task is deleted or suspended. | |
| + Minor fixes to FreeRTOS+FAT SL - namely seeking beyond the end of a file | |
| when the offset was not a multiple of the sector size. | |
| + Ensure Cortex-A9 system registers are only ever accessed as 32-bit values, | |
| even when only the lest significant byte of the register is implemented. | |
| Other updates: | |
| + Updated the XMC4200 IAR project so it links with version 7.x of the IAR | |
| tools. | |
| + Add RL78L1C demo. | |
| + Add pcTimerGetName() API function. | |
| + Call _reclaim_reent() when a task is deleted if configUSE_NEWLIB_REENTRANT | |
| is defined. | |
| Changes between V7.6.0 and V8.0.0 released 19th Feb 2014 | |
| https://www.FreeRTOS.org/upgrading-to-FreeRTOS-V8.html | |
| FreeRTOS V8.x.x is a drop-in compatible replacement for FreeRTOS V7.x.x, | |
| although a change to the type used to reference character strings may result | |
| in application code generating a few (easily clearable) compiler warnings | |
| after the upgrade, and an updated typedef naming convention means use of the | |
| old typedef names is now discouraged. | |
| See https://www.FreeRTOS.org/upgrading-to-FreeRTOS-V8.html for full | |
| information. | |
| New features and functionality: | |
| + Event groups - see https://www.FreeRTOS.org/FreeRTOS-Event-Groups.html | |
| + Centralised deferred interrupt processing - see | |
| https://www.FreeRTOS.org/xTimerPendFunctionCallFromISR.html | |
| Other updates: | |
| + Previously, when a task left the Blocked state, a context switch was | |
| performed if the priority of the unblocked task was greater than or equal | |
| to the priority of the Running task. Now a context switch is only | |
| performed if the priority of the unblocked task is greater than the | |
| priority of the Running task. | |
| + New low power tickless demonstration project that targets the ST STM32L | |
| microcontroller - see | |
| https://www.FreeRTOS.org/STM32L-discovery-low-power-tickless-RTOS-demo.html | |
| + Add xPortGetMinimumEverFreeHeapSize() to heap_4.c. | |
| + Small change to the tickless low power implementation on the SAM4L to | |
| ensure the alarm value (compare match value) cannot be set to zero when a | |
| tickless period is exited due to an interrupt originating from a source | |
| other than the RTOS tick. | |
| + Update the GCC/Eclipse Win32 simulator demo to make better use of Eclipse | |
| resource filters and match the functionality of the MSVC equivalent. | |
| + xTaskIsTaskSuspended() is no longer a public function. Use | |
| eTaskGetState() in its place. | |
| + Improved trace macros, including tracing of heap usage. | |
| + Remove one level of indirection when accepting interrupts on the PIC32MZ. | |
| + Add Cortex-A9 GCC port layer. | |
| + Add Xilinx Zynq demo application. | |
| Changes between V7.5.3 and V7.6.0 released 18th November 2013 | |
| V7.6.0 changes some behaviour when the co-operative scheduler is used (when | |
| configUSE_PREEMPTION is set to 0). It is important to note that the | |
| behaviour of the pre-emptive scheduler is unchanged - the following | |
| description only applies when configUSE_PREEMPTION is set to 0: | |
| WHEN configUSE_PREEMPTION IS SET TO 0 (which is in a small minority of | |
| cases) a context switch will now only occur when a task places itself into | |
| the Blocked state, or explicitly calls taskYIELD(). This differs from | |
| previous versions, where a context switch would also occur when implicitly | |
| moving a higher priority task out of the Blocked state. For example, | |
| previously, WHEN PREEMPTION WAS TURNED OFF, if task A unblocks task B by | |
| writing to a queue, then the scheduler would switch to the higher priority | |
| task. Now, WHEN PREEMPTION IS TURNED OFF, if task A unblocks task B by | |
| writing to a queue, task B will not start running until task A enters the | |
| Blocked state or task A calls taskYIELD(). [If configUSE_PREEMPTION is not | |
| set to 0, so the normal pre-emptive scheduler is being used, then task B | |
| will start running immediately that it is moved out of the Blocked state]. | |
| Other changes: | |
| + Added a port layer and a demo project for the new PIC32MZ architecture. | |
| + Update the PIC32MX port layer to re-introduce some ehb instructions that | |
| were previously removed, add the ability to catch interrupt stack | |
| overflows (previously only task stack overflows were trapped), and also | |
| add the ability to catch an application task incorrectly attempting to | |
| return from its implementing function. | |
| + Make dramatic improvements to the performance of the Win32 simulator port | |
| layer. | |
| + Ensure tasks that are blocked indefinitely report their state as Blocked | |
| instead of Suspended. | |
| + Slight improvement to the Cortex-M4F port layers where previously one | |
| register was inadvertently being saved twice. | |
| + Introduce the xSemaphoreCreateBinary() API function to ensure consistency | |
| in the semantics of how each semaphore type is created. It is no longer | |
| recommended to use vSemaphoreCreateBinary() (the version prefixed with a | |
| 'v'), although it will remain in the code for backward compatibility. | |
| + Update the Cortex-M0 port layers to allow the scheduler to be started | |
| without using the SVC handler. | |
| + Added a build configuration to the PIC32MX MPLAB X demo project that | |
| targets the PIC32 USB II starter kit. Previously all the build | |
| configurations required the Explorer 16 hardware. | |
| + Some of the standard demo tasks have been updated to ensure they execute | |
| correctly with the updated co-operative scheduling behaviour. | |
| + Added comprehensive demo for the Atmel SAM4E, including use of | |
| FreeRTOS+UDP, FreeRTOS+FAT SL and FreeRTOS+CLI. | |
| FreeRTOS+ Changes: | |
| + Minor maintenance on FreeRTOS+UDP. | |
| Changes between V7.5.2 and V7.5.3 released October 14 2013 | |
| Kernel changes: | |
| + Prior to V7.5.x yields requested from the tick hook would occur in the | |
| same tick interrupt - revert to that original behaviour. | |
| + New API function uxQueueSpacesAvailable(). | |
| + Introduced the prvTaskExitError() function to Cortex-M0, Cortex-M3/4 | |
| and Cortex-M4F ports. prvTaskExitError() is used to trap tasks that | |
| attempt to return from their implementing functions (tasks should call | |
| vTaskDelete( NULL ); if they want to exit). | |
| + The Cortex-M0 version of portSET_INTERRUPT_MASK_FROM_ISR and | |
| portCLEAR_INTERRUPT_MASK_FROM_ISR are now fully nestable. | |
| + Improved behaviour and robustness of the default Cortex-M tickless idle | |
| behaviour. | |
| + Add workaround for silicon errata PMU_CM001 in Infineon XMC4000 devices to | |
| all Cortex-M4F ports. | |
| + Add Cortex-M0 port for Keil. | |
| + Updated Cortus port. | |
| + Ensure _impure_ptr is initialised before the scheduler is started. | |
| Previously it was not set until the first context switch. | |
| FreeRTOS+ changes: | |
| + Update FreeRTOS+UDP to V1.0.1 - including direct integration of the | |
| FreeRTOS+Nabto task, improvements to the DHCP behaviour, and a correction | |
| to the test that prevents the network event hook being called on the first | |
| network down event. The FreeRTOS+UDP change history is maintained | |
| separately. | |
| + Correct the __NVIC_PRIO_BITS setting in the LPC18xx.h header files | |
| provided in the NXP CMSIS library, then update the interrupts used by the | |
| LPC18xx demos accordingly. | |
| + Replace double quotes (") with single quotes (') in FreeRTOS+CLI help | |
| strings to ensure the strings can be used with the JSON descriptions used | |
| in the FreeRTOS+Nabto demos. | |
| Demo and miscellaneous changes: | |
| + Added demo for the Atmel SAMD20 Cortex-M0+. The demo includes | |
| FreeRTOS+CLI | |
| + Added a demo for the Infineon Cortex-M0 that can be built with the IAR | |
| Keil and GCC tools. | |
| + Updated the Infineon XMC4000 demos for IAR, Keil, GCC and Tasking tools, | |
| with additional build configurations to directly support the XMC4200 and | |
| XMC4400 devices, in addition to the previously supported XMC4500. | |
| + Updated the demo application. | |
| + Added additional trace macros traceMALLOC and traceFREE to track heap | |
| usage. | |
| Changes between V7.5.0 and V7.5.2 released July 24 2013 | |
| V7.5.2 makes the new Cortex-M vPortCheckInterruptPriority() function | |
| compatible with the STM32 standard peripheral driver library, and adds | |
| an extra critical section to the default low power tickless mode | |
| implementation. Only users of the STM32 peripheral library or the default | |
| tickless implementation need update from version 7.5.0. | |
| Changes between V7.4.2 and V7.5.0 released July 19 2013 | |
| V7.5.0 is a major upgrade that includes multiple scheduling and efficiency | |
| improvements, and some new API functions. | |
| Compatibility information for FreeRTOS users: | |
| FreeRTOS V7.5.0 is backward compatible with FreeRTOS V7.4.0 with one | |
| exception; the vTaskList() and vTaskGetRunTimeStats() functions are now | |
| considered legacy, having been replaced by the single uxTaskGetSystemState() | |
| function. configUSE_STATS_FORMATTING_FUNCTIONS must be set to 1 in | |
| FreeRTOSConfig.h for vTaskList() and vTaskGetRunTimeStats() to be | |
| available. | |
| Compatibility information for FreeRTOS port writers: | |
| vTaskIncrementTick() is now called xTaskIncrementTick() (because it now | |
| returns a value). | |
| Headline changes: | |
| + Multiple scheduling and efficiency improvements. | |
| + Core kernel files now pass PC-Lint V8 static checking without outputting | |
| any warnings (information on the test conditions will follow). | |
| New API functions: | |
| + uxTaskGetSystemState() https://www.FreeRTOS.org/uxTaskGetSystemState.html | |
| + xQueueOverwrite() https://www.FreeRTOS.org/xQueueOverwrite.html | |
| + xQueueOverwriteFromISR() | |
| + xQueuePeekFromISR() | |
| The following ports and demos, which were previously available separately, | |
| are now incorporated into the main FreeRTOS zip file download: | |
| + ARM Cortex-A9 IAR | |
| + ARM Cortex-A9 ARM compiler | |
| + Renesas RZ | |
| + Microsemi SmartFusion2 | |
| New FreeRTOSConfig.h settings | |
| https://freertos.org/a00110.html | |
| + configUSE_TIME_SLICING | |
| + configUSE_NEWLIB_REENTRANT | |
| + configUSE_STATS_FORMATTING_FUNCTIONS | |
| + configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS | |
| Other changes: | |
| + (MPU port only) The configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS | |
| options provides a mechanism that allows application writers to execute | |
| certain functions in privileged mode even when a task is running in user | |
| mode. | |
| + Ports that support interrupt nesting now include a configASSERT() that | |
| will trigger if an interrupt safe FreeRTOS function is called from an | |
| interrupt that has a priority designated as above the maximum system/API | |
| call interrupt priority. | |
| + The included FreeRTOS+Trace recorder code has been updated to the latest | |
| version, and the demo applications that use the trace recorder code have | |
| been updated accordingly. | |
| + The FreeRTOS Windows Simulator (MSVC version only) has been updated to | |
| include a new basic 'blinky' build option in addition to the original | |
| comprehensive build option. | |
| + Improve RAM usage efficiency of heap_4.c and heap_2.c. | |
| + Prevent heap_4.c from attempting to free memory blocks that were not | |
| allocated by heap_4.c, or have already been freed. | |
| + As FreeRTOS now comes with FreeRTOS+FAT SL (donated by HCC) the Chan FATfs | |
| files have been removed from FreeRTOS/Demo/Common. | |
| + Fix build error when R4 port is build in co-operative mode. | |
| + Multiple port and demo application maintenance activities. | |
| Changes between V7.4.1 and V7.4.2 released May 1 2013 | |
| NOTE: There are no changes in the FreeRTOS kernel between V7.4.1 and V7.4.2 | |
| + Added FreeRTOS+FAT SL source code and demo project. The demo project | |
| runs in the FreeRTOS Windows simulator for easy and hardware independent | |
| experimentation and evaluation. See https://www.FreeRTOS.org/fat_sl | |
| Changes between V7.4.0 and V7.4.1 released April 18 2013 | |
| + To ensure strict conformance with the spec and ensure compatibility with | |
| future chips data and instruction barrier instructions have been added to | |
| the yield macros of Cortex-M and Cortex-R port layers. For efficiency | |
| the Cortex-M port layer "yield" and "yield" from ISR are now implemented | |
| separately as the barrier instructions are not required in the ISR case. | |
| + Added FreeRTOS+UDP into main download. | |
| + Reorganised the FreeRTOS+ directory so it now matches the FreeRTOS | |
| directory with Source and Demo subdirectories. | |
| + Implemented the Berkeley sockets select() function in FreeRTOS+UDP. | |
| + Changed (unsigned) casting in calls to standard library functions with | |
| (size_t) casting. | |
| + Added the Atmel SAM4L and Renesas RX100 demos that demonstrates the | |
| tickless (tick suppression) low power FreeRTOS features. | |
| + Add a new RL78 IAR demo that targets numerous new RL78 chips and | |
| evaluation boards. | |
| + Adjusted stack alignment on RX200 ports to ensure an assert was not | |
| falsely triggered when configASSERT() is defined. | |
| + Updated the Cortex_M4F_Infineon_XMC4500_IAR demo to build with the latest | |
| version of EWARM. | |
| + Corrected header comments in the het.c and het.h files (RM48/TMS570 demo). | |
| Changes between V7.3.0 and V7.4.0 released February 20 2013 | |
| + New feature: Queue sets. See: | |
| https://www.FreeRTOS.org/Pend-on-multiple-rtos-objects.html | |
| + Overhauled the default tickless idle mode implementation provided with the | |
| ARM Cortex-M3 port layers. | |
| + Enhanced tickless support in the core kernel code with the introduction of | |
| the configEXPECTED_IDLE_TIME_BEFORE_SLEEP macro and the | |
| eTaskConfirmSleepModeStatus() function. | |
| + Added the QueueSet.c common demo/test file. Several demo applications | |
| have been updated to use the new demo/test tasks. | |
| + Removed reliance on the PLIB libraries from the MPLAB PIC32 port layer and | |
| demo applications. | |
| + Added the FreeRTOS+Trace recorder code to the MSVC Win32 demo. | |
| + Renamed eTaskStateGet() to eTaskGetState() for consistency, and added a | |
| pre-processor macro for backward compatibility with the previous name. | |
| + Updated functions implemented in the core queue.c source file to allow | |
| queue.h to be included from the .c file directly (this prevents compiler | |
| warnings that were generated by some compilers). | |
| + Updated the CCS Cortex-R4 port layer to replace the CLZ assembler function | |
| with the CLZ compiler intrinsic that is provided by the latest versions of | |
| the CCS ARM compiler. | |
| + Updated all heap_x.c implementations to replace the structure that was | |
| used to ensure the start of the heap was aligned with a more portable | |
| direct C code implementation. | |
| + Added support for PIC24 devices that include EDS. | |
| + Minor optimisations to the PIC32 port layer. | |
| + Minor changes to tasks.c that allow the state viewer plug-ins to display | |
| additional information. | |
| + Bug fix: Update prvProcessReceivedCommands() in timers.c to remove an | |
| issue that could occur if the priority of the timer daemon task was set | |
| below the priority of tasks that used timer services. | |
| + Update the FreeRTOS+Trace recorder code to the latest version. | |
| Changes between V7.2.0 and V7.3.0 released October 31 2012 | |
| + Added ability to override the default scheduler task selection mechanism | |
| with implementations that make use of architecture specific instructions. | |
| + Added ability to suppress tick interrupts during idle time, and in so | |
| doing, provide the ability to make use of architecture specific low power | |
| functionality. | |
| + Added the portSUPPRESS_TICKS_AND_SLEEP() macro and vTaskStepTick() helper | |
| function. | |
| + Added the configSYSTICK_CLOCK_HZ configuration constant. | |
| + Reworked the Cortex-M3 and Cortex-M4F port layers for GCC, Keil and IAR to | |
| directly support basic power saving functionality. | |
| + Added hooks to allow basic power saving to be augmented in the application | |
| by making use of chip specific functionality. | |
| + Minor change to allow mutex type semaphores to be used from interrupts | |
| (which would not be a normal usage model for a mutex). | |
| + Change the behaviour of the interrupt safe interrupt mask save and restore | |
| macros in the Cortex-M ports. The save macro now returns the previous | |
| mask value. The restore macro now uses the previous mask value. These | |
| changes are not necessary for the kernel's own implementation, and are | |
| made purely because the macros were being used by application writers. | |
| + Added eTaskStateGet() API function. | |
| + Added port specific optimisations to the PIC32 port layer, and updated the | |
| PIC32 demo applications to make use of this new feature. | |
| + Added port specific optimisations to the Win32 simulator port. | |
| + Added new ports and demo applications for the TI Hercules RM48 and TMS570 | |
| safety microcontrollers. | |
| + Added SAM3 demos targeting the ATSAM3S-EK2 and ATSAM3X-EK evaluation | |
| boards. | |
| + Updated the PIC32 MPLAB X project to manually set the compiler include | |
| paths instead of using the IDE entry box following reports that the | |
| include paths were somehow being deleted. | |
| + Improved character handling in FreeRTOS+CLI. | |
| Changes between V7.1.1 and V7.2.0 released 14 August 2012 | |
| FreeRTOS V7.2.0 is backward compatible with FreeRTOS V7.1.2. | |
| + Added a FreeRTOS+ sub-directory. The directory contains some FreeRTOS+ | |
| source code, and example projects that use the FreeRTOS Win32 simulator. | |
| + Added a new example heap allocation implementation (heap_4.c) that | |
| includes memory block coalescence. | |
| + Added a demo that targets the Atmel SAM4S Cortex-M4 based microcontroller. | |
| The demo is preconfigured to build using the free Atmel Studio 6 IDE and | |
| GCC compiler. | |
| + Added xSemaphoreTakeFromISR() implementation. | |
| + The last parameter in ISR safe FreeRTOS queue and semaphore functions | |
| (xHigherPriorityTaskWoken) is now optional and can be set to NULL if it | |
| is not required. | |
| + Update the IAR and MSP430X ports to clear all lower power mode bits before | |
| exiting the tick interrupt [bug fix]. | |
| + Allow xQueueReset() to be used, even when the queues event lists are not | |
| empty. | |
| + Added a vQueueDelete() handler for the FreeRTOS MPU port (this was | |
| previously missing). | |
| + Updated the vPortSVCHandler() functions in the FreeRTOS MPU port layer to | |
| ensure it compiles with the latest ARM GCC compilers from Linaro. | |
| + Updated the prvReadGP() function in the NIOS II port to ensure the compiler | |
| can choose any register for the functions parameter (required at high | |
| compiler optimisation levels). | |
| + Add #error macros into the Keil and IAR Cortex-M ports to ensure they | |
| cannot be built if the user has set configMAX_SYSCALL_INTERRUPT_PRIORITY | |
| to 0. | |
| + Added comments in the FreeRTOSConfig.h files associated with Cortex-M3 and | |
| Cortex-M4 demos stating that the configMAX_SYSCALL_INTERRUPT_PRIORITY | |
| parameter must not be set to 0. | |
| + Introduce new INCLUDE_xQueueGetMutexHolder configuration constant | |
| (defaulted to 0). | |
| + Added two new list handling macros - for internal use only in upcoming new | |
| products. | |
| + Removed all mention of the legacy vTaskStartTrace and ulTaskEndTrace | |
| macros. FreeRTOS+Trace supersedes the legacy trace. | |
| + Added a configASSERT() into the vPortFree() function in heap_1.c as it is | |
| invalid for the function to be called. | |
| + Made the xRxLock and xTxLock members of the queue structure volatile. | |
| This is probably not necessary, and is included as a precautionary | |
| measure. | |
| + Modify the assert() that checks to see if the priority passed into an | |
| xTaskCreate() function is within valid bounds to permit the assert to be | |
| used in the FreeRTOS MPU port. | |
| + The software timer service (daemon) task is now created in a way that | |
| to ensure compatibility with FreeRTOS MPU. | |
| Changes between V7.1.0 and V7.1.1 released May 1 2012 | |
| New ports: | |
| The following ports are brand new: | |
| + Cortex-M3 Tasking | |
| The following ports have been available as separate downloads for a number | |
| of months, but are now included in the main FreeRTOS download. | |
| + Cortex-M0 IAR | |
| + Cortex-M0 GCC | |
| + Cortex-M4F GCC (with full floating point support) | |
| New demos: | |
| The following demos are brand new: | |
| + Renesas RX63N RDK (Renesas compiler) | |
| The following demos have been available as separate downloads for a number | |
| of months, but are now included in the main FreeRTOS download. | |
| + NXP LPC1114 GCC/LPCXpresso | |
| + ST STM32F0518 IAR | |
| + Infineon XMC4500 GCC/Atollic | |
| + Infineon XMC4500 IAR | |
| + Infineon XMC4500 Keil | |
| + Infineon XMC4500 Tasking | |
| Kernel miscellaneous / maintenance: | |
| + Introduced the portSETUP_TCB() macro to remove the requirement for the | |
| Windows simulator to use the traceTASK_CREATE() macro, leaving the trace | |
| macro available for use by FreeRTOS+Trace (https://www.FreeRTOS.org/trace). | |
| + Added a new trace macro, traceMOVE_TASK_TO_READY_STATE(), to allow future | |
| FreeRTOS+Trace versions to provide even more information to users. | |
| + Updated the FreeRTOS MPU port to be correct for changes that were | |
| introduced in FreeRTOS V7.1.0. | |
| + Introduced the xQueueReset() API function. | |
| + Introduced the xSemaphoreGetMutexHolder() API function. | |
| + Tidy up various port implementations to add the static key word where | |
| appropriate, and remove obsolete code. | |
| + Slight change to the initial stack frame given to the RX600 ports to allow | |
| them to be used in the Eclipse based E2Studio IDE without confusing GDB. | |
| + Correct the alignment given to the initial stack of Cortex-M4F tasks. | |
| + Added a NOP following each DINT instruction on MSP430 devices for strict | |
| conformance with the instructions on using DINT. | |
| + Changed the implementation of thread deletes in the Win32 port to prevent | |
| the port making use of the traceTASK_DELETE() trace macros - leaving this | |
| macro free for use by FreeRTOS+Trace. | |
| + Made some benign changes to the RX600 Renesas compiler port layer to | |
| ensure the code can be built to a library without essential code being | |
| removed by the linker. | |
| + Reverted the change in the name of the uxTaskNumber variable made in | |
| V7.1.0 as it broke the IAR plug-in. | |
| Demo miscellaneous / maintenance: | |
| + The command interpreter has now been formally released as FreeRTOS+CLI, | |
| and been moved out of the main FreeRTOS download, to instead be available | |
| from the FreeRTOS+ Ecosystem site https://www.FreeRTOS.org/plus. | |
| + flash_timer.c/h has been added to the list of standard demo tasks. This | |
| performs the same functionality as the flash.c tasks, but using software | |
| timers in place of tasks. | |
| + Upgraded the PIC32 demo as follows: Changes to how the library functions | |
| are called necessitated by the new compiler version, addition of MPLAB X | |
| project with PIC32MX360, PIC32MX460 and PIC32MX795 configurations, | |
| addition of simply blinky demo, updated FreeRTOSConfig.h to include more | |
| parameters, addition of hook function stubs. | |
| + The MSP430X IAR and CCS demos have been updated to ensure the power | |
| settings are correct for the configured CPU frequency. | |
| + Rowley CrossWorks projects have been updated to correct the "multiple | |
| definition of ..." warnings introduced when the toolchain was updated. | |
| + Updated various FreeRTOSConfig.h header files associated with projects | |
| that build with Eclipse to include a #error statement informing the user | |
| that the CreateProjectDirectoryStructure.bat batch file needs to be | |
| executed before the projects can be opened. | |
| + Renamed directories that included "CCS4" in their name to remove the '4' | |
| and instead just be "CCS". This is because the demo was updated and | |
| tested to also work with later Code Composer Studio versions. | |
| + Updated the TCP/IP periodic timer frequency in numerous uIP demos to be | |
| 50ms instead of 500ms. | |
| Changes between V7.0.2 and V7.1.0 released December 13 2011 | |
| New ports: | |
| + Cortex-M4F IAR port. | |
| + Cortex-M4F Keil/RVDS port. | |
| + TriCore GCC port. | |
| New demos: | |
| + NXP LPC4350 using the Keil MDK, and demonstrated on a Hitex development | |
| board. | |
| + ST STM32F407 using the IAR Embedded Workbench for ARM, and demonstrated on | |
| the IAR STM32F407ZG-SK starter kit. | |
| + Infineon TriCore TC1782, using the GCC compiler, demonstrated on the | |
| TriBoard TC1782 evaluation board. | |
| + Renesas RX630, using the Renesas compiler and HEW, demonstrated on an | |
| RX630 RSK (Renesas Starter Kit). | |
| Miscellaneous / maintenance: | |
| + Removed all calls to printf() from the K60/IAR Kinetis demo so the project | |
| can execute stand alone - without being connected to the debugger. | |
| + Completed the command interpreter framework. Command handlers now receive | |
| the entire command string, giving them direct access to parameters. | |
| Utility functions are provided to check the number of parameters, and | |
| return parameter sub-strings. | |
| + The previously documented fix for the bug in xTaskResumeFromISR() that | |
| effected (only) ports supporting interrupt nesting has now been | |
| incorporated into the main release. | |
| + The portALIGNMENT_ASSERT_pxCurrentTCB() definition has been added to allow | |
| specific ports to skip the second stack alignment check when a task is | |
| created. This is because the second check is not appropriate for some | |
| ports - including the new TriCore port where the checked pointer does not | |
| actually point to a stack. | |
| + The portCLEAN_UP_TCB() macro has been added to allow port specific clean | |
| up when a task is deleted - again this is required by the TriCore port. | |
| + Various other minor changes to ensure warning free builds on a growing | |
| number of microcontroller and toolchain platforms. This includes a | |
| (benign) correction to the prototype of the | |
| vApplicationStackOverflowHook() definition found in lots of recent demos. | |
| Trace system: | |
| + The legacy trace mechanism has been completely removed - it has been | |
| obsolete for the years since the trace macros were introduced. The | |
| configuration constant configUSE_TRACE_FACILITY is now used to optionally | |
| include additional queue and task information. The additional information | |
| is intended to make the trace mechanism more generic, and allow the trace | |
| output to provide more information. When configUSE_TRACE_FACILITY is set | |
| to 1: | |
| - the queue structure includes an additional member to hold the queue | |
| type, which can be base, mutex, counting semaphore, binary semaphore | |
| or recursive mutex. | |
| - the queue structure includes an additional member to hold a queue | |
| number. A trace tool can set and query the queue number for its own | |
| purposes. The kernel does not use the queue number itself. | |
| - the TCB structure includes an additional member to hold a task number | |
| number. A trace tool can set and query the task number for its own | |
| purposes. The kernel does not use the task number itself. | |
| + Queues and all types of semaphores are now automatically allocated their | |
| type as they are created. | |
| + Added two new trace macros - traceTASK_PRIORITY_INHERIT() and | |
| traskTASK_PRIORITY_DISINHERIT(). | |
| + Updated the traceQUEUE_CREATE_FAILED() macro to take a parameter that | |
| indicates the type of queue, mutex, or semaphore that failed to be | |
| created. | |
| + The position from which traceCREATE_MUTEX() is called has been moved from | |
| after the call to xQueueGenericSend() [within the same function] to before | |
| the call. This ensures the trace events occur in the correct order. | |
| + The value passed into tracePRIORITY_SET() has been corrected for the case | |
| where vTaskPrioritySet() is called with a null parameter. | |
| Changes between V7.0.1 and V7.0.2 released September 20 2011 | |
| New ports: | |
| + The official FreeRTOS Renesas RX200 port and demo application have been | |
| incorporated into the main FreeRTOS zip file download. | |
| + The official FreeRTOS Renesas RL78 port and demo application have been | |
| incorporated into the main FreeRTOS zip file download. | |
| + The official FreeRTOS Freescale Kinetis K60 tower demo application has | |
| been incorporated into the main FreeRTOS zip file download. This includes | |
| an embedded web server example. | |
| + A new Microblaze V8 port layer has been created to replace the older, now | |
| deprecated, port layer. The V8 port supports V8.x of the Microblaze IP, | |
| including exceptions, caches, and the floating point unit. A new | |
| Microblaze demo has also been added to demonstrate the new Microblaze V8 | |
| port layer. The demo application was created using V13.1 of the Xilinx | |
| EDK, and includes a basic embedded web server that uses lwIP V1.4.0. | |
| + The official FreeRTOS Fujitsu FM3 MB9A310 demo application has been | |
| incorporated into the main FreeRTOS zip file download. Projects are | |
| provided for both the IAR and Keil toolchains. | |
| API additions: | |
| + xTaskGetIdleTaskHandle() has been added. | |
| + xTaskGetTimerDaemonTaskHandle() has been added. | |
| + pcTaskGetTaskName() has been added. | |
| + vSemaphoreDelete() macro has been added to make it obvious how to delete | |
| a semaphore. In previous versions vQueueDelete() had to be used. | |
| + vTaskCleanUpResources() has been removed. It has been obsolete for a | |
| while. | |
| + portPOINTER_SIZE_TYPE has been introduced to prevent compiler warnings | |
| being generated when the size of a pointer does not match the size of | |
| the stack type. This will (has already) be used in new ports, but will | |
| not be retrofitted to existing ports until the existing port itself is | |
| updated. | |
| Other updates and news: | |
| + The core files have all been modified to tighten the coding standard even | |
| further. These are style, not functional changes. | |
| + All ARM7 port layers have been slightly modified to prevent erroneous | |
| assert() failures when tasks are created and configASSERT() is defined. | |
| + All ARM IAR projects have been updated to build with the latest V6.2.x | |
| versions of the IAR Embedded Workbench for ARM tools (EWARM). This was | |
| necessary due to a change in the way EWARM uses the CMSIS libraries. | |
| + The PIC32 port layer has been updated in preparation for V2 of the C32 | |
| compiler. | |
| + The old Virtex-4 Microblaze demo has been marked as deprecated. Please | |
| use the brand new Spartan-6 port and demo in its place. | |
| + The bones of a new generic command interpreter is located in | |
| FreeRTOS/Demo/Common/Utils/CommandInterpreter.c. This is still a work in | |
| progress, and not documented. It is however already in use. It will be | |
| documented in full when the projects that are already using it are | |
| completed. | |
| + A couple of new standard demos have been included. First, a version of | |
| flop.c called sp_flop.c. This is similar to flop.c, but uses single | |
| precision floats in place of double precision doubles. This allows the | |
| for testing ports to processors that have only single precision floating | |
| point units, and revert to using emulated calculations whenever a double | |
| is used. Second, comtest_strings.c has been included to allow the test | |
| of UART drivers when an entire string is transmitted at once. The | |
| previous comtest.c only used single character transmission and reception. | |
| + lwIP V1.4.0 is now included in the FreeRTOS/Demo/Common directory, and | |
| used by a couple of new demos. | |
| Changes between V7.0.0 and V7.0.1 released May 13 2011 | |
| + Added a Fujitsu FM3 demo application for both the IAR and Keil tool | |
| chains. | |
| + Added a SmartFusion demo application for all of the IAR, Keil and | |
| SoftConsole (GCC/Eclipse) tool chains. | |
| + Updated the RX600 port and demo applications to take into account the | |
| different semantics required when using the latest (V1.0.2.0) version of | |
| the Renesas compiler. | |
| + Modified the RX600 Ethernet driver slightly to make it more robust under | |
| heavy load, and updated the uIP handling task to make use of the FreeRTOS | |
| software timers. | |
| + Slightly changed the PIC32 port layer to move an ehb instruction in line | |
| with the recommendations of the MIPS core manual, and ensure 8 byte stack | |
| alignment is truly always obtained. | |
| + Changed the behaviour when tasks are suspended before the scheduler has | |
| been started. Before, there needed to be at least one task that was not | |
| in the suspended state. This is no longer the case. | |
| Changes between V6.1.1 and V7.0.0 released April 8 2011 | |
| FreeRTOS V7.0.0 is backward compatible with FreeRTOS V6.x.x | |
| Main changes: | |
| + Introduced a new software timer implementation. | |
| + Introduced a new common demo application file to exercise the new timer | |
| implementation. | |
| + Updated the Win32/MSVC simulator project to include the new software timer | |
| demo tasks and software timer tick hook test. Much simpler software timer | |
| demonstrations are included in the demo projects for both of the new ports | |
| (MSP430X with CCS4 and STM32 with TrueStudio). | |
| + Various enhancements to the kernel implementation in tasks.c. These are | |
| transparent to users and do not effect the pre-existing API. | |
| + Added calls to configASSERT() within the kernel code. configASSERT() is | |
| functionally equivalent to the standard C assert() macro, but does not | |
| rely on the compiler providing assert.h. | |
| Other changes: | |
| + Updated the MSP430X IAR port and demo project to include support for the | |
| medium memory model. | |
| + Added a demo project for the MSP430X that targets the MSP430X Discovery | |
| board and uses the Code Composer Studio 4 tools. This demo includes use | |
| of the new software timer implementation. | |
| + Added an STM32F100RB demo project that targets the STM32 Discovery Board | |
| and uses the TrueStudio Eclipse based IDE from Atollic. | |
| + Removed some compiler warnings from the PSoC demo application. | |
| + Updated the PIC32 port layer to ensure the | |
| configMAX_SYSCALL_INTERRUPT_PRIORITY constant works as expected no matter | |
| what its value is (within the valid range set by the microcontroller | |
| kernel). | |
| + Updated the PIC24, dsPIC and PIC32 projects so they work with the latest | |
| MPLAB compiler versions from Microchip. | |
| + Various cosmetic changes to prepare for a standards compliance statement | |
| that will be published after the software release. | |
| Changes between V6.1.0 and V6.1.1 released January 14 2011 | |
| + Added two new Windows simulator ports. One uses the free Microsoft Visual | |
| Studio 2010 express edition, and the other the free MingW/Eclipse | |
| environment. Demo projects are provided for both. | |
| + Added three demo projects for the PSoC 5 (CYAC5588). These are for the | |
| GCC, Keil, and RVDS build tools, and all use the PSoC Creator IDE. | |
| + Added a demo for the low power STM32L152 microcontroller using the IAR | |
| Embedded Workbench. | |
| + Added a new port for the MSP430X core using the IAR Embedded Workbench. | |
| + Updated all the RX62N demo projects that target the Renesas Demonstration | |
| Kit (RDK) to take into account the revered LED wiring on later hardware | |
| revisions, and the new J-Link debug interface DLL. | |
| + Updated all the RX62N demo projects so the IO page served by the example | |
| embedded web server works with all web browsers. | |
| + Updated the Red Suite projects to work with the up coming Red Suite | |
| release, and to use a more recent version of the CMSIS libraries. | |
| + Added the traceTAKE_MUTEX_RECURSIVE_FAILED() trace macro. | |
| + Removed the (pointless) parameter from the traceTASK_CREATE_FAILED() | |
| trace macro. | |
| + Introduced the portALT_GET_RUN_TIME_COUNTER_VALUE() macro to compliment | |
| the already existing portGET_RUN_TIME_COUNTER_VALUE(). This allows for | |
| more flexibility in how the time base for the run time statistics feature | |
| can be implemented. | |
| + Added a "cpsie i" instruction before the "svc 0" instruction used to start | |
| the scheduler in each of the Cortex M3 ports. This is to ensure that | |
| interrupts are globally enabled prior to the "svc 0" instruction being | |
| executed in cases where interrupts are left disabled by the C start up | |
| code. | |
| + Slight optimisation in the run time stats calculation. | |
| Changes between V6.0.5 and V6.1.0 released October 6 2010 | |
| + Added xTaskGetTickCountFromISR() function. | |
| + Modified vTaskSuspend() to allow tasks that have just been created to be | |
| immediately suspended even when the kernel has not been started. This | |
| allows them to effectively start in the Suspended state - a feature that | |
| has been asked for on numerous occasions to assist with initialisation | |
| procedures. | |
| + Added ports for the Renesas RX62N using IAR, GCC and Renesas tool suites. | |
| + Added a STM32F103 demo application that uses the Rowley tools. | |
| + Under specific conditions xFreeBytesRemaining within heap_2.c could end up | |
| with an incorrect value. This has been fixed. | |
| + xTaskCreateGeneric() has a parameter that can be used to pass the handle | |
| of the task just created out to the calling task. The assignment to this | |
| parameter has been moved to ensure it is assigned prior to the newly | |
| created having any possibility of executing. This takes into account the | |
| case where the assignment is made to a global variable that is accessed by | |
| the newly created task. | |
| + Fixed some build time compiler warnings in various FreeTCPIP (based on | |
| uIP) files. | |
| + Fixed some build time compiler warnings in Demo/Common/Minimal/IntQueue.c. | |
| Changes between V6.0.4 and V6.0.5 released May 17 2010 | |
| + Added port and demo application for the Cortus APS3 processor. | |
| Changes between V6.0.3 and V6.0.4 released March 14 2010 | |
| + All the contributed files that were located in the Demo/Unsupported_Demos | |
| directory have been removed. These files are instead now available in the | |
| new Community Contributions section of the FreeRTOS website. See | |
| https://www.FreeRTOS.org/RTOS-contributed-ports.html | |
| + The project file located in the Demo/CORTEX_STM32F107_GCC_Rowley directory | |
| has been upgraded to use V2.x of the Rowley Crossworks STM32 support | |
| package. | |
| + An initial Energy Micro EFM32 demo has been included. This will be | |
| updated over the coming months to make better use of the low power modes | |
| the EFM32 provides. | |
| Changes between V6.0.2 and V6.0.3 released February 26 2010 | |
| + SuperH SH7216 (SH2A-FPU) port and demo application added. | |
| + Slight modification made to the default implementation of | |
| pvPortMallocAligned() and vPortFreeAligned() macros so by default they | |
| just call pvPortMalloc() and vPortFree(). The macros are only needed to | |
| be defined when a memory protection unit (MPU) is being used - and then | |
| only depending on other configuration settings. | |
| Changes between V6.0.1 and V6.0.2 released January 9th 2010 | |
| + Changed all GCC ARM 7 ports to use 0 as the SWI instruction parameter. | |
| Previously the parameter was blank and therefore only an implicit 0 but | |
| newer GCC releases do not permit this. | |
| + Updated IAR SAM7S and SAM7X ports to work with IAR V5.40. | |
| + Changed the stack alignment requirement for PIC32 from 4 bytes to 8 bytes. | |
| + Updated prvListTaskWithinSingleList() is it works on processors where the | |
| stack grows up from low memory. | |
| + Corrected some comments. | |
| + Updated the startup file for the RVDS LPC21xx demo. | |
| Changes between V6.0.0 and V6.0.1 released November 15th 2009 | |
| + Altered pxPortInitialiseStack() for all Cortex-M3 ports to ensure the | |
| stack pointer is where the compiler expects it to be when a task first | |
| starts executing. | |
| The following minor changes only effect the Cortex-M3 MPU port: | |
| + portRESET_PRIVILEGE() assembly macro updated to include a clobber list. | |
| + Added prototypes for all the privileged function wrappers to ensure no | |
| compile time warnings are generated no matter what the warning level | |
| setting. | |
| + Corrected the name of portSVC_prvRaisePrivilege to | |
| portSVC_RAISE_PRIVILEGE. | |
| + Added conditional compilation into xTaskGenericCreate() to prevent some | |
| compilers issuing warnings when portPRIVILEGE_BIT is defined as zero. | |
| Changes between V5.4.2 and V6.0.0 released October 16th 2009 | |
| FreeRTOS V6 is backward compatible with FreeRTOS V5.x. | |
| Main changes: | |
| + FreeRTOS V6 is the first version to include memory protection unit (MPU) | |
| support. Two ports now exist for the Cortex M3, the standard FreeRTOS | |
| which does not include MPU support, and FreeRTOS-MPU which does. | |
| + xTaskCreateRestricted() and vTaskAllocateMPURegions() API functions added | |
| in support of FreeRTOS-MPU. | |
| + Wording for the GPL exception has been (hopefully) clarified. Also the | |
| license.txt file included in the download has been fixed (the previous | |
| version contained some corruption). | |
| Other changes: | |
| + New API function xPortGetFreeHeapSize() added to heap_1.c and heap_2.c. | |
| + ARM7 GCC demo interrupt service routines wrappers have been modified to | |
| call the C portion using an __asm statement. This prevents the function | |
| call being inlined at higher optimisation levels. | |
| + ARM7 ports now automatically set the THUMB bit if necessary when | |
| setting up the initial stack of a task - removing the need for | |
| THUMB_INTERWORK to be defined. This also allows THUMB mode and ARM mode | |
| tasks to be mixed more easily. | |
| + All ARM7/9 ports now have portBYTE_ALIGNMENT set to 8 by default. | |
| + Various demo application project files have been updated to be up to date | |
| with the latest IDE versions. | |
| + The linker scripts used with command line GCC demos have been updated to | |
| include an eh_frame section to allow their use with the latest Yagarto | |
| release. Likewise the demo makefiles have been updated to include | |
| command line options to reduce or eliminate the eh_frame section all | |
| together. | |
| + The definition of portBYTE_ALIGNMENT_MASK has been moved out of the | |
| various memory allocation files and into the common portable.h header | |
| file. | |
| + Removed unnecessary use of portLONG, portSHORT and portCHAR. | |
| + Added LM3Sxxxx demo for Rowley CrossWorks. | |
| + Posix simulator has been upgraded - see the corresponding WEB page on the | |
| FreeRTOS.org site. | |
| Changes between V5.4.1 and V5.4.2 released August 9th 2009 | |
| + Added a new port and demo app for the Altera Nios2 soft core. | |
| + Added LPC1768 demo for IAR. | |
| + Added a USB CDC demo to all LPC1768 demos (Code Red, CrossWorks and IAR). | |
| + Changed clock frequency of LPC1768 demos to 99MHz. | |
| Changes between V5.4.0 and V5.4.1 released July 25th 2009 | |
| + New hook function added. vApplicationMallocFailedHook() is (optionally) | |
| called if pvPortMalloc() returns NULL. | |
| + Additional casting added to xTaskCheckForTimeOut(). This prevents | |
| problems that can arise should configUSE_16_BIT_TICKS be set to 1 on a | |
| 32 bit architecture (which would probably be a mistake, anyway). | |
| + Corrected the parameter passed to NVIC_SetPriority() to set the MAC | |
| interrupt priority in both LPC1768 demos. | |
| + Decreased the default setting of configMINIMAL_STACK_SIZE in the PIC32 | |
| demo application to ensure the heap space was not completely consumed | |
| before the scheduler was started. | |
| Changes between V5.3.1 and V5.4.0 released July 13th 2009 | |
| + Added Virtex5 / PPC440 port and demos. | |
| + Replaced the LPC1766 Red Suite demo with an LPC1768 Red Suite demo. The | |
| original demo was configured to use engineering samples of the CPU. The | |
| new demo has an improved Ethernet driver. | |
| + Added LPC1768 Rowley demo with zero copy Ethernet driver. | |
| + Reworked byte alignment code to ensure 8 byte alignment works correctly. | |
| + Set configUSE_16_BIT_TICKS to 0 in the PPC405 demo projects. | |
| + Changed the initial stack setup for the PPC405 to ensure the small data | |
| area pointers are setup correctly. | |
| Changes between V5.3.0 and V5.3.1 released June 21st 2009 | |
| + Added ColdFire V1 MCF51CN128 port and WEB server demo. | |
| + Added STM32 Connectivity Line STM32107 Cortex M3 WEB server demo. | |
| + Changed the Cortex M3 port.c asm statements to __asm so it can be | |
| compiled using Rowley CrossWorks V2 in its default configuration. | |
| + Updated the Posix/Linux simulator contributed port. | |
| Changes between V5.2.0 and V5.3.0 released June 1st 2009 | |
| Main changes: | |
| + Added new (optional) feature that gathers statistics on the amount of CPU | |
| time used by each task. | |
| + Added a new demo application for the Atmel AT91SAM3U Cortex-M3 based | |
| microcontroller. | |
| + Added a new demo application for the NXP LPC1766 Cortex-M3 based | |
| microcontroller. | |
| + Added a contributed port/demo that allows FreeRTOS to be 'simulated' in a | |
| Linux environment. | |
| Minor changes: | |
| + Updated the Stellaris uIP WEB server demos to include the new run time | |
| statistics gathering feature - and include a served WEB page that | |
| presents the information in a tabular format. | |
| + Added in the lwIP port layer for the Coldfire MCF52259. | |
| + Updated the CrossWorks LPC2368 WEB server to include an image in the | |
| served content. | |
| + Changed some of the timing in the initialisation of the LPC2368 MAC to | |
| permit its use on all part revisions. | |
| + Minor modifications to the core uIP code to remove some compiler warnings. | |
| + Added xTaskGetApplicationTaskTag() function and updated the OpenWatcom | |
| demo to make use of the new function. | |
| + Added contributed demos for AVR32 AP7000, STM32 Primer 2 and STM32 using | |
| Rowley Crossworks. | |
| + Heap_1.c and Heap_2.c used to define structures for the purpose of data | |
| alignment. These have been converted to unions to save a few bytes of | |
| RAM that would otherwise be wasted. | |
| + Remove the call to strncpy() used to copy the task name into the TCB when | |
| the maximum task name is configured to be 1 byte long. | |
| Changes between V5.1.2 and V5.2.0 released March 14th 2009 | |
| + Optimised the queue send and receive functions (also used by semaphores). | |
| + Replaced the standard critical sections used to protect BIOS calls in the | |
| PC port to instead use scheduler locks. This is because the BIOS calls | |
| always return with interrupts enabled. | |
| + Corrected unclosed comments in boot.s. | |
| Changes between V5.1.1 and V5.1.2 released February 9th 2009 | |
| + Added NEC V850ES port and demo. | |
| + Added NEC 78K0R port and demo. | |
| + Added MCF52259 port and demo. | |
| + Added the AT91SAM9XE port and demo. | |
| + Updated the MCF52233 FEC driver to work around a silicon bug that | |
| prevents the part auto negotiating some network parameters. | |
| + Minor modifications to the MCF52233 makefile to permit it to be used | |
| on Linux hosts. | |
| + Updated the STM32 primer files to allow them to be built with the latest | |
| version of the RIDE tools. | |
| + Updated the threads.js Java script used for kernel aware debugging in | |
| the Rowley CrossWorks IDE. | |
| Changes between V5.1.0 and V5.1.1 released November 20, 2008 | |
| + Added Coldfire MCF52233 WEB server demo using GCC and Eclipse. | |
| + Added IAR MSP430 port and demo. | |
| + Corrected several compiler time issues that had crept in as tool versions | |
| change. | |
| + Included FreeRTOS-uIP - a faster uIP. This is not yet complete. | |
| Changes between V5.0.4 and V5.1.0 released October 24, 2008 | |
| + Added a new port and demo application for the ColdFire V2 core using the | |
| CodeWarrior development tools. | |
| + Replaced the ARM7 demo that used the old (and now no longer supported) | |
| Keil compiler with a new port that uses the new Keil/RVDS combo. | |
| + Stack overflow checking now works for stacks that grow up from low | |
| memory (PIC24 and dsPIC). | |
| + BUG FIX - set the PIC32 definition of portSTACK_GROWTH to the correct | |
| value of -1. | |
| + MSP430 port layers have been updated to permit tasks to place the | |
| microcontroller into power down modes 1 to 3. The demo applications have | |
| likewise been updated to demonstrate the new feature. | |
| + Replaced the two separate MSP430/Rowley port layers with a single and more | |
| flexible version. | |
| + Added more contributed ports, including ports for NEC and SAM9 | |
| microcontrollers. | |
| + Changed the linker script used in the LPC2368 Eclipse demo. | |
| Changes between V5.0.3 and V5.0.4 released September 22, 2008 | |
| + Completely re-written port for ColdFire GCC. | |
| + Bug fix: All Cortex M3 ports have a minor change to the code that sets | |
| the pending interrupt. | |
| + Some header files require that FreeRTOS.h be included prior to their | |
| inclusion. #error message have been added to all such header file | |
| informing users to the cause of the compilation error should the headers | |
| not be included in the correct order. | |
| Changes between V5.0.2 and V5.0.3 released July 31, 2008 | |
| Changes relating to the Cortex M3: | |
| + Added configMAX_SYSCALL_INTERRUPT_PRIORITY usage to all the Cortex M3 | |
| ports and demos. See the port documentation pages on the FreeRTOS.org | |
| WEB site for full usage information. | |
| + Improved efficiency of Cortex M3 port even further. | |
| + Ensure the Cortex M3 port works no matter where the vector table is | |
| located. | |
| + Added the IntQTimer demo/test tasks to a demo project for each CM3 port | |
| (Keil, GCC and IAR) to test the new configMAX_SYSCALL_INTERRUPT_PRIORITY | |
| functionality. | |
| + Added the mainINCLUDE_WEB_SERVER definition to the LM3SXXXX IAR and Keil | |
| projects to allow the WEB server to be conditionally excluded from the | |
| build and therefore allow use of the KickStart (code size limited) | |
| compiler version. | |
| Other changes: | |
| + Moved the PIC24 and dsPIC versions of vPortYield() from the C file to | |
| an assembly file to allow use with all MPLAB compiler versions. This also | |
| allows the omit-frame-pointer optimisation to be turned off. | |
| Changes between V5.0.0 and V5.0.2 released May 30, 2008 | |
| + Updated the PIC32 port to allow queue API calls to be used from | |
| interrupts above the kernel interrupt priority, and to allow full | |
| interrupt nesting. Task stack usages has also been reduced. | |
| + Added a new PowerPC port that demonstrates how the trace macros can be | |
| used to allow the use of a floating point co-processor. The | |
| traceTASK_SWITCHED_OUT() and traceTASK_SWITCHED_INT() macros are used to | |
| save and restore the floating point context respectively for those tasks | |
| that actually use floating point operations. | |
| + BUG FIX: The first PPC405 port contained a bug in that it did not leave | |
| adequate space above the stack for the backchain to be saved when a task | |
| started to execute for the first time. | |
| + Updated queue.c to add in the means to allow interrupt nesting and for | |
| queue API functions to be called from interrupts that have a priority | |
| above the kernel priority. This is only supported on PIC32 ports thus | |
| far. | |
| + Fixed the compiler warnings that were generated when the latest version | |
| of WinAVR was used. | |
| + Remove all inline usage of 'inline' from the core kernel code. | |
| + Added the queue registry feature. The queue registry is provided as a | |
| means for kernel aware debuggers to locate queue definitions. It has no | |
| purpose unless you are using a kernel aware debugger. The queue registry | |
| will only be used when configQUEUE_REGISTRY_SIZE is greater than zero. | |
| + Added the ST Cortex-M3 drivers into the Demo/Common/Drivers directory to | |
| prevent them from having to be included in multiple demos. | |
| + Added a Keil STM32 demo application. | |
| + Changed the blocktim.c test files as it is no longer legitimate for all | |
| ports to call queue API functions from within a critical section. | |
| + Added the IntQueue.c test file to test the calling of queue API functions | |
| from different interrupt priority levels, and test interrupt nesting. | |
| Changes between V5.0.0 and V5.0.1 | |
| + V5.0.1 was a customer specific release. | |
| Changes between V4.8.0 and V5.0.0 released April 15, 2008 | |
| *** VERY IMPORTANT INFORMATION ON UPGRADING TO FREERTOS.ORG V5.0.0 *** | |
| The parameters to the functions xQueueSendFromISR(), xQueueSendToFrontFromISR(), | |
| xQueueSendToBackFromISR() and xSemaphoreGiveFromISR() have changed. You must | |
| update all calls to these functions to use the new calling convention! Your | |
| compiler might not issue any type mismatch warnings! | |
| Other changes: | |
| + Support added for the new Luminary Micro LM3S3768 and LM3S3748 Cortex-M3 | |
| microcontrollers. | |
| + New task hook feature added. | |
| + PowerPC demo updated to use version 10.1 of the Xilinx EDK. | |
| + Efficiency gains within the PIC32 port layer. | |
| Changes between V4.7.2 and V4.8.0 released March 26 2008 | |
| + Added a Virtex4 PowerPC 405 port and demo application. | |
| + Added optional stack overflow checking and new | |
| uxTaskGetStackHighWaterMark() function. | |
| + Added new xQueueIsQueueEmptyFromISR(), xQueueIsQueueFullFromISR() and | |
| uxQueueMessagesWaitingFromISR() API functions. | |
| + Efficiency improvements to the Cortex-M3 port layer. NOTE: This | |
| requires that an SVC handler be installed in the application. | |
| + Efficiency improvements to the queue send and receive functions. | |
| + Added new trace macros. These are application definable to provide | |
| a flexible trace facility. | |
| + Implemented the configKERNEL_INTERRUPT_PRIORITY within the Keil Cortex | |
| M3 port layer (bringing it up to the same standard as the IAR and GCC | |
| versions). | |
| + Ports that used the arm-stellaris-eabi-gcc tools have been converted to | |
| use the arm-non-eabi-gcc tools. | |
| Changes between V4.7.1 and V4.7.2 released February 21, 2008 | |
| + Added Fujitsu MB91460 port and demo. | |
| + Added Fujitsu MB96340 port and demo. | |
| + Tidied up the capitalisation of include files to facilitate builds on | |
| Linux hosts. | |
| + Removed some redundant casting that was generating warnings - but was | |
| included to remove warnings on other compilers. | |
| Changes between V4.7.0 and V4.7.1 released February 3, 2008 | |
| + Updated all IAR ARM projects to use V5.11 of the IAR Embedded Workbench | |
| for ARM. | |
| + Introduced recursive semaphore feature. | |
| + Updated LPC2368 demos to take into account silicon bugs in old chip | |
| revisions. | |
| + Updated STR9 uIP port to manually set the net mask and gateway addresses. | |
| + Updating demos to allow more to run with the co-operative scheduler. | |
| + Fixed co-operative scheduler behaviour upon the occurrence of a tick | |
| interrupt while the scheduler was suspended. | |
| + Updated documentation contained within semphr.h. | |
| + ARM7 GCC ports no longer use the IRQ attribute. | |
| Changes between V4.6.1 and V4.7.0 released December 6, 2007 | |
| + Introduced the counting semaphore macros and demo source files. The | |
| Open Watcom PC project has been updated to include the new demo. See | |
| the online documentation for more information. | |
| + Introduced the 'alternative' queue handling API and demo source files. | |
| The Open Watcom PC project has been updated to include the new demo | |
| source files. See the online documentation for more information. | |
| + Added AT91SAM7X Eclipse demo project. | |
| + Added the STM32 primer demo project for the GCC compiler and Ride IDE. | |
| + Removed the .lock files that were mistakenly included in the V4.6.1 | |
| eclipse workspaces. | |
| Changes between V4.6.0 and V4.6.1 released November 5 2007 | |
| + Added support for the MIPS M4K based PIC32. | |
| + Added 'extern "C"' to all the header files to facilitate use with C++. | |
| Changes between V4.5.0 and V4.6.0 released October 28 2007 | |
| + Changed the method used to force a context switch within an ISR for the | |
| ARM7/9 GCC ports only. The portENTER_SWITCHING_ISR() and | |
| portEXIT_SWITCHING_ISR() macros are no longer supported. This is to | |
| ensure correct behaviour no matter which GCC version is used, with or | |
| without the -fomit-frame-pointer option, and at all optimisation levels. | |
| + Corrected the prototype for xQueueGenericSend() within queue.h. | |
| Changes between V4.4.0 and V4.5.0 released September 17 2007 | |
| + Added the xQueueSendToFront(), xQueueSendToBack() and xQueuePeek() | |
| functionality. These should now be used in preference to the old | |
| xQueueSend() function - which is maintained for backward compatibility. | |
| + Added Mutex functionality. The behaviour of mutexes is subtly different | |
| to the already existing binary semaphores as mutexes automatically | |
| include a priority inheritance mechanism. | |
| + Added the GenQTest.c and QPeek.c to test and demonstrate the behaviour | |
| of the new functionality. | |
| + Updated the LM3Sxxxx and PC ports to include the new GenQTest.c and | |
| QPeek.c files. | |
| + Updated the GCC port for the Cortex M3 to include the | |
| configKERNEL_INTERRUPT_PRIORITY functionality. This was previously only | |
| included in the IAR port. | |
| + Optimised the GCC and IAR port layer code - specifically the context | |
| switch code. | |
| + Consolidated the LM3Sxxxx EK demos for all development tools into a | |
| single project that automatically detects which version of the EK the | |
| application is executing on. | |
| + Added Eclipse support for LM3Sxxxx evaluation kits. | |
| + Added Eclipse support for the Keil LPC2368 evaluation kit. | |
| + Added the Demo/Drivers directory to hold code that is common to multiple | |
| demo application projects. | |
| + Included some minor bug fixes in the uIP 1.0 code. | |
| + Added an lwIP demo for the STR9 - thanks ST for assistance. | |
| + Updated the AVR32 port to ensure correct behaviour with full compiler | |
| optimisation. | |
| + Included binaries for OpenOCD FTDI and parallel port interfaces. | |
| Changes between V4.4.0 and V4.3.1 released July 31, 2007 | |
| + Added AVR32 UC3B demo application. | |
| + Updated AVR32 UC3A port and demo applications. | |
| + Added IAR lwIP demo for AVR32 UC3A. | |
| + Updated listGET_OWNER_OF_NEXT_ENTRY() to assist compiler optimisation | |
| (thanks Niu Yong for making the suggestion). | |
| + Added xTaskGetSchedulerState() API function. | |
| + BUG FIX: Corrected behaviour when tasks that are blocked indefinitely | |
| have their block time adjusted (within xQueueSend() and xQueueReceive()), | |
| and are the subject of a call the vTaskResume() when they are not | |
| actually in the Suspended state (thanks Dan Searles for reporting the | |
| issues). | |
| Changes between V4.3.0 and V4.3.1 released June 11, 2007 | |
| + Added STMicroelectronics STM32 Cortex-M3 demo application. | |
| + Updated ustdlib.c for the GCC LM3S6965 demo. | |
| Changes between V4.2.1 and V4.3.0 released June 5, 2007 | |
| + Introduced configKERNEL_INTERRUPT_PRIORITY to the IAR Cortex-M3, PIC24 | |
| and dsPIC ports. See the LM3S6965 and PIC24 demo application | |
| documentation pages for more information. | |
| + Updated the PIC24 and dsPIC demos to build with V3.0 of the PIC30 GCC | |
| tools, and changed the demo applications. | |
| + Added demos for the new Ethernet and CAN enabled Luminary Micro Stellaris | |
| microcontrollers. | |
| + Corrected bug in uIP the demos that prevented frames of approximately 1480 | |
| bytes and over from being transmitted. | |
| + Included the LPC2368/uIP/Rowley demo into the main FreeRTOS.org | |
| download. | |
| + Update to WizC PIC18 port to permit its use with version 14 of the | |
| compiler. Thanks Marcel! | |
| Changes between V4.2.1 and V4.2.0 released April 2, 2007 | |
| + Added AVR32 AT32UC3A ports for GCC and IAR. | |
| + Added -fomit-frame-pointer option to lwIP SAM7X demo makefile. | |
| + Moved location of call to LCD_Init() in STR9 demo to ensure it is only | |
| called after the scheduler has been started. | |
| Changes between V4.1.3 and V4.2.0 released February 8, 2007 | |
| + Changes to both task.c and queue.c as a result of testing performed on | |
| the SafeRTOS code base. | |
| + Added Cortex-M3 LM3S811 demos for GCC and IAR tools. | |
| Changes between V4.1.2 and V4.1.3 released November 19, 2006 | |
| + Added STR750 ARM7 port using the Raisonance RIDE/GCC tools. | |
| + Added -fomit-frame-pointer option to Rowley ARM7 demos as work around | |
| to GCC bug at some optimisation levels. | |
| + Altered the way the heap is defined in the LM3S811 Keil demo to prevent | |
| the RAM usage from counting toward the code size limit calculation. | |
| + CO-ROUTINE BUG FIX: Removed the call to prvIsQueueEmpty from within | |
| xQueueCRReceive as it exited with interrupts enabled. Thanks Paul Katz. | |
| + Tasks that block on events with a timeout of portMAX_DELAY are now | |
| blocked indefinitely if configINCLUDE_vTaskSuspend is defined. | |
| Previously portMAX_DELAY was just the longest block time possible. This | |
| is still the case if configINCLUDE_vTaskSuspend is not defined. | |
| + Minor changes to some demo application files. | |
| Changes between V4.1.1 and V4.1.2 released October 21, 2006 | |
| + Added 16bit PIC ports and demos. | |
| + Added STR750 port and demo. | |
| Changes between V4.1.0 and V4.1.1 released September 24, 2006 | |
| + Added the Luminary Micro Stellaris LM3S811 demo application. | |
| Changes between V4.0.5 and V4.1.0 released August 28, 2006 | |
| + Prior to V4.1.0, under certain documented circumstances, it was possible | |
| for xQueueSend() and xQueueReceive() to return without having completed | |
| and without their block time expiring. The block time effectively | |
| stated a maximum block time, and the return value of the function needed | |
| to be checked to determine the reason for returning. This is no longer | |
| the case as the functions will only return once the block time has | |
| expired or they are able to complete their operation. It is therefore no | |
| longer necessary to wrap calls within loops. | |
| + Changed the critical section handling in the IAR AVR port to correct the | |
| behaviour when used with later compiler versions. | |
| + Added the LPC2138 CrossWorks demo into the zip file. Previously this was | |
| only available as a separate download. | |
| + Modified the AVR demo applications to demonstrate the use of co-routines. | |
| Changes between V4.0.4 and V4.0.5 released August 13, 2006 | |
| + Introduced API function xTaskResumeFromISR(). Same functionality as | |
| xTaskResume(), but can be called from within an interrupt service routine. | |
| + Optimised vListInsert() in the case when the wake time is the maximum | |
| tick count value. | |
| + Bug fix: The 'value' of the event list item is updated when the priority | |
| of a task is changed. Previously only the priority of the TCB itself was | |
| changed. | |
| + vTaskPrioritySet() and vTaskResume() no longer use the event list item. | |
| This has not been necessary since V4.0.1 when the xMissedYield handling | |
| was added. | |
| + Lowered the PCLK setting on the ARM9 STR9 demo from 96MHz to 48MHz. | |
| + When ending the scheduler - do not try to attempt a context switch when | |
| deleting the current task. | |
| + SAM7X EMAC drivers: Corrected the Rx frame length mask when obtaining | |
| the length from the rx descriptor. | |
| Changes between V4.0.3 and V4.0.4 released June 22, 2006 | |
| + Added a port and demo application for the STR9 ARM9 based processors from | |
| ST. | |
| + Slight optimisation to the vTaskPrioritySet() function. | |
| + Included the latest uIP version (1.0) in the demo/common/ethernet | |
| directory. | |
| Changes between V4.0.2 and V4.0.3 released June 7, 2006 | |
| + Added a port and demo application for the Cortex-M3 target using the IAR | |
| development tools. | |
| + The ARM Cortex-m3 Rowley projects have been updated to use V1.6 of the | |
| CrossStudio tools. | |
| + The heap size defined for the lwIP Rowley demo has been reduced so that | |
| the project will link correctly when using the command line GCC tools | |
| also. The makefile has also been modified to allow debugging. | |
| + The lwIP Rowley demo not includes a 'kernel aware' debug window. | |
| + The uIP Rowley project has been updated to build with V1.6 of CrossWorks. | |
| + The second set of tasks in the blockQ demo were created the wrong way | |
| around (inconsistent to the description in the file). This has been | |
| corrected. | |
| Changes between V4.0.1 and V4.0.2 released May 28, 2006 | |
| + Port and demo application added for the Tern Ethernet Engine controller. | |
| + Port and demo application added for MC9S12 using GCC, thanks to | |
| Jefferson "imajeff" Smith. | |
| + The function vTaskList() now suspends the scheduler rather than disabling | |
| interrupts during the creation of the task list. | |
| + Allow a task to delete itself by passing in its own handle. Previously | |
| this could only be done by passing in NULL. | |
| + Corrected the value passed to the WDG_PeriodValueConfig() library | |
| function in the STR71x demo. | |
| + The tick hook function is now called only within a tick isr. Previously | |
| it was also called when the tick function was called during the scheduler | |
| unlocking process. | |
| + The EMAC driver in the SAM7X lwIP demo has been made more robust as per | |
| the thread: https://sourceforge.net/forum/message.php?msg_id=3714405 | |
| + In the PC ports: Add function prvSetTickFrequencyDefault() to set the | |
| DOS tick back to its proper value when the scheduler exits. Thanks | |
| Raynald! | |
| + In the Borland x86 ports there was a mistake in the portFIRST_CONTEXT | |
| macro where the BP register was not popped from the stack correctly. The | |
| BP value would never get used so this did not cause a problem, but it has | |
| been corrected all the same. | |
| Changes between V4.0.0 and V4.0.1 released April 7 2006 | |
| + Improved the ARM CORTEX M3 ports so they now only have to service | |
| pendSV interrupts. | |
| + Added a Luminary Micro port and demo for use with Rowley CrossWorks. | |
| + Added the xMissedYield handling to tasks.c. | |
| Changes between V3.2.4 and V4.0.0 | |
| Major changes: | |
| + Added new RTOS port for Luminary Micros ARM CORTEX M3 microcontrollers. | |
| + Added new co-routine functionality. | |
| Other kernel changes: | |
| + An optional tick hook call is now included in the tick function. | |
| + Introduced the xMiniListItem structure and removed the list pxHead | |
| member in order to reduce RAM usage. | |
| + Added the following definitions to the FreeRTOSConfig.h file included | |
| with every port: | |
| configUSE_TICK_HOOK | |
| configUSE_CO_ROUTINES | |
| configMAX_CO_ROUTINE_PRIORITIES | |
| + The volatile qualification has been changed on the list members to allow | |
| the task.c code to be tidied up a bit. | |
| + The scheduler can now be started even if no tasks have been created! | |
| This is to allow co-routines to run when there are no tasks. | |
| + A task being woken by an event will now preempt the currently running task | |
| even if its priority is only equal to the currently running task. | |
| Port and demo application changes: | |
| + Updated the WinAVR demo to compile with the latest version of WinAVR | |
| with no warnings generated. | |
| + Changed the WinAVR makefile to make chars signed - needed for the | |
| co-routine code if BaseType_t is set to char. | |
| + Added new demo application file crflash.c. This demonstrates co-routine | |
| functionality including passing data between co-routines. | |
| + Added new demo application file crhook.c. This demonstrates co-routine | |
| and tick hook functionality including passing data between and ISR and | |
| a co-routine. | |
| + Some NOP's were missing following stmdb{}^ instructions in various ARM7 | |
| ports. These have been added. | |
| + Updated the Open Watcom PC demo project to include the crflash and crhook | |
| demo co-routines as an example of their use. | |
| + Updated the H8S demo to compile with the latest version of GCC. | |
| + Updated the SAM7X EMAC drivers to take into account the hardware errata | |
| regarding lost packets. | |
| + Changed the default MAC address used by some WEB server demos as the | |
| original addresses used was not liked by some routers. | |
| + Modified the SAM7X/IAR startup code slightly to prevent it hanging on | |
| some systems when the code is executed using a j-link debugger. The | |
| j-link macro file configures the PLL before the code executes so | |
| attempting to configure it again in the startup code was causing a | |
| problem for some user. Now a check is performed first to see if the | |
| PLL is already set up. | |
| + GCC port now contain all assembler code in a single asm block rather than | |
| individual blocks as before. | |
| + GCC LPC2000 code now explicitly uses R0 rather than letting the assembler | |
| choose the register to use as a temporary register during the context | |
| switch. | |
| + Added portNOP() macro. | |
| + The compare match load value on LPC2000 ports now has 1 added to correct | |
| the value used. | |
| + The minimal stack depth has been increased slightly on the WIZC PIC18 | |
| port. | |
| Changes between V3.2.3 and V3.2.4 | |
| + Modified the GCC ARM7 port layer to allow use with GCC V4.0.0 and above. | |
| Many thanks to Glen Biagioni for the provided update. | |
| + Added a new Microblaze port and demo application. | |
| + Modified the SAM7X EMAC demo to default to use the MII interface rather | |
| than the RMII interface. | |
| + Modified the startup sequence of the SAM7X demo slightly to allow the | |
| EMAC longer to auto negotiate. | |
| Changes between V3.2.2 and V3.2.3 | |
| + Added MII interface support to the SAM7X EMAC peripheral driver. | |
| Previously versions worked with the RMII interface only. | |
| + Added command line GCC support to the SAM7X lwIP demo. Previously the | |
| project could only be built using the CrossWorks IDE. Modifications to | |
| this end include the addition of a standard makefile and linker script to | |
| the download, and some adjustments to the stacks allocated to each task. | |
| + Changed the page returned by the lwIP WEB server demo to display the | |
| task status table rather than the TCP/IP statistics. | |
| + Corrected the capitalisation of some header file includes and makefile | |
| dependencies to facilitate use on Linux host computers. | |
| + The various LPC2000 ports had a mistake in the timer setup where the | |
| prescale value was written to T0_PC instead of T0_PR. This would have | |
| no effect unless a prescale value was actually required. This has been | |
| corrected. | |
| Changes between V3.2.1 and V3.2.2 - Released 23 September, 2005 | |
| + Added an IAR port for the Philips LPC2129 | |
| + The Atmel ARM7 IAR demo project files are now saved in the IAR Embedded | |
| Workbench V4.30a format. | |
| + Updated the J-Link macro file included with the SAM7X uIP demo project | |
| to allow the demo board to be reset over the J-Link. | |
| Changes between V3.2.0 and V3.2.1 - Released 1 September, 2005 | |
| + Added lwIP demo for AT91SAM7X using Rowley tools. | |
| + Added uIP demo for AT91SAM7X using IAR tools. | |
| + Added function xTaskGetCurrentTaskHandle(). | |
| + Renamed events.h to mevents.h to prevent it conflicting with the events.h | |
| generated automatically by the HCS12 processor expert utility. events.h | |
| is only used by the PC demo application. | |
| + Both PIC18 ports now initialise the TBLPTRU to 0 as this is the value | |
| expected by the compiler, and the compilers do not write to this | |
| register. | |
| + The HCS12 banked model demo now creates the 'suicide' tasks immediately | |
| prior to starting the scheduler. These tasks should be the last tasks to | |
| get started in order for the test to function correctly. | |
| Changes between V3.1.1 and V3.2.0 - Released 29 June, 2005 | |
| V3.2.0 introduces two new MSP430 ports and corrects a minor kernel | |
| issues. Thanks to Ares.qi for his input. | |
| + Added two MSP430 ports that use the Rowley CrossWorks development tools. | |
| One port just mirrors the existing GCC port. The other port was provided | |
| by Milos Prokic. Thanks! | |
| + V3.2.0 corrects the behavior when vTaskPrioritySet() or vTaskResume() | |
| are called while the scheduler is locked (by a call to | |
| vTaskSuspendAll()). When this is done the subject task now starts to | |
| execute immediately when the scheduler is unlocked if it has the highest | |
| priority that is ready to run. Previously there was a possibility that | |
| the task would not run until the next RTOS tick or call to portYIELD(). | |
| + Another similar small correction ensures that in the case where more than | |
| one task is blocked on a semaphore or queue, the task with the highest | |
| priority is guaranteed to be unblocked first. | |
| + Added a couple of more test tasks to the PC demo which cover the points | |
| above. | |
| Changes between V3.1.0 and V3.1.1 - Released 21st June, 2005 | |
| This release updates the HCS12 port. The common kernel code | |
| remains unchanged. | |
| + Updated the HCS12 port to support banking and introduced a demo | |
| application for the MC9S12DP256. The new demo application is | |
| located in the Demo/HCS12_CodeWarrior_banked directory. | |
| + The name of the directory containing the MC9S12F32 demo application | |
| has been changed to Demo/HCS12_CodeWarrior_small (as in 'small' | |
| memory model). | |
| + MC9S12F32 demo updated slightly to use the PLL. The CPU speed for the | |
| demo application is now 24MHz. Previously it was 8MHz. | |
| + The demo application file Demo/Common/Minimal/death.c has a slight | |
| alteration to prevent it using floating point variables. | |
| Changes between V3.0.0 and V3.1.0 - Released 11th June, 2005 | |
| + Added new ports for ST Microsystems STR71x, and Freescale HCS12 | |
| microcontrollers. Currently the HCS12 port is limited to the small | |
| memory model. Large memory models will be supported in the next | |
| release. | |
| + PIC18 wizC port updated. Thanks to Marcel van Lieshout for his | |
| continuing contribution. | |
| + The accuracy of the AVR port timer setup has been improved. Thanks to | |
| Thomas Krutmann for this contribution. | |
| + Added a new conditional compilation macro configIDLE_SHOULD_YIELD. | |
| See the WEB documentation for details. | |
| + Updated the CrossWorks uIP demo to build with V1.4 of CrossWorks. | |
| + Slight modification to the SAM7 release build configuration to correct | |
| an include path definition. | |
| + Updated the MPLAB PIC18 documentation to provide extra details on linker | |
| file configuration. | |
| Changes between V3.0.0 and V2.6.1 - Released 23rd April, 2005 | |
| V3.0.0 includes many enhancements, so this history list is broken into | |
| subsections as follows: | |
| API changes | |
| New ports | |
| Directory name changes | |
| Kernel and miscellaneous changes changes | |
| - API changes | |
| + Each port now defines BaseType_t as the data type that is most | |
| efficient for that architecture. The type BaseType_t is used | |
| extensively in API calls necessitating the following changes to the | |
| FreeRTOS API function prototypes. | |
| See the "New for V3.0.0" section of the FreeRTOS online | |
| documentation for full details of API changes. | |
| - New ports | |
| + The AT91FR40008 ARM7 port contributed by John Feller is now included | |
| in the download (thanks John!). | |
| + The PIC18 port for the wizC/fedC compiler contributed by Marcel van | |
| Lieshout is now included in the download (thanks Marcel!). | |
| + The IAR port for the AVR microcontroller has been upgraded to V3.0.0 | |
| and is now a supported port. | |
| - Directory name changes | |
| For consistency, and to allow integration of the new ports, the | |
| following directory names have been changed. | |
| + The source/portable/GCC/ARM7 directory has been renamed | |
| source/portable/GCC/ARM7_LPC2000 so it is compatible with the naming | |
| of other GCC ARM7 ports. | |
| + The Demo/PIC directory has been renamed Demo/PIC18_MPLAB to | |
| accommodate the wizC/fedC PIC port. | |
| + The demo applications for the two AVR ports no longer share the same | |
| directory. The WinAVR demo is in the Demo/AVR_ATMega323_WinAVR | |
| directory and the IAR port in the Demo/AVR_ATMega323_IAR directory. | |
| - Kernel and miscellaneous changes changes | |
| See the "New for V3.0.0" section of the FreeRTOS online | |
| documentation for more information. | |
| + Previously 'portmacro.h' contained some user editable definitions | |
| relating to the user application, and some fixed definitions relating | |
| specifically to the port being used. The application specific | |
| definitions have been removed from 'portmacro.h' and placed inside a | |
| new header file called 'FreeRTOSConfig.h'. 'portmacro.h' should now | |
| never be modified by the user. A 'FreeRTOSConfig.h' is now included | |
| in each of FreeRTOS/Demo subdirectories - as it's settings relate to | |
| the demo application rather than being specific to the port. | |
| + Introduced configUSE_IDLE_HOOK in idle task. | |
| + The idle task will yield when another idle priority task is ready to | |
| run. Previously the idle task would run to the end of its time slice | |
| regardless. | |
| + The idle task is now created when the scheduler is started. This | |
| requires less stack than the previous scheme where it was created upon | |
| creation of the first application task. | |
| + The function usPortCheckFreeStackSpace() has been renamed | |
| usTaskCheckFreeStackSpace() and moved from the portable layer to | |
| tasks.c. | |
| + Corrected spelling of portMINMAL_STACK_SIZE to portMINIMAL_STACK_SIZE. | |
| + The portheap.c file included with the AVR port has been deleted. The | |
| AVR demo now uses the standard heap1 sample memory allocator. | |
| + The GCC AVR port is now build using the standard make utility. The | |
| batch files used previously have been deleted. This means a recent | |
| version of WinAVR is required in order to create a binary suitable for | |
| source level debugging. | |
| + vTaskStartScheduler() no longer takes the configUSE_PREEMPTION | |
| constant as a parameter. Instead the constant is used directly within | |
| tasks.c and no parameter is required. | |
| + The header file 'FreeRTOS.h' has been created and is used to include | |
| 'projdefs.h', 'FreeRTOSConfig.h' and 'portable.h' in the necessary | |
| order. FreeRTOS.h can now be included in place of these other | |
| headers. | |
| + The header file 'errors.h' has been deleted. The definitions it | |
| contained are now located within 'projdefs.h'. | |
| + pvPortMalloc() now takes a size_t parameter as per the ANSI malloc(). | |
| Previously an unsigned short was used. | |
| + When resuming the scheduler a yield is performed if either a tick has | |
| been missed, or a task is moved from the pending ready list into a | |
| ready list. Previously a yield was not performed on this second | |
| condition. | |
| + In heap1.c an overflow check has been added to ensure the next free | |
| byte variable does not wrap around. | |
| + Introduced the portTASK_FUNCTION() and portTASK_FUNCTION_PROTO() | |
| macros. | |
| + The MPLAB PIC port now saved the TABLAT register in interrupt service | |
| routines. | |
| Changes between V2.6.0 and V2.6.1 - Released Feb 22, 2005 | |
| This version adds support for the H8 processor. | |
| Other changes: | |
| + tskMAX_TASK_NAME_LEN removed from the task.h header and added to each | |
| individual portmacro.h file as portMAX_TASK_NAME_LEN. This allows RAM | |
| limited ports to allocate fewer characters to the task name. | |
| + AVR port - Replaced the inb() and outb() functions with direct memory | |
| access. This allows the port to be built with the 20050414 build of | |
| WinAVR. | |
| + GCC LPC2106 port - removed the 'static' from the definition of | |
| vNonPreemptiveTick() to allow the demo to link when using the cooperative | |
| scheduler. | |
| + GCC LPC2106 port - Corrected the optimisation options in the batch files | |
| ROM_THUMB.bat, RAM_THUMB.bat, ROM_ARM.bat and RAM_ARM.bat. The lower case | |
| -o is replaced by an uppercase -O. | |
| + Tasks.c - The strcpy call has been removed when copying across the task | |
| name into the TCB. | |
| + Updated the trace visualisation to always be 4 byte aligned so it can be | |
| used on ARM architectures. | |
| + There are now two tracecon executables (that convert the trace file binary | |
| into an ASCII file). One for big endian targets and one for little endian | |
| targets. | |
| + Added ucTasksDeleted variable to prevent vTaskSuspendAll() being called | |
| too often in the idle task. | |
| + SAM7 USB driver - Replaced the duplicated RX_DATA_BK0 in the interrupt | |
| mask with the RX_DATA_BK1. | |
| Changes between V2.5.5 and V2.6.0 - Released January 16, 2005 | |
| + Added the API function vTaskDelayUntil(). The demo app file | |
| Demo/Common/Minimal/flash.c has been updated to demonstrate its use. | |
| + Added INCLUDE_vTaskDelay conditional compilation. | |
| + Changed the name of the Demo/ARM7_AtmelSAM7S64_IAR directory to | |
| Demo/ARM7_AT91SAM7S64_IAR for consistency. | |
| + Modified the AT91SAM7S USB driver to allow descriptors that have | |
| a length that is an exact multiple of the FIFO to be transmitted. | |
| Changes between V2.5.4 and V2.5.5 - Released January 3, 2005 | |
| This version adds support for the Atmel SAM7 ARM7 microcontrollers | |
| along with the IAR development tools. | |
| Other changes: | |
| + Renamed the Demo/ARM7 directory to Demo/ARM7_LPC2106_GCC. | |
| + Renamed the Demo/ARM7_Keil directory to Demo/ARM7_LPC2129_Keil. | |
| + Modified the Philips ARM7 serial interrupt service routines to only | |
| process one interrupt per call. This seems to enable the ISR to | |
| operate more quickly. | |
| + Removed the 'far' keyword from the Open Watcom portable layer source | |
| files. This allows their use with V1.3 of Open Watcom. | |
| + Minor modifications to the SDCC build files to allow their use under | |
| Linux. Thanks to Frieder Ferlemann for this contribution. | |
| + Small change to sTaskCreate() to allow a context switch even when | |
| pxCreatedTask is NULL. Thanks to Kamil for this contribution. | |
| + inline keyword removed from vTaskSwitchContext() and VTaskIncrementTick() | |
| definitions. | |
| Changes between V2.5.3 and V2.5.4 - Released Dec 1, 2004 | |
| This is an important maintenance release. | |
| The function cTaskResumeAll() has been modified so it can be used safely | |
| prior to the kernel being initialised. This was an issue as | |
| cTaskResumeAll() is called from pvPortMalloc(). Thanks to Daniel Braun | |
| for highlighting this issue. | |
| Changes between V2.5.2 and V2.5.3 - Released Nov 2, 2004 | |
| The critical section handling functions have been changed for the GCC ARM7 | |
| port. Some optimisation levels use the stack differently to others. This | |
| means the interrupt flags cannot always be stored on the stack and are | |
| instead now stored in a variable, which is then saved as part of the | |
| tasks context. This allows the GCC ARM7 port to be used at all | |
| optimisation levels - including -Os. | |
| Other minor changes: | |
| + MSP430 definition of usCriticalNesting now uses the volatile qualifier. | |
| This is probably not required but added just in case. | |
| Changes between V2.5.1 and V2.5.2 - Released Oct 26, 2004 | |
| + Added the Keil ARM7 port. | |
| + Slight modification to comtest.c to make the delay periods more random. | |
| This creates a better test condition. | |
| Changes between V2.5.0 and V2.5.1 - Released Oct 9, 2004 | |
| + Added the MSP430 port. | |
| + Extra comments added to the GCC ARM7 port.c and portISR.c files. | |
| + The memory pool allocated within heap_1.c has been placed within a | |
| structure to ensure correct memory alignment on 32bit systems. | |
| + Within the GCC ARM7 serial drivers an extra check is made to ensure | |
| the post to the queue was successful if then attempting immediately | |
| retrieve the posted character. | |
| + Changed the name of the constant portTICKS_PER_MS to portTICK_PERIOD_MS | |
| as the old name was misleading. | |
| Changes between V2.4.2 and V2.5.0 - Released Aug 12, 2004 | |
| The RTOS source code download now includes three separate memory allocation | |
| schemes - so you can choose the most appropriate for your application. | |
| These are found in the Source/Portable/MemMang directory. The demo | |
| application projects have also been updated to demonstrate the new schemes. | |
| See the "Memory Management" page of the API documentation for more details. | |
| + Added heap_1.c, heap_2.c and heap_3.c in the Source/Portable/MemMang | |
| directory. | |
| + Replaced the portheap.c files for each demo application with one of the | |
| new memory allocation files. | |
| + Updated the portmacro.h file for each demo application to include the | |
| constants required for the new memory allocators: portTOTAL_HEAP_SIZE and | |
| portBYTE_ALIGNMENT. | |
| + Added a new test to the ARM7 demo application that tests the operation | |
| of the heap_2 memory allocator. | |
| Changes between V2.4.1 and V2.4.2 - Released July 14, 2004 | |
| + The ARM7 port now supports THUMB mode. | |
| + Modification to the ARM7 demo application serial port driver. | |
| Changes between V2.4.0 and V2.4.1 - Released July 2, 2004 | |
| + Rationalised the ARM7 port version of portEXIT_CRITICAL() - | |
| improvements provided by Bill Knight. | |
| + Made demo serial driver more complete and robust. | |
| Changes between V2.4.0 and V2.3.1 - Released June 30, 2004 | |
| + Added the first ARM7 port - thanks to Bill Knight for the assistance | |
| provided. | |
| + Added extra files to the Demo/Common/Minimal directory. These are | |
| equivalent to their Demo/Common/Full counterparts but with the | |
| calls to the functions defined in print.c removed. | |
| + Added TABLAT to the list of registers saved as part of a PIC18 context. | |
| Changes between V2.3.0 and V2.3.1 - Released June 25, 2004 | |
| + Changed the way the vector table is defined to be more portable. | |
| + Corrected the definitions of SPH and SPL in portmacro.s90. | |
| The previous definitions prevented V2.3.0 operating if the iom323.h | |
| header file was included in portmacro.s90. | |
| Changes between V2.2.0 and V2.3.0 - Released June 19, 2004 | |
| + Added an AVR port that uses the IAR compiler. | |
| + Explicit use of 'signed' qualifier on plain char types. | |
| + Modified the Open Watcom project files to use 'signed' as the | |
| default char type. | |
| + Changed odd calculation of initial pxTopOfStack value when | |
| portSTACK_GROWTH < 0. | |
| + Added inline qualifier to context switch functions within task.c. | |
| Ports that do not support the (non ANSI) inline keyword have the | |
| inline #define'd away in their respective portmacro.h files. | |
| Changes between V2.1.1 and V2.2.0 - Released May 18, 2004 | |
| + Added Cygnal 8051 port. | |
| + PCLATU and PCLATH are now saved as part of the PIC18 context. This | |
| allows function pointers to be used within tasks. Thanks to Javier | |
| Espeche for the enhancement. | |
| + Minor changes to demo application files to reduce stack usage. | |
| + Minor changes to prevent compiler warnings when compiling the new port. | |
| Changes between V2.1.0 and V2.1.1 - Released March 12, 2004 | |
| + Bug fix - pxCurrentTCB is now initialised before the call to | |
| prvInitialiseTaskLists(). Previously pxCurrentTCB could be accessed | |
| while null during the initialisation sequence. Thanks to Giuseppe | |
| Franco for the correction. | |
| Changes between V2.0.0 and V2.1.0 - Released Feb 29, 2004 | |
| V2.1.0 has significant reworks that greatly reduce the amount of time | |
| the kernel has interrupts disabled. The first section of modifications | |
| listed here must be taken into account by users. The second section | |
| are related to the kernel implementation and as such are transparent. | |
| Section1 : | |
| + The typedef TickType_t has been introduced. All delay times should | |
| now use a variable of type TickType_t in place of the unsigned long's | |
| used previously. API function prototypes have been updated | |
| appropriately. | |
| + The configuration macro USE_16_BIT_TICKS has been introduced. If set | |
| to 1 TickType_t is defined as an unsigned short. If set to 0 | |
| TickType_t is defined as an unsigned long. See the configuration | |
| section of the API documentation for more details. | |
| + The configuration macro INCLUDE_vTaskSuspendAll is now obsolete. | |
| + vTaskResumeAll() has been renamed cTaskResumeAll() as it now returns a | |
| value (see the API documentation). | |
| + ulTaskGetTickCount() has been renamed xTaskGetTickCount() as the type | |
| it returns now depends on the USE_16_BIT_TICKS definition. | |
| + cQueueReceive() must now >never< be used from within an ISR. Use the new | |
| cQueueReceiveFromISR() function instead. | |
| Section 2: | |
| + A mechanism has been introduced that allows a queue to be accessed by | |
| a task and ISR simultaneously. | |
| + A "pending ready" queue has been introduced that enables interrupts to | |
| be processed when the scheduler is suspended. | |
| + The list implementation has been improved to provide faster item | |
| removal. | |
| + The scheduler now makes use of the scheduler suspend mechanism in places | |
| where previously interrupts were disabled. | |
| Changes between V1.2.6 and V2.0.0 - Released Jan 31, 2004 | |
| + Introduced new API functions: | |
| vTaskPriorityGet () | |
| vTaskPrioritySet () | |
| vTaskSuspend () | |
| vTaskResume () | |
| vTaskSuspendAll () | |
| vTaskResumeAll () | |
| + Added conditional compilation options that allow the components of the | |
| kernel that are unused by an application to be excluded from the build. | |
| See the Configuration section on the WEB site for more information (on | |
| the API pages). The macros have been added to each portmacro.h file ( | |
| sometimes called prtmacro.h). | |
| + Rearranged tasks.c. | |
| + Added demo application file dynamic.c. | |
| + Updated the PC demo application to make use of dynamic.c. | |
| + Updated the documentation contained in the kernel header files. | |
| + Creating a task now causes a context switch if the task being created | |
| has a higher priority than the calling task - assuming the kernel is | |
| running. | |
| + vTaskDelete() now only causes a context switch if the calling task is | |
| the task being deleted. | |
| Changes between V1.2.5 and V1.2.6 - Released December 31, 2003 | |
| Barring the change to the interrupt vector (PIC port) these are minor | |
| enhancements. | |
| + The interrupt vector used for the PIC master ISR has been changed from | |
| 0x18 to 0x08 - where it should have always been. The incorrect address | |
| still works but probably executes a number of NOP's before getting to the | |
| ISR. | |
| + Changed the baud rate used by the AVR demo application to 38400. This | |
| has an error percentage of less than one percent with an 8MHz clock. | |
| + Raised the priority of the Rx task in demo\full\comtest.c. This only | |
| affects the Flashlite and PC ports. This was done to prevent the Rx | |
| buffer becoming full. | |
| + Reverted the Flashlite COM port driver back so it does not use the DMA. | |
| The DMA appears to miss characters under stress. The Borland Flashlite | |
| port was also calculating a register value incorrectly resulting in the | |
| wrong DMA source address being used. The same code worked fine when | |
| compiling with Open Watcom. Other minor enhancements were made to the | |
| interrupt handling. | |
| + Modified the PIC serial Rx ISR to check for and clear overrun errors. | |
| Overrun errors seem to prevent any further characters being received. | |
| + The PIC demo projects now have some optimisation switched on. | |
| Changes between V1.2.4 and V1.2.5 | |
| Small fix made to the PIC specific port.c file described below. | |
| + Introduced portGLOBAL_INTERRUPT_FLAG definition to test the global | |
| interrupt flag setting. Using the two bits defined within | |
| portINITAL_INTERRUPT_STATE was causing the w register to get clobbered | |
| before the test was performed. | |
| Changes between V1.2.3 and V1.2.4 | |
| V1.2.4 contains a release version of the PIC18 port. | |
| An optional exception has been included with the GPL. See the licensing | |
| section of www.FreeRTOS.org for details. | |
| + The function xPortInitMinimal() has been renamed to | |
| xSerialPortInitMinimal() and the function xPortInit() has been renamed | |
| to xSerialPortInit(). | |
| + The function sSerialPutChar() has been renamed cSerialPutChar() and | |
| the function return type chaned to portCHAR. | |
| + The integer and flop tasks now include calls to tskYIELD(), allowing | |
| them to be used with the cooperative scheduler. | |
| + All the demo applications now use the integer and comtest tasks when the | |
| cooperative scheduler is being used. Previously they were only used with | |
| the preemptive scheduler. | |
| + Minor changes made to operation of minimal versions of comtest.c and | |
| integer.c. | |
| + The ATMega port definition of portCPU_CLOSK_HZ definition changed to | |
| 8MHz base 10, previously it base 16. | |
| Changes between V1.2.2a and V1.2.3 | |
| The only change of any significance is to the license, which has changed | |
| from the Open Software License to the GNU GPL. | |
| The zip file also contains a pre-release version of the PIC18 port. This | |
| has not yet completed testing and as such does not constitute part of the | |
| V1.2.3 release. It is still however covered by the GNU GPL. | |
| There are minor source code changes to accommodate the PIC C compiler. | |
| These mainly involve more explicit casting. | |
| + sTaskCreate() has been modified slightly to make use of the | |
| portSTACK_GROWTH macro. This is required for the PIC port where the | |
| stack grows in the opposite direction to the other existing ports. | |
| + prvCheckTasksWaitingTermination() has been modified slightly to bring | |
| the decrementing of usCurrentNumberOfTasks within the critical section, | |
| where it should have been since the creation of an eight bit port. | |
| Changes between V1.2.2 and V1.2.2a | |
| The makefile and buildcoff.bat files included with the AVR demo application | |
| have been modified for use with the September 2003 build of WinAVR. No | |
| source files have changed. | |
| Changes between V1.2.1 and V1.2.2 | |
| There are only minor changes here to allow the PC and Flashlite 186 ports | |
| to use the Borland V4.52 compiler, as supplied with the Flashlite 186 | |
| development kit. | |
| + Introduced a BCC directory under source\portable. This contains all the | |
| files specific to the Borland compiler port. | |
| + Corrected the macro naming of portMS_PER_TICK to portTICKS_PER_MS. | |
| + Modified comtest.c to increase the rate at which the string is | |
| transmitted and received on the serial port. The Flashlite 186 demo | |
| app baud rate has also been increased. | |
| + The values of the constants used in both integer.c files have been | |
| increased to force the Borland compiler to use 32 bit values. The | |
| Borland optimiser placed the previous values in 16 bit registers, and in | |
| So doing invalidated the test. | |
| Changes between V1.2.0 and V1.2.1 | |
| This version includes some minor changes to the list implementation aimed | |
| at improving the context switch time - with is now approximately 10% faster. | |
| Changes include the removal of some null pointer assignment checks. These | |
| were redundant where the scheduler uses the list functions, but means any | |
| user application choosing to use the same list functions must now check | |
| that no NULL pointers are passed as a parameter. | |
| The Flashlite 186 serial port driver has also been modified to use a DMA | |
| channel for transmissions. The serial driver is fully functional but still | |
| under development. Flashlite users may prefer to use V1.2.0 for now. | |
| Details: | |
| + Changed the baud rate for the ATMega323 serial test from 19200 to 57600. | |
| + Use vSerialPutString() instead of single character puts in | |
| Demo\Full\Comtest.c. This allows the use of the flashlite DMA serial | |
| driver. Also the check variable only stops incrementing after two | |
| consecutive failures. | |
| + semtest.c creates four tasks, two of which operate at the idle priority. | |
| The tasks that operate at the idle priority now use a lower expected | |
| count than those running at a higher priority. This prevents the low | |
| priority tasks from signalling an error because they have not been | |
| scheduled enough time for each of them to count the shared variable to | |
| the higher original value. | |
| + The flashlite 186 serial driver now uses a DMA channel for transmissions. | |
| + Removed the volatile modifier from the list function parameters. This was | |
| only ever included to prevent compiler warnings. Now warnings are | |
| removed by casting parameters where the calls are made. | |
| + prvListGetOwnerOfNextEntry() and prvListGetOwnerOfHeadEntry() have been | |
| removed from list.c and added as macros in list.h. | |
| + usNumberOfItems has been added to the list structure. This removes the | |
| need for a pointer comparison when checking if a list is empty, and so | |
| is slightly faster. | |
| + Removed the NULL check in vListRemove(). This makes the call faster but | |
| necessitates any application code utilising the list implementation to | |
| ensure NULL pointers are not passed. | |
| + Renamed portTICKS_PER_MS definition to portMS_PER_TICK (milli seconds | |
| per tick). This is what it always should have been. | |
| Changes between V1.01 and V1.2.0 | |
| The majority of these changes were made to accommodate the 8bit AVR port. | |
| The scheduler workings have not changed, but some of the data types used | |
| have been made more friendly to an eight bit environment. | |
| Details: | |
| + Changed the version numbering format. | |
| + Added AVR port. | |
| + Split the directory demo\common into demo\common\minimal and | |
| demo\common\full. The files in the full directory are for systems with | |
| a display (currently PC and Flashlite 186 demo's). The files in the | |
| minimal directory are for systems with limited RAM and no display | |
| (currently MegaAVR). | |
| + Minor changes to demo application function prototypes to make more use | |
| of 8bit data types. | |
| + Within the scheduler itself the following functions have slightly | |
| modified declarations to make use of 8bit data types where possible: | |
| xQueueCreate(), | |
| sQueueReceive(), | |
| sQUeueReceive(), | |
| usQueueMessageWaiting(), | |
| sQueueSendFromISR(), | |
| sSemaphoreTake(), | |
| sSemaphoreGive(), | |
| sSemaphoreGiveFromISR(), | |
| sTaskCreate(), | |
| sTaskMoveFromEventList(). | |
| Where the return type has changed the function name has also changed in | |
| accordance with the naming convention. For example | |
| usQueueMessageWaiting() has become ucQueueMessageWaiting(). | |
| + The definition tskMAX_PRIORITIES has been moved from task.h to | |
| portmacro.h and renamed portMAX_PRIORITIES. This allows different | |
| ports to allocate a different maximum number of priorities. | |
| + By default the trace facility is off, previously USE_TRACE_FACILITY | |
| was defined. | |
| + comtest.c now uses a psuedo random delay between sends. This allows for | |
| better testing as the interrupts do not arrive at regular intervals. | |
| + Minor change to the Flashlite serial port driver. The driver is written | |
| to demonstrate the scheduler and is not written to be efficient. | |
| Changes between V1.00 and V1.01 | |
| These changes improve the ports. The scheduler itself has not changed. | |
| Improved context switch mechanism used when performing a context | |
| switch from an ISR (both the tick ISR and the serial comms ISR's within | |
| the demo application). The new mechanism is faster and uses less stack. | |
| The assembler file portasm.asm has been replaced by a header file | |
| portasm.h. This includes a few assembler macro definitions. | |
| All saving and restoring of registers onto/off of the stack is now handled | |
| by the compiler. This means the initial stack setup for a task has to | |
| mimic the stack used by the compiler, which is different for debug and | |
| release builds. | |
| Slightly changed the operation of the demo application, details below. | |
| Details: | |
| + portSWITCH_CONTEXT() replaced by vPortFirstContext(). | |
| + pxPortInitialiseStack() modified to replicate the stack used by the | |
| compiler. | |
| + portasm.asm file removed. | |
| + portasm.h introduced. This contains macro definitions for | |
| portSWITCH_CONTEXT() and portFIRST_CONTEXT(). | |
| + Context switch from ISR now uses the compiler generated interrupt | |
| mechanism. This is done simply by calling portSWITCH_CONTEXT and leaving | |
| the save/restore to compiler generated code. | |
| + Calls to taskYIELD() during ISR's have been replaced by calling the | |
| simpler and faster portSWITCH_CONTEXT(). | |
| + The Flashlite 186 port now uses 186 instruction set (used to use 80x86 | |
| instructions only). | |
| + The blocking queue tasks within the demo application did not operate | |
| quite as described. This has been corrected. | |
| + The priority of the comtest Rx task within the demo application has been | |
| lowered. Received characters are now processed (read from the queue) at | |
| the idle priority, allowing low priority tasks to run evenly at times of | |
| a high communications overhead. | |
| + Prevent the call to kbhit() in main.c for debug builds as the debugger | |
| seems to have problems stepping over the call. This if for the PC port | |
| only. | |