Paul Bartell | 01820d3 | 2022-11-29 10:36:04 -0800 | [diff] [blame] | 1 | Documentation and download available at https://www.FreeRTOS.org/ |
| 2 | |
Phillip Stevens | 14dd5b5 | 2024-01-27 16:26:55 +1100 | [diff] [blame] | 3 | + Update all the APIs to use configSTACK_DEPTH_TYPE for stack type. If left |
| 4 | undefined, configSTACK_DEPTH_TYPE defaults to StackType_t. |
| 5 | |
Rahul Kar | 4e7ca2d | 2023-12-21 11:43:30 +0530 | [diff] [blame] | 6 | Changes between FreeRTOS V11.0.0 and FreeRTOS V11.0.1 released December 21, 2023 |
| 7 | |
| 8 | + Updated the SBOM file. |
| 9 | |
chinglee-iot | 5bb2b59 | 2023-12-18 17:16:22 +0800 | [diff] [blame] | 10 | Changes between FreeRTOS V10.6.2 and FreeRTOS V11.0.0 released December 18, 2023 |
| 11 | |
| 12 | + SMP merged into the mainline: While FreeRTOS introduced Asymmetric |
| 13 | Multiprocessing (AMP) support in 2017, FreeRTOS Version 11.0.0 is the |
| 14 | first to merge Symmetric Multiprocessing (SMP) support into the mainline |
| 15 | release. SMP enables one instance of the FreeRTOS Kernel to schedule tasks |
| 16 | across multiple identical processor cores. We thank Mike Bruno and Jerry |
| 17 | McCarthy of XMOS and, Darian Liang, Sudeep Mohanty and Zim Kalinowski of |
| 18 | Espressif Systems for their contributions. |
| 19 | + Switch MISRA compliance checking from PC Lint to Coverity, and update from |
| 20 | MISRA C:2004 to MISRA C:2012. |
| 21 | + Add a template FreeRTOSConfig.h, inclusive of an abbreviated explanation of |
| 22 | each configuration item. Application writers can use this template as a |
| 23 | starting point to create the FreeRTOSConfig.h file for their application. |
| 24 | + Add a template FreeRTOS port which can be used as a starting point for |
| 25 | developing a new FreeRTOS port. |
| 26 | + Add bounds checking and obfuscation to internal heap block pointers in |
| 27 | heap_4.c and heap_5.c to help catch pointer corruptions. The application can |
| 28 | enable these checks by setting configENABLE_HEAP_PROTECTOR to 1 in their |
| 29 | FreeRTOSConfig.h. We thank @oliverlavery for their contribution. |
| 30 | + Update vTaskList and vTaskGetRunTimeStats APIs to replace the use of sprintf |
| 31 | with snprintf. |
| 32 | + Add trace macros to ports that enable tracing the interaction of ISRs with |
| 33 | scheduler events. We thank @conara for their contribution. |
| 34 | + Add trace macros that enable tracing of entering and exiting all APIs. We |
| 35 | thank @Techcore123 for their contribution. |
| 36 | + Add uxTaskBasePriorityGet and uxTaskBasePriorityGetFromISR APIs to get the |
| 37 | base priority of a task. The base priority of a task is the priority that |
| 38 | was last assigned to the task - which due to priority inheritance, may not |
| 39 | be the current priority of the task. |
| 40 | + Add pdTICKS_TO_MS macro to convert time in FreeRTOS ticks to time in |
| 41 | milliseconds. We thank @Dazza0 for their contribution. |
| 42 | + Add default implementations of vApplicationGetIdleTaskMemory and |
| 43 | vApplicationGetTimerTaskMemory. The application can enable these default |
| 44 | implementations by setting configKERNEL_PROVIDED_STATIC_MEMORY to 1 in their |
| 45 | FreeRTOSConfig.h. We thank @mdnr-g for their contribution. |
| 46 | + Update vTaskGetInfo to include start and end of the stack whenever both |
| 47 | values are available. We thank @vinceburns for their contribution. |
| 48 | + Prevent tasks waiting for a notification from being resumed by calls to |
| 49 | vTaskResume or vTaskResumeFromISR. We thank @Moral-Hao for their |
| 50 | contribution. |
| 51 | + Add asserts to validate that the application has correctly installed |
| 52 | FreeRTOS handlers for PendSV and SVCall interrupts on Cortex-M devices. |
| 53 | We thank @jefftenney for their contribution. |
| 54 | + Rename ARM_CA53_64_BIT and ARM_CA53_64_BIT_SRE ports to Arm_AARCH64 and |
| 55 | Arm_AARCH64_SRE respectively as these ports are applicable to all AArch64 |
| 56 | architecture. We thank @urutva for their contribution. |
| 57 | + Add CMake support to allow the application writer to select the RISC-V |
| 58 | chip extension. We thank @JoeBenczarski for their contribution. |
| 59 | + Add CMake support to allow the application writer to build an application |
| 60 | with static allocation only. We thank @conara for their contribution. |
| 61 | + Make taskYIELD available to unprivileged tasks for ARMv8-M ports. |
| 62 | + Update Cortex-M23 ports to not use PSPLIM_NS. We thank @urutva for their |
| 63 | contribution. |
| 64 | + Update the SysTick setup code for ARMv8-M ports to first configure the clock |
| 65 | source and then enable SysTick. This is needed to address a bug in QEMU |
| 66 | versions older than 7.0.0, which causes an emulation error if SysTick is |
| 67 | enabled without first selecting a valid clock source. We thank @jefftenney |
| 68 | for their contribution. |
| 69 | + Add the port-optimized task selection algorithm optionally available for |
| 70 | ARMv7-M ports to the ARMv8-M ports. We thank @jefftenney for their |
| 71 | contribution. |
| 72 | + Improve the speed of pvPortMalloc in heap_4.c and heap_5.c by removing |
| 73 | unnecessary steps while splitting a large memory block into two. We thank |
| 74 | @Moral-Hao for their contribution. |
| 75 | + Shorten the critical section in pvPortMalloc in heap_2.c, heap_4.c and |
| 76 | heap_5.c by moving the size calculation out of the critical section. We thank |
| 77 | @Moral-Hao for their contribution. |
| 78 | + Update xTaskNotifyWait and ulTaskNotifyTake to remove the non-deterministic |
| 79 | operation of traversing a linked link from a critical section. We thank |
| 80 | @karver8 for their contribution. |
| 81 | + Fix stack end and stack size computation in POSIX port to meet the stack |
| 82 | alignment requirements on MacOS. We thank @tegimeki for their contribution. |
| 83 | + Update the vTaskPrioritySet implementation to use the new priority when the |
| 84 | task has inherited priority from a mutex it is holding, and the new priority |
| 85 | is bigger than the inherited priority. We thank @Moral-Hao for their |
| 86 | contribution. |
| 87 | + Add stack alignment adjustment if stack grows upwards. We thank @ivq for |
| 88 | their contribution. |
| 89 | + Fix pxTopOfStack calculation in configINIT_TLS_BLOCK when picolib C is |
| 90 | selected as the C library implementation to ensure that |
| 91 | pxPortInitialiseStack does not overwrite the data in the TLS block portion |
| 92 | of the stack. We thank @bebebib-rs for their contribution. |
| 93 | + Fix vPortEndScheduler() for the MSVC port so that the function |
| 94 | prvProcessSimulatedInterrupts is not stuck in an infinite loop when the |
| 95 | scheduler is stopped. We thank @Ju1He1 for their contribution. |
| 96 | + Add the Pull Request (PR) Process explaining the stages a PR goes through. |
| 97 | |
| 98 | Changes between FreeRTOS V10.6.1 and FreeRTOS V10.6.2 released November 29, 2023 |
| 99 | |
| 100 | + Add the following improvements to the new MPU wrapper (mpu_wrappers_v2.c) |
| 101 | introduced in version 10.6.0: |
| 102 | - Introduce Access Control List (ACL) feature to allow the application |
| 103 | writer to control an unprivileged task’s access to kernel objects. |
| 104 | - Update the system call entry mechanism to only require one Supervisor |
| 105 | Call (SVC) instruction. |
| 106 | - Wrap parameters for system calls with more than four parameters in a |
| 107 | struct to avoid special handling during system call entry. |
| 108 | - Fix 2 possible integer overflows. |
| 109 | - Convert some asserts to run time parameter checks. |
| 110 | |
| 111 | Changes between FreeRTOS V10.6.0 and FreeRTOS V10.6.1 released August 17, 2023 |
| 112 | |
| 113 | + Add runtime parameter checks to functions in mpu_wrappers_v2.c file. |
| 114 | The same checks are already performed in API implementations using |
| 115 | asserts. |
| 116 | We thank the following people for their inputs in these changes: |
| 117 | - Lan Luo, Zixia Liu of School of Computer Science and Technology, |
| 118 | Anhui University of Technology, China. |
| 119 | - Xinwen Fu of Department of Computer Science, University of |
| 120 | Massachusetts Lowell, USA. |
| 121 | - Xinhui Shao, Yumeng Wei, Huaiyu Yan, Zhen Ling of School of |
| 122 | Computer Science and Engineering, Southeast University, China. |
| 123 | |
kar-rahul-aws | b60ab2f | 2023-07-13 17:13:16 +0530 | [diff] [blame] | 124 | Changes between FreeRTOS V10.5.1 and FreeRTOS 10.6.0 released July 13, 2023 |
| 125 | |
| 126 | + Add a new MPU wrapper that places additional restrictions on unprivileged |
| 127 | tasks. The following is the list of changes introduced with the new MPU |
| 128 | wrapper: |
| 129 | |
| 130 | 1. Opaque and indirectly verifiable integers for kernel object handles: |
| 131 | All the kernel object handles (for example, queue handles) are now |
| 132 | opaque integers. Previously object handles were raw pointers. |
| 133 | 2. Save the task context in Task Control Block (TCB): When a task is |
| 134 | swapped out by the scheduler, the task's context is now saved in its |
| 135 | TCB. Previously the task's context was saved on its stack. |
| 136 | 3. Execute system calls on a separate privileged only stack: FreeRTOS |
| 137 | system calls, which execute with elevated privilege, now use a |
| 138 | separate privileged only stack. Previously system calls used the |
| 139 | calling task's stack. The application writer can control the size of |
| 140 | the system call stack using new configSYSTEM_CALL_STACK_SIZE config |
| 141 | macro. |
| 142 | 4. Memory bounds checks: FreeRTOS system calls which accept a pointer |
| 143 | and de-reference it, now verify that the calling task has required |
| 144 | permissions to access the memory location referenced by the pointer. |
| 145 | 5. System calls restrictions: The following system calls are no longer |
| 146 | available to unprivileged tasks: |
| 147 | - vQueueDelete |
| 148 | - xQueueCreateMutex |
| 149 | - xQueueCreateMutexStatic |
| 150 | - xQueueCreateCountingSemaphore |
| 151 | - xQueueCreateCountingSemaphoreStatic |
| 152 | - xQueueGenericCreate |
| 153 | - xQueueGenericCreateStatic |
| 154 | - xQueueCreateSet |
| 155 | - xQueueRemoveFromSet |
| 156 | - xQueueGenericReset |
| 157 | - xTaskCreate |
| 158 | - xTaskCreateStatic |
| 159 | - vTaskDelete |
| 160 | - vTaskPrioritySet |
| 161 | - vTaskSuspendAll |
| 162 | - xTaskResumeAll |
| 163 | - xTaskGetHandle |
| 164 | - xTaskCallApplicationTaskHook |
| 165 | - vTaskList |
| 166 | - vTaskGetRunTimeStats |
| 167 | - xTaskCatchUpTicks |
| 168 | - xEventGroupCreate |
| 169 | - xEventGroupCreateStatic |
| 170 | - vEventGroupDelete |
| 171 | - xStreamBufferGenericCreate |
| 172 | - xStreamBufferGenericCreateStatic |
| 173 | - vStreamBufferDelete |
| 174 | - xStreamBufferReset |
| 175 | Also, an unprivileged task can no longer use vTaskSuspend to suspend |
| 176 | any task other than itself. |
| 177 | |
| 178 | We thank the following people for their inputs in these enhancements: |
| 179 | - David Reiss of Meta Platforms, Inc. |
| 180 | - Lan Luo, Xinhui Shao, Yumeng Wei, Zixia Liu, Huaiyu Yan and Zhen Ling |
| 181 | of School of Computer Science and Engineering, Southeast University, |
| 182 | China. |
| 183 | - Xinwen Fu of Department of Computer Science, University of |
| 184 | Massachusetts Lowell, USA. |
Gaurav-Aggarwal-AWS | dbef667 | 2023-07-26 11:12:16 +0530 | [diff] [blame] | 185 | - Yueqi Chen, Zicheng Wang, Minghao Lin, Jiahe Wang of University of |
| 186 | Colorado Boulder, USA. |
kar-rahul-aws | b60ab2f | 2023-07-13 17:13:16 +0530 | [diff] [blame] | 187 | + Add Cortex-M35P port. Contributed by @urutva. |
| 188 | + Add embedded extension (RV32E) support to the IAR RISC-V port. |
| 189 | + Add ulTaskGetRunTimeCounter and ulTaskGetRunTimePercent APIs. Contributed by |
| 190 | @chrisnc. |
| 191 | + Add APIs to get the application supplied buffers from statically |
| 192 | created kernel objects. The following new APIs are added: |
| 193 | - xTaskGetStaticBuffers |
| 194 | - xQueueGetStaticBuffers |
| 195 | - xQueueGenericGetStaticBuffers |
| 196 | - xSemaphoreGetStaticBuffer |
| 197 | - xEventGroupGetStaticBuffer |
| 198 | - xStreamBufferGetStaticBuffers |
| 199 | - xMessageBufferGetStaticBuffers |
| 200 | These APIs enable the application writer to obtain static buffers from |
| 201 | the kernel object and free/reuse them at the time of deletion. Earlier |
| 202 | the application writer had to maintain the association of static buffers |
| 203 | and the kernel object in the application. Contributed by @Dazza0. |
| 204 | + Add Thread Local Storage (TLS) support using picolibc function. Contributed |
| 205 | by @keith-packard. |
| 206 | + Add configTICK_TYPE_WIDTH_IN_BITS to configure TickType_t data type. As a result, |
| 207 | the number of bits in an event group also increases with big data type. Contributed |
| 208 | by @Hadatko. |
| 209 | + Update eTaskGetState and uxTaskGetSystemState to return eReady for pending ready |
| 210 | tasks. Contributed by @Dazza0. |
| 211 | + Update heap_4 and heap_5 to add padding only if the resulting block is not |
| 212 | already aligned. |
| 213 | + Fix the scheduler logic in a couple of places to not preempt a task when an |
| 214 | equal priority task becomes ready. |
| 215 | + Add macros used in FreeRTOS-Plus libraries. Contributed by @Holden. |
| 216 | + Fix clang compiler warnings. Contributed by @phelter. |
| 217 | + Add assertions to ARMv8-M ports to detect when FreeRTOS APIs are called from |
| 218 | interrupts with priority higher than the configMAX_SYSCALL_INTERRUPT_PRIORITY. |
| 219 | Contributed by @urutva. |
| 220 | + Add xPortIsInsideInterrupt API to ARM_CM0 ports. |
| 221 | + Fix build warning in MSP430X port when large data model is used. |
| 222 | + Add the ability to use Cortex-R5 port on the parts without FPU. |
| 223 | + Fix build warning in heap implementations on PIC24/dsPIC. |
| 224 | + Update interrupt priority asserts for Cortex-M ports so that these do not fire |
| 225 | on QEMU which does not implement PRIO bits. |
| 226 | + Update ARMv7-M ports to ensure that kernel interrupts run at the lowest priority. |
| 227 | configKERNEL_INTERRUPT_PRIORITY is now obsolete for ARMv7-M ports and brings |
| 228 | these ports inline with the newer ARMv8-M ports. Contributed by @chrisnc. |
| 229 | + Fix build issue in POSIX GCC port on Windows Subsystem for Linux (WSL). Contributed |
| 230 | by @jacky309. |
| 231 | + Add portMEMORY_BARRIER to Microblaze port. Contributed by @bbain. |
| 232 | + Add portPOINTER_SIZE_TYPE definition for ATmega port. Contributed by @jputcu. |
| 233 | + Multiple improvements in the CMake support. Contributed by @phelte and @cookpate. |
| 234 | |
Paul Bartell | 01820d3 | 2022-11-29 10:36:04 -0800 | [diff] [blame] | 235 | Changes between FreeRTOS V10.5.0 and FreeRTOS V10.5.1 released November 16 2022 |
| 236 | + Updated the kernel version in manifest and SBOM |
| 237 | |
| 238 | Changes between FreeRTOS V10.4.6 and FreeRTOS V10.5.0 released September 16 2022 |
| 239 | |
| 240 | + ARMv7-M and ARMv8-M MPU ports: It was possible for a third party that |
| 241 | already independently gained the ability to execute injected code to |
| 242 | read from or write to arbitrary addresses by passing a negative argument |
| 243 | as the xIndex parameter to pvTaskGetThreadLocalStoragePointer() or |
| 244 | vTaskSetThreadLocalStoragePointer respectively. A check has been added to |
| 245 | ensure that passing a negative argument as the xIndex parameter does not |
| 246 | cause arbitrary read or write. |
| 247 | We thank Certibit Consulting, LLC for reporting this issue. |
| 248 | + ARMv7-M and ARMv8-M MPU ports: It was possible for an unprivileged task |
| 249 | to invoke any function with privilege by passing it as a parameter to |
| 250 | MPU_xTaskCreate, MPU_xTaskCreateStatic, MPU_xTimerCreate, |
| 251 | MPU_xTimerCreateStatic, or MPU_xTimerPendFunctionCall. MPU_xTaskCreate |
| 252 | and MPU_xTaskCreateStatic have been updated to only allow creation of |
| 253 | unprivileged tasks. MPU_xTimerCreate, MPU_xTimerCreateStatic and |
| 254 | MPU_xTimerPendFunctionCall APIs have been removed. |
| 255 | We thank Huazhong University of Science and Technology for reporting |
| 256 | this issue. |
| 257 | + ARMv7-M and ARMv8-M MPU ports: It was possible for a third party that |
| 258 | already independently gained the ability to execute injected code to |
| 259 | achieve further privilege escalation by branching directly inside a |
| 260 | FreeRTOS MPU API wrapper function with a manually crafted stack frame. |
| 261 | The local stack variable `xRunningPrivileged` has been removed so that |
| 262 | a manually crafted stack frame cannot be used for privilege escalation |
| 263 | by branching directly inside a FreeRTOS MPU API wrapper. |
| 264 | We thank Certibit Consulting, LLC, Huazhong University of Science and |
| 265 | Technology and the SecLab team at Northeastern University for reporting |
| 266 | this issue. |
| 267 | + ARMv7-M MPU ports: It was possible to configure overlapping memory |
| 268 | protection unit (MPU) regions such that an unprivileged task could access |
| 269 | privileged data. The kernel now uses highest numbered MPU regions for |
| 270 | kernel protections to prevent such MPU configurations. |
| 271 | We thank the SecLab team at Northeastern University for reporting this |
| 272 | issue. |
| 273 | + Add support for ARM Cortex-M55. |
| 274 | + Add support for ARM Cortex-M85. Contributed by @gbrtth. |
| 275 | + Add vectored mode interrupt support to the RISC-V port. |
| 276 | + Add support for RV32E extension (Embedded Profile) in RISC-V GCC port. |
| 277 | Contributed by @Limoto. |
| 278 | + Heap improvements: |
| 279 | - Add a check to heap_2 to track if a memory block is allocated to |
| 280 | the application or not. The MSB of the size field is used for this |
| 281 | purpose. The same check already exists in heap_4 and heap_5. This |
| 282 | check prevents double free errors. |
| 283 | - Add a new flag configHEAP_CLEAR_MEMORY_ON_FREE to heap_2, heap_4 |
| 284 | and heap_5. If the flag is set in FreeRTOSConfig.h then memory freed using |
| 285 | vPortFree() is automatically cleared to zero. |
| 286 | - Add a new API pvPortCalloc to heap_2, heap_4 and heap_5 which has the same |
| 287 | signature as the standard library calloc function. |
| 288 | - Update the pointer types to portPOINTER_SIZE_TYPE. Contributed by |
| 289 | @Octaviarius. |
| 290 | + Add the ability to override send and receive completed callbacks for each |
| 291 | instance of a stream buffer or message buffer. Earlier there could be |
| 292 | one send and one receive callback for all instances of stream and message |
| 293 | buffers. Having separate callbacks per instance allows different message |
| 294 | and stream buffers to be used differently - for example, some for inter core |
| 295 | communication and others for same core communication. |
| 296 | The feature can be controlled by setting the configuration option |
| 297 | configUSE_SB_COMPLETED_CALLBACK in FreeRTOSConfig.h. When the option is set to 1, |
| 298 | APIs xStreamBufferCreateWithCallback() or xStreamBufferCreateStaticWithCallback() |
| 299 | (and likewise APIs for message buffer) can be used to create a stream buffer |
| 300 | or message buffer instance with application provided callback overrides. When |
| 301 | the option is set to 0, then the default callbacks as defined by |
| 302 | sbSEND_COMPLETED() and sbRECEIVE_COMPLETED() macros are invoked. To maintain |
| 303 | backwards compatibility, configUSE_SB_COMPLETED_CALLBACK defaults to 0. The |
| 304 | functionality is currently not supported for MPU enabled ports. |
| 305 | + Generalize the FreeRTOS's Thread Local Storage (TLS) support so that it |
| 306 | is not tied to newlib and can be used with other c-runtime libraries also. |
| 307 | The default behavior for newlib support is kept same for backward |
| 308 | compatibility. |
| 309 | + Add support to build and link FreeRTOS using CMake build system. Contributed |
| 310 | by @yhsb2k. |
| 311 | + Add support to generate Software Bill of Materials (SBOM) for every release. |
| 312 | + Add support for 16 MPU regions to the GCC Cortex-M33 ports. |
| 313 | + Add ARM Cortex-M7 r0p0/r0p1 Errata 837070 workaround to ARM CM4 MPU ports. |
| 314 | The application writer needs to define configENABLE_ERRATA_837070_WORKAROUND |
| 315 | when using CM4 MPU ports on a Cortex-M7 r0p0/r0p1 core. |
| 316 | + Add configSYSTICK_CLOCK_HZ to Cortex-M0 ports. This is needed to support |
| 317 | the case when the SysTick timer is not clocked from the same source as the CPU. |
| 318 | + Add hardware stack protection support to MicroBlazeV9 port. This ensures that |
| 319 | the CPU immediately raises Stack Protection Violation exception as soon as any |
| 320 | task violates its stack limits. Contributed by @uecasm. |
| 321 | + Introduce the configUSE_MINI_LIST_ITEM configuration option. When this |
| 322 | option is set to 1, ListItem_t and MiniLitItem_t remain separate types. |
| 323 | However, when configUSE_MINI_LIST_ITEM == 0, MiniLitItem_t and ListItem_t |
| 324 | are both typedefs of the same struct xLIST_ITEM. This addresses some issues |
| 325 | observed when strict-aliasing and link time optimization are enabled. |
| 326 | To maintain backwards compatibility, configUSE_MINI_LIST_ITEM defaults to 1. |
| 327 | + Simplify prvInitialiseNewTask to memset newly allocated TCB structures |
| 328 | to zero, and remove code that set individual structure members to zero. |
| 329 | + Add prototype for prvPortYieldFromISR to the POSIX port so that it builds |
| 330 | without any warning with -Wmissing-prototypes compiler option. |
| 331 | + Add top of stack and end of stack to the task info report obtained using |
| 332 | vTaskGetInfo(). Contributed by @shreyasbharath. |
| 333 | + Add a cap to the cRxLock and cTxLock members of the queue data structure. |
| 334 | These locks count the number items received and sent to the queue while |
| 335 | the queue was locked. These are later used to unblock tasks waiting on |
| 336 | the queue when the queue is unlocked. This PR caps the values of the |
| 337 | cRxLock and cTxLock to the number of tasks in the system because we cannot |
| 338 | unblock more tasks than there are in the system. Note that the same assert |
| 339 | could still be triggered is the application creates more than 127 tasks. |
| 340 | + Changed uxAutoReload parameter in timer functions to xAutoReload. The |
| 341 | type is now BaseType_t. This matches the type of pdTRUE and pdFALSE. |
| 342 | The new function xTimerGetAutoReload() provides the auto-reload state as |
| 343 | a BaseType_t. The legacy function uxTimerGetAutoReload is retained with the |
| 344 | original UBaseType_t return value. |
| 345 | + Fix support for user implementations of tickless idle that call |
| 346 | vTaskStepTick() with xExpectedIdleTime ticks to step. The new code |
| 347 | ensures xTickCount reaches xNextTaskUnblockTime inside xTaskIncrementTick() |
| 348 | instead of inside vTaskStepTick(). This fixes the typical case where a task |
| 349 | wakes up one tick late and a rare case assertion failure when xTickCount\ |
| 350 | rolls over. Contributed by @jefftenney. |
| 351 | + Fix deadlock in event groups when pvPortMalloc and vPortFree functions |
| 352 | are protected with a mutex. Contributed by @clemenskresser. |
| 353 | + Fix a warning in tasks.c when compiled with -Wduplicated-branches |
| 354 | GCC option. Contributed by @pierrenoel-bouteville-act. |
| 355 | + Fix compilation error in tasks.c when configSUPPORT_DYNAMIC_ALLOCATION |
| 356 | is set to zero. Contributed by @rdpoor. |
| 357 | + Fix prvWriteMessageToBuffer() function in stream_buffer.c so that it correctly |
| 358 | copies length on big endian platforms too. |
| 359 | + Remove the need for INCLUDE_vTaskSuspend to be set to 1 |
| 360 | when configUSE_TICKLESS_IDLE is enabled. Contributed by @pramithkv. |
| 361 | + Update the RL78 IAR port to the latest version of IAR which uses the |
| 362 | industry standard ELF format as opposed to earlier UBROF object format. |
| 363 | Contributed by @felipe-iar. |
| 364 | + Add tick type is atomic flag when tick count is 16-bit to PIC24 port. This |
| 365 | allows the PIC24 family of 16 bit processors to read the tick count without |
| 366 | a critical section when the tick count is also 16 bits. |
| 367 | + Fix offset-out-of-range errors for GCC CM3/CM4 mpu ports when |
| 368 | Link Time Optimization is enabled. Contributed by @niniemann. |
| 369 | + Remove #error when RISC-V port is compiled on a 64-bit RISC-V platform. |
| 370 | Contributed by @cmdrf. |
| 371 | + Fix ullPortInterruptNesting alignment in Cortex-A53 port so that it is |
| 372 | 8-byte aligned. This fixes the unaligned access exception. Contributed |
| 373 | by @Atomar25. |
| 374 | + Fix Interrupt Handler Register Function and Exception Process in NiosII |
| 375 | Port. Contributed by @ghost. |
| 376 | + Change FreeRTOS IRQ Handler for Cortex-A53 SRE port to store and restore |
| 377 | interrupt acknowledge register. This ensures that the SRE port behavior |
| 378 | matches the Memory Mapped IO port. Contributed by @sviaunxp. |
| 379 | + Update the uncrustify config file to match the version of the uncrustify |
| 380 | used in the CI Action. Also, pin the version of uncrustify in CI. Contributed |
| 381 | by @swaldhoer. |
| 382 | |
| 383 | Changes between FreeRTOS V10.4.5 and FreeRTOS V10.4.6 released November 12 2021 |
| 384 | |
| 385 | + ARMv7-M and ARMv8-M MPU ports – prevent non-kernel code from calling the |
| 386 | internal functions xPortRaisePrivilege and vPortResetPrivilege by changing |
| 387 | them to macros. |
| 388 | + Introduce a new config configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS which |
| 389 | enables developers to prevent critical sections from unprivileged tasks. |
| 390 | It defaults to 1 for backward compatibility. Application should set it to |
| 391 | 0 to disable critical sections from unprivileged tasks. |
| 392 | |
| 393 | Changes between FreeRTOS V10.4.4 and FreeRTOS V10.4.5 released September 10 2021 |
| 394 | |
| 395 | See https://www.FreeRTOS.org/FreeRTOS-V10.4.5.html |
| 396 | |
| 397 | + Introduce configRUN_TIME_COUNTER_TYPE which enables developers to define |
| 398 | the type used to hold run time statistic counters. Defaults to uint32_t |
| 399 | for backward compatibility. #define configRUN_TIME_COUNTER_TYPE to a type |
| 400 | (for example, uint64_t) in FreeRTOSConfig.h to override the default. |
| 401 | + Introduce ulTaskGetIdleRunTimePercent() to complement the pre-existing |
| 402 | ulTaskGetIdleRunTimeCounter(). Whereas the pre-existing function returns |
| 403 | the raw run time counter value, the new function returns the percentage of |
| 404 | the entire run time consumed by the idle task. Note the amount of idle |
| 405 | time is only a good measure of the slack time in a system if there are no |
| 406 | other tasks executing at the idle priority, tickless idle is not used, and |
| 407 | configIDLE_SHOULD_YIELD is set to 0. |
| 408 | + ARMv8-M secure-side port: Tasks that call secure functions from the |
| 409 | non-secure side of an ARMv8-M MCU (ARM Cortex-M23 and Cortex-M33) have two |
| 410 | contexts - one on the non-secure side and one on the secure-side. Previous |
| 411 | versions of the FreeRTOS ARMv8-M secure-side ports allocated the structures |
| 412 | that reference secure-side contexts at run time. Now the structures are |
| 413 | allocated statically at compile time. The change necessitates the |
| 414 | introduction of the secureconfigMAX_SECURE_CONTEXTS configuration constant, |
| 415 | which sets the number of statically allocated secure contexts. |
| 416 | secureconfigMAX_SECURE_CONTEXTS defaults to 8 if left undefined. |
| 417 | Applications that only use FreeRTOS code on the non-secure side, such as |
| 418 | those running third-party code on the secure side, are not affected by |
| 419 | this change. |
| 420 | |
| 421 | Changes between FreeRTOS V10.4.3 and FreeRTOS V10.4.4 released May 28 2021 |
| 422 | + Minor performance improvements to xTaskIncrementTick() achieved by providing |
| 423 | macro versions of uxListRemove() and vListInsertEnd(). |
| 424 | + Minor refactor of timers.c that obsoletes the need for the |
| 425 | tmrCOMMAND_START_DONT_TRACE macro and removes the need for timers.c to |
| 426 | post to its own event queue. A consequence of this change is that auto- |
| 427 | reload timers that miss their intended next execution time will execute |
| 428 | again immediately rather than executing again the next time the command |
| 429 | queue is processed. (thanks Jeff Tenney). |
| 430 | + Fix a race condition in the message buffer implementation. The |
| 431 | underlying cause was that length and data bytes are written and read as |
| 432 | two distinct operations, which both modify the size of the buffer. If a |
| 433 | context switch occurs after adding or removing the length bytes, but |
| 434 | before adding or removing the data bytes, then another task may observe |
| 435 | the message buffer in an invalid state. |
| 436 | + The xTaskCreate() and xTaskCreateStatic() functions accept a task priority |
| 437 | as an input parameter. The priority has always been silently capped to |
| 438 | (configMAX_PRIORITIES - 1) should it be set to a value above that priority. |
| 439 | Now values above that priority will also trigger a configASSERT() failure. |
| 440 | + Replace configASSERT( pcQueueName ) in vQueueAddToRegistry with a NULL |
| 441 | pointer check. |
| 442 | + Introduce the configSTACK_ALLOCATION_FROM_SEPARATE_HEAP configuration |
| 443 | constant that enables the stack allocated to tasks to come from a heap other |
| 444 | than the heap used by other memory allocations. This enables stacks to be |
| 445 | placed within special regions, such as fast tightly coupled memory. |
| 446 | + If there is an attempt to add the same queue or semaphore handle to the |
| 447 | queue registry more than once then prior versions would create two separate |
| 448 | entries. Now if this is done the first entry is overwritten rather than |
| 449 | duplicated. |
| 450 | + Update the ESP32 port and TF-M (Trusted Firmware M)code to the latest from |
| 451 | their respective repositories. |
| 452 | + Correct a build error in the POSIX port. |
| 453 | + Additional minor formatting updates, including replacing tabs with spaces |
| 454 | in more files. |
| 455 | + Other minor updates include adding additional configASSERT() checks and |
| 456 | correcting and improving code comments. |
| 457 | + Go look at the smp branch to see the progress towards the Symetric |
| 458 | Multiprocessing Kernel. https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp |
| 459 | |
| 460 | Changes between FreeRTOS V10.4.2 and FreeRTOS V10.4.3 released December 14 2020 |
| 461 | |
| 462 | V10.4.3 is included in the 202012.00 LTS release. Learn more at https:/freertos.org/lts-libraries.html |
| 463 | |
| 464 | See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html |
| 465 | |
| 466 | + Changes to improve robustness and consistency for buffer allocation in |
| 467 | the heap, queue and stream buffer. |
| 468 | + The following functions can no longer be called from unprivileged code. |
| 469 | - xTaskCreateRestricted |
| 470 | - xTaskCreateRestrictedStatic |
| 471 | - vTaskAllocateMPURegions |
| 472 | |
| 473 | |
| 474 | Changes between FreeRTOS V10.4.1 and FreeRTOS V10.4.2 released November 10 2020 |
| 475 | |
| 476 | See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html |
| 477 | |
| 478 | + Fix an issue in the ARMv8-M ports that caused BASEPRI to be masked |
| 479 | between the first task starting to execute and that task making |
| 480 | a FreeRTOS API call. |
| 481 | + Introduced xTaskDelayUntil(), which is functionally equivalent to |
| 482 | vTaskDelayUntil(), with the addition of returning a value to |
| 483 | indicating whether or not the function placed the calling task into |
| 484 | the Blocked state or not. |
| 485 | + Update WolfSSL to 4.5.0 and add the FIPS ready demo. |
| 486 | + Add support for ESP IDF 4.2 to ThirdParty Xtensa port. |
| 487 | + Re-introduce uxTopUsedPriority to support OpenOCD debugging. |
| 488 | + Convert most dependent libraries in FreeRTOS/FreeRTOS to submodules. |
| 489 | + Various general maintenance and improvements to MISRA compliance. |
| 490 | |
| 491 | |
| 492 | Changes between FreeRTOS V10.4.0 and FreeRTOS V10.4.1 released September 17 2020 |
| 493 | |
| 494 | See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html |
| 495 | |
| 496 | + Fixed an incorrectly named parameter that prevented the |
| 497 | ulTaskNotifyTakeIndexed macro compiling, and the name space clash in the |
| 498 | test code that prevented this error causing test failures. |
| 499 | |
| 500 | |
| 501 | Changes between FreeRTOS V10.3.1 and FreeRTOS V10.4.0 released September 10 2020 |
| 502 | |
| 503 | See https://www.FreeRTOS.org/FreeRTOS-V10.4.x.html |
| 504 | |
| 505 | Major enhancements: |
| 506 | |
| 507 | + Task notifications: Prior to FreeRTOS V10.4.0 each created task had a |
| 508 | single direct to task notification. From FreeRTOS V10.4.0 each task has |
| 509 | an array of notifications. The direct to task notification API has been |
| 510 | extended with API functions postfixed with "Indexed" to enable the API to |
| 511 | operate on a task notification at any array index. See |
| 512 | https://www.freertos.org/RTOS-task-notifications.html for more information. |
| 513 | + Kernel ports that support memory protection units (MPUs): The ARMv7-M and |
| 514 | ARMv8-M MPU ports now support a privilege access only heap. The ARMv7-M |
| 515 | MPU ports now support devices that have 16 MPU regions, have the ability |
| 516 | to override default memory attributes for privileged code and data |
| 517 | regions, and have the ability to place the FreeRTOS kernel code outside of |
| 518 | the Flash memory. The ARMv8-M MPU ports now support tickless idle mode. |
| 519 | See https://www.freertos.org/FreeRTOS-MPU-memory-protection-unit.html |
| 520 | for more information. |
| 521 | |
| 522 | Additional noteworthy updates: |
| 523 | |
| 524 | + Code formatting is now automated to facilitate the increase in |
| 525 | collaborative development in Git. The auto-formated code is not identical |
| 526 | to the original formatting conventions. Most notably spaces are now used |
| 527 | in place of tabs. |
| 528 | + The prototypes for callback functions (those that start with "Application", |
| 529 | such as vApplicationStackOverflowHook()) are now in the FreeRTOS header |
| 530 | files, removing the need for application writers to add prototypes into |
| 531 | the C files in which they define the functions. |
| 532 | + New Renesas RXv3 port layer. |
| 533 | + Updates to the Synopsys ARC code, including support for EM and HS cores, |
| 534 | and updated BSP. |
| 535 | + Added new POSIX port layer that allows FreeRTOS to run on Linux hosts in |
| 536 | the same way the Windows port layer enables FreeRTOS to run on Windows |
| 537 | hosts. |
| 538 | + Many other minor optimisations and enhancements. For full details |
| 539 | see https://github.com/FreeRTOS/FreeRTOS-Kernel/commits/main |
| 540 | |
| 541 | |
| 542 | Changes between FreeRTOS V10.3.0 and FreeRTOS V10.3.1 released February 18 2020 |
| 543 | |
| 544 | See https://www.FreeRTOS.org/FreeRTOS-V10.3.x.html |
| 545 | |
| 546 | + ./FreeRTOS-Labs directory was removed from this file. The libraries it |
| 547 | contained are now available as a separate download. |
| 548 | |
| 549 | Changes between FreeRTOS V10.2.1 and FreeRTOS V10.3.0 released February 7 2020 |
| 550 | |
| 551 | See https://www.FreeRTOS.org/FreeRTOS-V10.3.x.html |
| 552 | |
| 553 | New and updated kernel ports: |
| 554 | |
| 555 | + Added RISC-V port for the IAR compiler. |
| 556 | + Update the Windows simulator port to use a synchronous object to prevent |
| 557 | a user reported error whereby a task continues to run for a short time |
| 558 | after being moved to the Blocked state. Note we were not able to |
| 559 | replicate the reported issue and it likely depends on your CPU model. |
| 560 | + Correct alignment of stack top in RISC-V port when |
| 561 | configISR_STACK_SIZE_WORDS is defined to a non zero value, which causes |
| 562 | the interrupt stack to be statically allocated. |
| 563 | + The RISC-V machine timer compare register can now be for any HART, whereas |
| 564 | previously it was always assumed FreeRTOS was running on HART 0. |
| 565 | + Update the sequence used to update the 64-bit machine timer |
| 566 | compare register on 32-bit cores to match that suggested in RISC-V |
| 567 | documentation. |
| 568 | + Added tickless low power modes into the ARM, IAR and GCC Cortex-M0 compiler |
| 569 | ports. |
| 570 | + Updated the behaviour of the ARMv7-M MPU (Memory Protection Unit) ports to |
| 571 | match that of the ARMv8-M ports whereby privilege escalations can only |
| 572 | originate from within the kernel's own memory segment. Added |
| 573 | configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY configuration constant. |
| 574 | + Update existing MPU ports to correctly disable the MPU before it is |
| 575 | updated. |
| 576 | + Added contributed port and demo application for a T-Head (formally C-SKY) |
| 577 | microcontroller. |
| 578 | |
| 579 | New API functions: |
| 580 | |
| 581 | + Added the vPortGetHeapStats() API function which returns information on |
| 582 | the heap_4 and heap_5 state. |
| 583 | + Added xTaskCatchUpTicks(), which corrects the tick count value after the |
| 584 | application code has held interrupts disabled for an extended period. |
| 585 | + Added xTaskNotifyValueClear() API function. |
| 586 | + Added uxTimerGetReloadMode() API function. |
| 587 | |
| 588 | Other miscellaneous changes: |
| 589 | + Change type of uxPendedTicks from UBaseType_t to TickType_t to ensure it |
| 590 | has the same type as variables with which it is compared to, and therefore |
| 591 | also renamed the variable xPendingTicks. |
| 592 | + Update Keil projects that use the MPU so memory regions come from linker |
| 593 | script (scatter file) variables instead of being hard coded. |
| 594 | + Added LPC51U68 Cortex-M0+ demos for GCC (MCUXpresso), Keil and IAR |
| 595 | compilers. |
| 596 | + Added CORTEX_MPU_STM32L4_Discovery_Keil_STM32Cube demo. |
| 597 | + Added LPC54018 MPU demo. |
| 598 | + Rename xTaskGetIdleRunTimeCounter() to ulTaskGetIdleRunTimeCounter(). |
| 599 | |
| 600 | |
| 601 | Changes between FreeRTOS V10.2.1 and FreeRTOS V10.2.0 released May 13 2019: |
| 602 | |
| 603 | + Added ARM Cortex-M23 port layer to complement the pre-existing ARM |
| 604 | Cortex-M33 port layer. |
| 605 | + The RISC-V port now automatically switches between 32-bit and 64-bit |
| 606 | cores. |
| 607 | + Introduced the portMEMORY_BARRIER macro to prevent instruction re-ordering |
| 608 | when GCC link time optimisation is used. |
| 609 | + Introduced the portDONT_DISCARD macro to the ARMv8-M ports to try and |
| 610 | prevent the secure side builds from removing symbols required by the |
| 611 | non secure side build. |
| 612 | + Introduced the portARCH_NAME to provide additional data to select semi- |
| 613 | automated build environments. |
| 614 | + Cortex-M33 and Cortex-M23 ports now correctly disable the MPU before |
| 615 | updating the MPU registers. |
| 616 | |
| 617 | + Added Nuvoton NuMaker-PFM-M2351 ARM Cortex-M23 demo. |
| 618 | + Added LPC55S69 ARM Cortex-M33 demo. |
| 619 | + Added an STM32 dual core AMP stress test demo. |
| 620 | |
| 621 | |
| 622 | Changes between FreeRTOS V10.1.1 and FreeRTOS V10.2.0 released February 25 2019: |
| 623 | |
| 624 | + Added GCC RISC-V MCU port with three separate demo applications. |
| 625 | + Included pre-existing ARM Cortex-M33 (ARMv8-M) GCC/ARMclang and IAR ports |
| 626 | with Keil simulator demo. |
| 627 | + Update the method used to detect if a timer is active. Previously the |
| 628 | timer was deemed to be inactive if it was not referenced from a list. |
| 629 | However, when a timer is updated it is temporarily removed from, then |
| 630 | re-added to a list, so now the timer's active status is stored separately. |
| 631 | + Add vTimerSetReloadMode(), xTaskGetIdleRunTimeCounter(), and |
| 632 | xTaskGetApplicationTaskTagFromISR() API functions. |
| 633 | + Updated third party Xtensa port so it is MIT licensed. |
| 634 | + Added configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H to the Renesas |
| 635 | compiler RX600v2 port to enable switching between platform.h and |
| 636 | iodefine.h includes within that port's port.c file. |
| 637 | + Removed the 'FromISR' functions from the MPU ports as ISRs run privileged |
| 638 | anyway. |
| 639 | + Added uxTaskGetStackHighWaterMark2() function to enable the return type to |
| 640 | be changed without breaking backward compatibility. |
| 641 | uxTaskGetStackHighWaterMark() returns a UBaseType_t as always, |
| 642 | uxTaskGetStackHighWaterMark2() returns configSTACK_DEPTH_TYPE to allow the |
| 643 | user to determine the return type. |
| 644 | + Fixed issues in memory protected ports related to different combinations |
| 645 | of static memory only and dynamic memory only builds. As a result the |
| 646 | definition of tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE became more |
| 647 | complex and was moved to FreeRTOS.h with a table explaining its definition. |
| 648 | + Added a 'get task tag from ISR' function. |
| 649 | + Change the method used to determine if a timer is active or not from just |
| 650 | seeing if it is referenced from the active timer list to storing its |
| 651 | active state explicitly. The change prevents the timer reporting that it |
| 652 | is inactive while it is being moved from one list to another. |
| 653 | + The pcName parameter passed into the task create functions can be NULL, |
| 654 | previously a name had to be provided. |
| 655 | + When using tickless idle, prvResetNextTaskUnblockTime() is now only called |
| 656 | in xTaskRemoveFromEventList() if the scheduler is not suspended. |
| 657 | + Introduced portHAS_STACK_OVERFLOW_CHECKING, which should be set to 1 for |
| 658 | FreeRTOS ports that run on architectures that have stack limit registers. |
| 659 | |
| 660 | |
| 661 | Changes between FreeRTOS V10.1.0 and FreeRTOS V10.1.1 released 7 September 2018 |
| 662 | |
| 663 | + Reverted a few structure name changes that broke several kernel aware |
| 664 | debugger plug-ins. |
| 665 | + Updated to the latest trace recorder code. |
| 666 | + Fixed some formatting in the FreeRTOS+TCP TCP/IP stack code. |
| 667 | + Reverted moving some variables from file to function scope as doing so |
| 668 | broke debug scenarios that require the static qualifier to be removed. |
| 669 | |
| 670 | Changes between FreeRTOS V10.0.1 and FreeRTOS V10.1.0 released 22 August 2018 |
| 671 | |
| 672 | FreeRTOS Kernel Changes: |
| 673 | |
| 674 | + Update lint checked MISRA compliance to use the latest MISRA standard, was |
| 675 | previously using the original MISRA standard. |
| 676 | + Updated all object handles (TaskHandle_t, QueueHandle_t, etc.) to be |
| 677 | unique types instead of void pointers, improving type safety. (this was |
| 678 | attempted some years back but had to be backed out due to bugs in some |
| 679 | debuggers). Note this required the pvContainer member of a ListItem_t |
| 680 | struct to be renamed - set configENABLE_BACKWARD_COMPATIBILITY to 1 if |
| 681 | this causes an issue. |
| 682 | + Added configUSE_POSIX_ERRNO to enable per task POSIX style errno |
| 683 | functionality in a more user friendly way - previously the generic thread |
| 684 | local storage feature was used for this purpose. |
| 685 | + Added Xtensa port and demo application for the XCC compiler. |
| 686 | + Changed the implementation of vPortEndScheduler() for the Win32 port to |
| 687 | simply call exit( 0 ). |
| 688 | + Bug fix in vPortEnableInterrupt() for the GCC Microblaze port to protect |
| 689 | the read modify write access to an internal Microblaze register. |
| 690 | + Fix minor niggles when the MPU is used with regards to prototype |
| 691 | differences, static struct size differences, etc. |
| 692 | + The usStackHighWaterMark member of the TaskStatus_t structure now has type |
| 693 | configSTACK_DEPTH_TYPE in place of uint16_t - that change should have been |
| 694 | made when the configSTACK_DEPTH_TYPE type (which gets around the previous |
| 695 | 16-bit limit on stack size specifications) was introduced. |
| 696 | + Added the xMessageBufferNextLengthBytes() API function and likewise stream |
| 697 | buffer equivalent. |
| 698 | + Introduce configMESSAGE_BUFFER_LENGTH_TYPE to allow the number of bytes |
| 699 | used to hold the length of a message in the message buffer to be reduced. |
| 700 | configMESSAGE_BUFFER_LENGTH_TYPE default to size_t, but if, for example, |
| 701 | messages can never be more than 255 bytes it could be set to uint8_t, |
| 702 | saving 3 bytes each time a message is written into the message buffer |
| 703 | (assuming sizeof( size_t ) is 4). |
| 704 | + Updated the StaticTimer_t structure to ensure it matches the size of the |
| 705 | Timer_t structure when the size of TaskFunction_t does not equal the size |
| 706 | of void *. |
| 707 | + Update various Xilinx demos to use 2018.1 version of the SDK tools. |
| 708 | + Various updates to demo tasks to maintain test coverage. |
| 709 | + FreeRTOS+UDP was removed in FreeRTOS V10.1.0 as it was replaced by |
| 710 | FreeRTOS+TCP, which was brought into the main download in FreeRTOS |
| 711 | V10.0.0. FreeRTOS+TCP can be configured as a UDP only stack, and |
| 712 | FreeRTOS+UDP does not contain the patches applied to FreeRTOS+TCP. |
| 713 | |
| 714 | FreeRTOS+TCP Changes: |
| 715 | |
| 716 | + Multiple security improvements and fixes in packet parsing routines, DNS |
| 717 | caching, and TCP sequence number and ID generation. |
| 718 | + Disable NBNS and LLMNR by default. |
| 719 | + Add TCP hang protection by default. |
| 720 | |
| 721 | We thank Ori Karliner of Zimperium zLabs Team for reporting these issues. |
| 722 | |
| 723 | |
| 724 | Changes between FreeRTOS V10.0.0 and FreeRTOS V10.0.1, released December 20 2017 |
| 725 | |
| 726 | + Fix position of "#if defined( __cplusplus )" in stream_buffer.h. |
| 727 | + Correct declarations of MPU_xQueuePeek() and MPU_xQueueSemaphoreTake() in |
| 728 | mpu_prototypes.h. |
| 729 | + Correct formatting in vTaskList() helper function when it prints the state |
| 730 | of the currently executing task. |
| 731 | + Introduce #error if stream_buffer.c is built without |
| 732 | configUSE_TASK_NOTIFICATIONS set to 1. |
| 733 | + Update FreeRTOS+TCP to V2.0.0 |
| 734 | - Improve the formatting of text that displays the available netword |
| 735 | interfaces when FreeRTOS+TCP is used on Windows with WinPCap. |
| 736 | - Introduce ipconfigSOCKET_HAS_USER_WAKE_CALLBACK option to enable a user |
| 737 | definable callback to execute when data arrives on a socket. |
| 738 | |
| 739 | Changes between FreeRTOS V9.0.1 and FreeRTOS V10.0.0: |
| 740 | |
| 741 | The FreeRTOS kernel is now MIT licensed: https://www.FreeRTOS.org/license |
| 742 | |
| 743 | New Features and components: |
| 744 | |
| 745 | + Stream Buffers - see https://www.FreeRTOS.org/RTOS-stream-buffer-example.html |
| 746 | + Message Buffers - see https://www.FreeRTOS.org//RTOS-message-buffer-example.html |
| 747 | + Move FreeRTOS+TCP into the main repository, along with the basic Win32 |
| 748 | TCP demo FreeRTOS_Plus_TCP_Minimal_Windows_Simulator. |
| 749 | |
| 750 | New ports or demos: |
| 751 | |
| 752 | + Added demo for TI SimpleLink CC3220 MCU. |
| 753 | + Added MPU and non MPU projects for Microchip CEC and MEC 17xx and 51xx |
| 754 | MCUs. |
| 755 | + Added CORTEX_MPU_Static_Simulator_Keil_GCC demo to test static allocation |
| 756 | in the MPU port. |
| 757 | |
| 758 | Fixes or enhancements: |
| 759 | |
| 760 | + Cortex-M ports push additional register prior to calling |
| 761 | vTaskSwitchContext to ensure 8-byte alignment is maintained. Only |
| 762 | important if a user defined tick hook function performs an operation that |
| 763 | requires 8-byte alignment. |
| 764 | + Optimisations to the implementation of the standard tickless idle mode on |
| 765 | Cortex-M devices. |
| 766 | + Improvements to the Win32 port including using higher priority threads. |
| 767 | + Ensure interrupt stack alignment on PIC32 ports. |
| 768 | + Updated GCC TriCore port to build with later compiler versions. |
| 769 | + Update mpu_wrappers.c to support static allocation. |
| 770 | + The uxNumberOfItems member of List_t is now volatile - solving an issue |
| 771 | when the IAR compiler was used with maximum optimization. |
| 772 | + Introduced configRECORD_STACK_HIGH_ADDRESS. When set to 1 the stack start |
| 773 | address is saved into each task's TCB (assuming stack grows down). |
| 774 | + Introduced configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H to allow user defined |
| 775 | functionality, and user defined initialisation, to be added to FreeRTOS's |
| 776 | tasks.c source file. When configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H is |
| 777 | set to 1 a user provided header file called freertos_task_c_additions.h |
| 778 | will be included at the bottom of tasks.c. Functions defined in that |
| 779 | header file can call freertos_tasks_c_additions_init(), which in turn |
| 780 | calls a macro called FREERTOS_TASKS_C_ADDITIONS_INIT(), if it is defined. |
| 781 | FREERTOS_TASKS_C_ADDITIONS_INIT() can be defined in FreeRTOSConfig.h. |
| 782 | + Introduced configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( x ) which can be |
| 783 | defined by a user in FreeRTOSConfig.h. The macro is called before |
| 784 | assessing whether to enter tickless idle mode or not. If the macro sets |
| 785 | x to zero then tickless idle mode will not be entered. This allows users |
| 786 | to abort tickless idle mode entry before the tickless idle function is |
| 787 | even called - previously it was only possible to abort from within the |
| 788 | tickless idle function itself. |
| 789 | + Added configPRINTF(), which can be defined by users to allow all libraries |
| 790 | to use the same print formatter. |
| 791 | + Introduced configMAX() and configMIN() macros which default to standard |
| 792 | max( x, y ) and min( x, y ) macro behaviour, but can be overridden if the |
| 793 | application writer defines the same macros in FreeRTOSConfig.h. |
| 794 | + Corrected the definition of StaticTask_t in the case where |
| 795 | INCLUDE_xTaskAbortDelay is set to 1. |
| 796 | + Introduced configTIMER_SERVICE_TASK_NAME and configIDLE_TASK_NAME, both of |
| 797 | which can be defined to strings in FreeRTOSConfig.h to change the default |
| 798 | names of the timer service and idle tasks respectively. |
| 799 | + Only fill the stack of a newly created task with a known value if stack |
| 800 | checking, or high water mark checking/viewing, is in use - removing the |
| 801 | dependency on memset() in other cases. |
| 802 | + Introduced xTaskCreateRestrictedStatic() so static allocation can be used |
| 803 | with the MPU. |
| 804 | + Ensure suspended tasks cannot be unsuspended by a received task |
| 805 | notification. |
| 806 | + Fix race condition in vTaskSetTimeOutState(). |
| 807 | + Updated trace recorder files to the latest version. |
| 808 | |
| 809 | Changes since FreeRTOS V9.0.0: |
| 810 | |
| 811 | + Priority dis-inheritance behaviour has been enhanced in the case where a |
| 812 | task that attempted to take a mutex that was held by a lower priority task |
| 813 | timed out before it was able to obtain the mutex (causing the task that |
| 814 | holds the mutex to have its priority raised, then lowered again, in |
| 815 | accordance with the priority inheritance protocol). |
| 816 | + Split the overloaded xQueueGenericReceive() function into three separate |
| 817 | dedicated functions. |
| 818 | + Allow the default human readable text names given to the Idle and Timer |
| 819 | tasks to be overridden by defining the configIDLE_TASK_NAME and |
| 820 | configTIMER_SERVICE_TASK_NAME definitions respectively in FreeRTOSConfig.h. |
| 821 | + Introduced configINITIAL_TICK_COUNT to allow the tick count to take a |
| 822 | value of than than 0 when the system boots. This can be useful for |
| 823 | testing purposes - although setting configUSE_16_BIT_TICKS to 1 can also |
| 824 | be used to test frequent tick overflows. |
| 825 | + Ensure the Cortex-M SysTick count is cleared to zero before starting the |
| 826 | first task. |
| 827 | + Add configASSERT() into ARM Cortex-M ports to check the number of priority |
| 828 | bit settings. |
| 829 | + Clear the 'control' register before starting ARM Cortex-M4F ports in case |
| 830 | the FPU is used before the scheduler is started. This just saves a few |
| 831 | bytes on the main stack as it prevents space being left for a later save |
| 832 | of FPU registers. |
| 833 | + Added xSemaphoreGetMutexHolderFromISR(). |
| 834 | + Corrected use of portNVIC_PENDSVSET to portNVIC_PENDSVSET_BIT in MPU ports. |
| 835 | + Introduced configSTACK_DEPTH_TYPE to allow users to change the type used |
| 836 | to specify the stack size when using xTaskCreate(). For historic reasons, |
| 837 | when FreeRTOS was only used on small MCUs, the type was set to uint16_t, |
| 838 | but that can be too restrictive when FreeRTOS is used on larger |
| 839 | processors. configSTACK_DEPTH_TYPE defaults to uint16_t. |
| 840 | xTaskCreateStatic(), being a newer function, used a uint32_t. |
| 841 | + Increase the priority of the Windows threads used by the Win32 port. As |
| 842 | all the threads run on the same core, and the threads run with very high |
| 843 | priority, there is a risk that the host will become unresponsive, so also |
| 844 | prevent the Windows port executing on single core hosts. |
| 845 | |
| 846 | Changes between FreeRTOS V9.0.0 and FreeRTOS V9.0.0rc2 released May 25 2016: |
| 847 | |
| 848 | See https://www.FreeRTOS.org/FreeRTOS-V9.html |
| 849 | |
| 850 | RTOS kernel updates: |
| 851 | |
| 852 | + The prototype of the new xTaskCreateStatic() API function was modified to |
| 853 | remove a parameter and improve compatibility with other new |
| 854 | "CreateStatic()" API functions. The stack size parameter in |
| 855 | xTaskCreateStatic() is now uint32_t, which changes the prototype of the |
| 856 | callback functions. See the following URL: |
| 857 | https://www.FreeRTOS.org/xTaskCreateStatic.html |
| 858 | + GCC ARM Cortex-A port: Introduced the configUSE_TASK_FPU_SUPPORT |
| 859 | constant. When configUSE_TASK_FPU_SUPPORT is set to 2 every task is |
| 860 | automatically given a floating point (FPU) context. |
| 861 | + GCC ARM Cortex-A port: It is now possible to automatically save and |
| 862 | restore all floating point (FPU) registers on entry to each potentially |
| 863 | nested interrupt by defining vApplicationFPUSafeIRQHandler() instead of |
| 864 | vApplicationIRQHandler(). |
| 865 | + All ARM Cortex-M3/4F/7 ports: Clear the least significant bit of the task |
| 866 | entry address placed onto the stack of a task when the task is created for |
| 867 | strict compliance with the ARM Cortex-M3/4/7 architecture documentation |
| 868 | (no noticeable effect unless using the QMEU emulator). |
| 869 | + Added GCC and Keil ARM Cortex-M4F MPU ports - previously the MPU was only |
| 870 | supported on ARM Cortex-M3. |
| 871 | + ARM Cortex-M3/4F MPU ports: Update to fully support the FreeRTOS V9.0.0 |
| 872 | API (other than static object creation) and added the |
| 873 | FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC demo application to |
| 874 | demonstrate how to use the updated MPU port. |
| 875 | + All ARM Cortex-M3/4F/7 ports: Add additional barrier instructions to the |
| 876 | default low power tickless implementation. |
| 877 | + All ARM Cortex-M0 ports: Prevent an item being left on the stack of the |
| 878 | first task that executes. |
| 879 | + Win32 ports: Reduce the amount of stack used and change the way Windows |
| 880 | threads are deleted to increase the maximum execution time. |
| 881 | + Add an ARM Cortex-M4F port for the MikroC compiler. Ensure to read the |
| 882 | documentation page for this port before use. |
| 883 | + MPS430X IAR port: Update to be compatible with the latest EW430 tools |
| 884 | release. |
| 885 | + IAR32 GCC port: Correct vPortExitCritical() when |
| 886 | configMAX_API_CALL_INTERRUPT_PRIORITY == portMAX_PRIORITY. |
| 887 | + For consistency vTaskGetTaskInfo() now has the alias vTaskGetInfo(), |
| 888 | xTaskGetTaskHandle() now has the alias xTaskGetHandle() and |
| 889 | pcQueueGetQueueName() now has an alias pcQueueGetName(). |
| 890 | + Fix various errors in comments and compiler warnings. |
| 891 | |
| 892 | Demo application updates: |
| 893 | |
| 894 | + Update Atmel Studio projects to use Atmel Studio 7. |
| 895 | + Update Xilinx SDK projects to use the 2016.1 version of the SDK. |
| 896 | + Remove dependency on legacy IO libraries from the PIC32 demos. |
| 897 | + Move the Xilinx UltraScale Cortex-R5 demo into the main distribution. |
| 898 | + Update the MSP432 libraries to the latest version. |
| 899 | + Add Microchip CEC1302 (ARM Cortex-M4F) demos for GCC, Keil and MikroC |
| 900 | compilers. |
| 901 | + Move the Atmel SAMA5D2 demo into the main distribution. |
| 902 | |
| 903 | Changes between FreeRTOS V9.0.0rc1 and FreeRTOS V9.0.0rc2 (release candidate 2) |
| 904 | released March 30 2016: |
| 905 | |
| 906 | NOTE - See https://www.FreeRTOS.org/FreeRTOS-V9.html for details |
| 907 | |
| 908 | + The functions that create RTOS objects using static memory allocation have |
| 909 | been simplified and will not revert to using dynamic allocation if a |
| 910 | buffer is passed into a function as NULL. |
| 911 | + Introduced the configSUPPORT_DYNAMIC_ALLOCATION configuration constant to |
| 912 | allow a FreeRTOS application to be built without a heap even being being |
| 913 | defined. The Win32 example located in the |
| 914 | /FreeRTOS/demo/WIN32-MSVC-Static-Allocation-Only directory is provided as |
| 915 | a reference for projects that do not include a FreeRTOS heap. |
| 916 | + Minor run-time optimisations. |
| 917 | + Two new low power tickless implementations that target Silicon Labs EFM32 |
| 918 | microcontrollers. |
| 919 | + Addition of the xTimerGetPeriod() and xTimerGetExpireTime() API functions. |
| 920 | |
| 921 | Changes between FreeRTOS V8.2.3 and FreeRTOS V9.0.0rc1 (release candidate 1) |
| 922 | released February 19 2016: |
| 923 | |
| 924 | RTOS Kernel Updates: |
| 925 | |
| 926 | + Major new feature - tasks, semaphores, queues, timers and event groups can |
| 927 | now be created using statically allocated memory, so without any calls to |
| 928 | pvPortMalloc(). |
| 929 | + Major new features - Added the xTaskAbortDelay() API function which allows |
| 930 | one task to force another task to immediately leave the Blocked state, |
| 931 | even if the event the blocked task is waiting for has not occurred, or the |
| 932 | blocked task's timeout has not expired. |
| 933 | + Updates necessary to allow FreeRTOS to run on 64-bit architectures. |
| 934 | + Added vApplicationDaemonTaskStartupHook() which executes when the RTOS |
| 935 | daemon task (which used to be called the timer service task) starts |
| 936 | running. This is useful if the application includes initialisation code |
| 937 | that would benefit from executing after the scheduler has been started. |
| 938 | + Added the xTaskGetTaskHandle() API function, which obtains a task handle |
| 939 | from the task's name. xTaskGetTaskHandle() uses multiple string compare |
| 940 | operations, so it is recommended that it is called only once per task. |
| 941 | The handle returned by xTaskGetTaskHandle() can then be stored locally for |
| 942 | later re-use. |
| 943 | + Added the pcQueueGetQueueName() API function, which obtains the name of |
| 944 | a queue from the queue's handle. |
| 945 | + Tickless idling (for low power applications) can now also be used when |
| 946 | configUSE_PREEMPTION is 0. |
| 947 | + If one task deletes another task, then the stack and TCB of the deleted |
| 948 | task is now freed immediately. If a task deletes itself, then the stack |
| 949 | and TCB of the deleted task are freed by the Idle task as before. |
| 950 | + If a task notification is used to unblock a task from an ISR, but the |
| 951 | xHigherPriorityTaskWoken parameter is not used, then pend a context switch |
| 952 | that will then occur during the next tick interrupt. |
| 953 | + Heap_1.c and Heap_2.c now use the configAPPLICATION_ALLOCATED_HEAP |
| 954 | settings, which previously was only used by heap_4.c. |
| 955 | configAPPLICATION_ALLOCATED_HEAP allows the application writer to declare |
| 956 | the array that will be used as the FreeRTOS heap, and in-so-doing, place |
| 957 | the heap at a specific memory location. |
| 958 | + TaskStatus_t structures are used to obtain details of a task. |
| 959 | TaskStatus_t now includes the bae address of the task's stack. |
| 960 | + Added the vTaskGetTaskInfo() API function, which returns a TaskStatus_t |
| 961 | structure that contains information about a single task. Previously this |
| 962 | information could only be obtained for all the tasks at once, as an array |
| 963 | of TaskStatus_t structures. |
| 964 | + Added the uxSemaphoreGetCount() API function. |
| 965 | + Replicate previous Cortex-M4F and Cortex-M7 optimisations in some |
| 966 | Cortex-M3 port layers. |
| 967 | |
| 968 | Demo Application Updates: |
| 969 | |
| 970 | Further demo applications will be added prior to the final FreeRTOS V9 |
| 971 | release. |
| 972 | |
| 973 | + Updated SAM4L Atmel Studio project to use Atmel Studio 7. |
| 974 | + Added ARM Cortex-A53 64-bit port. |
| 975 | + Added a port and demo for the ARM Cortex-A53 64-bit cores on the Xilinx |
| 976 | Ultrascale MPSoC. |
| 977 | + Added Cortex-M7 SAME70 GCC demo. |
| 978 | + Added EFM32 Giant and Wonder Gecko demos. |
| 979 | |
| 980 | |
| 981 | Changes between V8.2.2 and V8.2.3 released October 16, 2015 |
| 982 | |
| 983 | RTOS kernel updates: |
| 984 | |
| 985 | + Fix bug identified in a modification made in V8.2.2 to the software timer |
| 986 | code that allows tickless low power applications to sleep indefinitely |
| 987 | when software timers are used. |
| 988 | + Simplify and improve efficiency of stack overflow checking. |
| 989 | + Add xTaskNotifyStateClear() API function. |
| 990 | + New IAR and GCC Cortex-R ports for microprocessors that do not use an ARM |
| 991 | generic interrupt controller (GIC). |
| 992 | + New PIC32MEC14xx port. |
| 993 | + Add support for PIC32MZ EF parts (with floating point) into the PIC32MZ |
| 994 | port. |
| 995 | + Zynq7000 port layer now declares the functions that setup and clear the |
| 996 | tick interrupt as weak symbols so they can be overridden by the |
| 997 | application, and uses a global XScuGic object so the same object can be |
| 998 | used by the application code. |
| 999 | + Introduced configUSE_TASK_FPU_SUPPORT, although the PIC32MZ EF port is |
| 1000 | currently the only port that uses it. |
| 1001 | + Updates to RL78 and 78K0 IAR port layers to improve support for |
| 1002 | combinations of memory models. |
| 1003 | + Minor updates to heap_5.c to remove compiler warnings generated by some |
| 1004 | compilers. |
| 1005 | + License simplifications. See /FreeRTOS/License/license.txt in the |
| 1006 | official distribution. |
| 1007 | |
| 1008 | FreeRTOS+ updates: |
| 1009 | |
| 1010 | + Update directory names to use WolfSSL instead of CyaSSL, inline with |
| 1011 | WolfSSL's re-branding. |
| 1012 | + Update to latest WolfSSL code. |
| 1013 | + Update to latest FreeRTOS+Trace recorder code. |
| 1014 | + Add in the FreeRTOS+Trace recorder library required for streaming trace. |
| 1015 | |
| 1016 | Demo application changes: |
| 1017 | |
| 1018 | + Add demo applications for Renesas RZ/T (Cortex-R), PIC32MZ EF (PIC32 with |
| 1019 | floating point hardware), PIC32MEC14xx, RX71M, RX113 and RX231. |
| 1020 | + General tidy up of spelling and compiler warnings. |
| 1021 | |
| 1022 | |
| 1023 | Changes between V8.2.1 and V8.2.2 released August 12, 2015 |
| 1024 | |
| 1025 | RTOS kernel updates: |
| 1026 | |
| 1027 | + Added Intel IA32/x86 32-bit port. |
| 1028 | + General maintenance. |
| 1029 | + PRIVILEGED_FUNCTION and PRIVILEGED_DATA macros, which are used in memory |
| 1030 | protected systems, have been added to the newer event group and software |
| 1031 | timer functions. |
| 1032 | + Add the errno definitions used by FreeRTOS+ components into projdefs.h. |
| 1033 | + Remove the restriction that prevented tick-less idle implementations |
| 1034 | waiting indefinitely when software timers were used in the same |
| 1035 | application. |
| 1036 | + Introduce xTaskNotifyAndQueryFromISR() as the interrupt safe version of |
| 1037 | xTaskNotifyAndQuery(). |
| 1038 | + Add additional NOPs to the MSP430X port layers to ensure strict compliance |
| 1039 | with the hardware documentation. |
| 1040 | + Microblaze port: Added option for port optimised task selection. |
| 1041 | + Microblaze port: Previously tasks inherited the exception enable state |
| 1042 | at the time the task was created. Now all tasks are created with |
| 1043 | exceptions enabled if the Microblaze design supports exceptions. |
| 1044 | + Windows port: Add additional safe guards to ensure the correct start up |
| 1045 | sequence and thread switching timing. |
| 1046 | + Windows port: Improve the implementation of the port optimised task |
| 1047 | selection assembly code. |
| 1048 | + Update heap_4 and heap_5 to allow use on 64-bit processors. |
| 1049 | + Simplify the code that creates a queue. |
| 1050 | + General improved tick-less idle behaviour. |
| 1051 | + Ensure none of the variables in the common kernel files are initialised to |
| 1052 | anything other than zero. |
| 1053 | + Correct calculation of xHeapStructSize in heap_4 and heap_5. |
| 1054 | |
| 1055 | Demo application updates: |
| 1056 | |
| 1057 | + Added demo project for the new IA32/x86 port that targets the Galileo |
| 1058 | hardware. |
| 1059 | + Added MSP430FR5969 demos (previously provided as a separate download). |
| 1060 | + Added FreeRTOS BSP repository for automatic creation of FreeRTOS |
| 1061 | applications in the Xilinx SDK. |
| 1062 | + Added Atmel Studio / GCC project for the SAMV71 (ARM Cortex-M7) |
| 1063 | + Update Xilinx SDK projects to use version 2015.2 of the SDK. |
| 1064 | + Remove Microblaze demos that were using obsolete tools. |
| 1065 | + Add MSP43FR5969 IAR and CCS demos. |
| 1066 | |
| 1067 | FreeRTOS+ Updates: |
| 1068 | |
| 1069 | + Updated FreeRTOS+Trace recorder library, which requires an update to the |
| 1070 | FreeRTOS+Trace application. |
| 1071 | + Added Reliance Edge source code and demo application. Reliance edge is |
| 1072 | a fail safe transactional file system ideal for applications that require |
| 1073 | file storage, and especially when high reliability is essential. |
| 1074 | + Introduce configAPPLICATION_PROVIDES_cOutputBuffer to allow FreeRTOS+CLI |
| 1075 | users to place the output buffer at a fixed memory address. |
| 1076 | + Improve the NetworkInterface.c file provided for the Windows port of |
| 1077 | FreeRTOS+UDP. |
| 1078 | |
| 1079 | Changes between V8.2.0 and V8.2.1 released 24th March 2015. |
| 1080 | |
| 1081 | RTOS kernel updates: |
| 1082 | |
| 1083 | + Added user definable and flexible thread local storage facility. |
| 1084 | + Added vTimerSetTimerID() API function to complement the pvTimerGetTimerID() |
| 1085 | function to allow the timer's ID to be used as timer local storage. |
| 1086 | + Fixed a potential issue related to the use of queue sets from an ISR. |
| 1087 | + Some updates to the Xilinx Microblaze GCC port. |
| 1088 | + Added ARM Cortex-M4F port for Texas Instruments Code Composer Studio. |
| 1089 | + Added ARM Cortex-M7 r0p1 port layer for IAR, GCC and Keil which contains a |
| 1090 | minor errata work around. All other ARM Cortex-M7 core revisions should |
| 1091 | use the ARM Cortex-M4F port. |
| 1092 | + Exclude the whole of croutine.c if configUSE_CO_ROUTINES is set to 0. |
| 1093 | + Change some data types from uint32_t to size_t in preparation for 64-bit |
| 1094 | Windows port. |
| 1095 | + Update the PIC32 port to remove deprecation warnings output by the latest |
| 1096 | XC32 compilers. |
| 1097 | + Fix bug when xQueueOverwrite() and xQueueOverwrite() from ISR are used to |
| 1098 | overwrite items in two queues that are part of the same set. |
| 1099 | |
| 1100 | Demo application updates: |
| 1101 | |
| 1102 | + Added demo application for TI's ARM Cortex-M4F based MSP432 |
| 1103 | microcontroller using IAR, Keil and CCS compilers. |
| 1104 | + Added demo application for STM32F ARM Cortex-M7 based microcontroller |
| 1105 | using IAR and Keil. |
| 1106 | + Added demo application for Atmel SAMV71 ARM Cortex-M7 based |
| 1107 | microcontroller using IAR and Keil. |
| 1108 | + Added Microblaze demo that uses the 2014.4 version of the Xilinx SDK and |
| 1109 | runs on the KC705 evaluation board (Kintex FPGA). |
| 1110 | |
| 1111 | Changes between V8.1.2 and V8.2.0 released 16th January 2015 |
| 1112 | |
| 1113 | Changes between release candidate 1 and the official release are restricted |
| 1114 | to maintenance only. |
| 1115 | |
| 1116 | Significant RTOS kernel updates: |
| 1117 | |
| 1118 | + MAJOR NEW FEATURE! Task notifications. Please see the following URL for |
| 1119 | details: https://www.FreeRTOS.org/RTOS-task-notifications.html |
| 1120 | + NEW HEADER FILE REQUIRED! Obsolete definitions have been separated into |
| 1121 | a new header file called FreeRTOS/Source/include/deprecated_definitions.h. |
| 1122 | This header file must be present to build. Note some of the obsolete |
| 1123 | definitions are still used by very old demo application projects. |
| 1124 | |
| 1125 | Other RTOS kernel updates: |
| 1126 | |
| 1127 | + Made xSemaphoreGiveFromISR() a function rather than a macro that calls |
| 1128 | xQueueGenericSendFromISR(). This allows for major performance |
| 1129 | enhancements at the expense of some additional code size if both functions |
| 1130 | are used in the same application. NOTE: In most uses cases such use of |
| 1131 | a semaphore can now be replaced with a task notification which is smaller |
| 1132 | and faster still. |
| 1133 | + The TCB is now always allocated such that the task's stack grows away from |
| 1134 | the TCB (improves debugging of stack overflows as the overflow will not |
| 1135 | overwrite the task's name). |
| 1136 | + GCC, IAR and Keil Cortex-M4F ports now use more inlining (performance |
| 1137 | enhancements at the cost of a little additional code space). |
| 1138 | + Queues are now allocated with a single call to pvPortMalloc() which |
| 1139 | allocates both the queue structure and the queue storage area. |
| 1140 | + Introduced a new critical section macro for reading the tick count that |
| 1141 | defines away to nothing in cases where the width of the tick allows the |
| 1142 | tick count to be read atomically (performance benefits - especially when |
| 1143 | optimisation is on). |
| 1144 | + Introduced configAPPLICATION_ALLOCATED_HEAP in heap_4.c to allow the |
| 1145 | application writer to provide their own heap array - and in so doing |
| 1146 | control the location of the heap. |
| 1147 | + Introduced configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES which, when set, will |
| 1148 | include known values in both list and list item structures. The values |
| 1149 | are intended to assist debugging. If the values get overwritten then it |
| 1150 | is likely application code has written over RAM used by the kernel. |
| 1151 | + configASSERT()s in all Cortex-M ports used to test the lowest 5 bits of |
| 1152 | the interrupt control register to detect taskENTER_CRITICAL() being called |
| 1153 | from an interrupt. This has been changed to test all 8 bits. |
| 1154 | + Introduced uxTaskPriorityGetFromISR(). |
| 1155 | + Microblze V8 port now tests XPAR_MICROBLAZE_0_USE_FPU for inequality to 0 |
| 1156 | rather than equality to 1, and 2 and 3 are also valid values. |
| 1157 | + Cortex-A5 GIC-less port no longer passes the address of the interrupting |
| 1158 | peripheral into the interrupt handler. |
| 1159 | + Fix an issue in FreeRTOS-MPU where an attempt was made to free the stack |
| 1160 | belonging to a task when the task was deleted, even when the stack was |
| 1161 | allocated statically. |
| 1162 | + Utility (helper) functions that format task statistic information into |
| 1163 | human readable tables now pad task names with spaces to ensure columns |
| 1164 | line up correctly even where task name lengths vary greatly. |
| 1165 | + Update FreeRTOS+Trace recorder library to version 2.7.0. |
| 1166 | |
| 1167 | Demo application updates: |
| 1168 | |
| 1169 | + Added two new standard demo task sets: IntSemTest and TaskNotify. |
| 1170 | + Added port and demo application for Atmel SAMA5D4 Cortex-A5 MPU. |
| 1171 | + Added demo application for Altera Cyclone V Cortex-A9 MPU. |
| 1172 | + Updated Zynq demo to use version 2014.4 of Xilinx's SDK and added in |
| 1173 | demo tasks for new RTOS features. |
| 1174 | + Updated Atmel SAM4E and SAM4S demos to include a lot of additional test |
| 1175 | and demo tasks. |
| 1176 | + Fixed a corner case issue in Atmel SAM4L low power tickless |
| 1177 | implementation, and added button interrupt handling. |
| 1178 | + Make the interrupt queue tests more tolerant to heave CPU loads. |
| 1179 | + Updated MSVC FreeRTOS simulator demo to include the latest standard test |
| 1180 | and demo tasks. |
| 1181 | + Updated MingW/Eclipse FreeRTOS simulator demo to match the FreeRTOS MSVC |
| 1182 | simulator demo. |
| 1183 | + Updated all demos that use FreeRTOS+Trace to work with the latest trace |
| 1184 | recorder code. |
| 1185 | |
| 1186 | |
| 1187 | Changes between V8.1.1 and V8.1.2 released September 2nd 2014 |
| 1188 | |
| 1189 | Move the defaulting of configUSE_PORT_OPTIMISED_TASK_SELECTION into the |
| 1190 | individual port layers where necessary so it does not affect ports that do |
| 1191 | not support the definition. |
| 1192 | |
| 1193 | Changes between V8.1.0 and V8.1.1 released August 29th 2014 |
| 1194 | |
| 1195 | By popular requests - a minor patch to V8.1.0 to re-instate the ability to |
| 1196 | give a mutex type semaphore (with priority inheritance) from an interrupt |
| 1197 | handler. |
| 1198 | |
| 1199 | Changes between V8.0.1 and V8.1.0 released August 26th 2014 |
| 1200 | |
| 1201 | FreeRTOS scheduler, kernel, demo and test updates: |
| 1202 | |
| 1203 | + Improved the priority inheritance algorithms to assist integration with |
| 1204 | off the shelf middleware that may hold multiple mutexes simultaneously. |
| 1205 | + Introduce heap_5.c, which is similar to heap_4.c but allows the heap to |
| 1206 | span multiple non-contiguous memory regions. |
| 1207 | + Updated all Cortex-A9 ports to help trap a couple of common usage errors - |
| 1208 | the first being when a task incorrectly attempts to exit its implementing |
| 1209 | function and the second being when a non interrupt safe API function is |
| 1210 | called from an interrupt. |
| 1211 | + Update all Cortex-A9 ports to remove obsolete mode switches prior to |
| 1212 | restoring a task context. |
| 1213 | + configUSE_PORT_OPTIMISED_TASK_SELECTION now defaults to 1 instead of 0. |
| 1214 | + Update all Cortex-M3/4F ports to trap a non interrupt safe API function |
| 1215 | being called from an interrupt handler. |
| 1216 | + Simplify the alignment checks in heap_4.c. |
| 1217 | + Update the MSVC Windows simulator demo to use heap_5.c in place of |
| 1218 | heap_4.c to ensure end users have an example to refer to. |
| 1219 | + Updated standard demo test code to test the new priority inheritance |
| 1220 | algorithms. |
| 1221 | + Updated the standard demo tasks to make use of stdint and the FreeRTOS |
| 1222 | specific typedefs that were introduced in FreeRTOS V8.0.0. |
| 1223 | + Introduce the pdMS_TO_TICKS() macro as a more user friendly and intuitive |
| 1224 | alternative to pdTICKS_PER_MS - both of which can be used to convert a |
| 1225 | time specified in milliseconds to a time specified in RTOS ticks. |
| 1226 | + Fix a bug in the Tasking compiler's Cortex-M port that resulted in an |
| 1227 | incorrect value being written to the basepri register. This only effects |
| 1228 | users of the Tasking compiler. |
| 1229 | + Update the Zynq demo to use version 2014.2 of the SDK and add in an lwIP |
| 1230 | example that demonstrates lwIP being used with both its raw and sockets |
| 1231 | interfaces. |
| 1232 | + Updated the CCS Cortex-R4 port to enable it to be built with the latest |
| 1233 | CCS compiler. |
| 1234 | |
| 1235 | New ports and demo applications: |
| 1236 | |
| 1237 | + Two Renesas RX64M ports (RXv2 core) and demos introduced, one for the GCC |
| 1238 | compiler and one for the Renesas compiler. Both demos use e2 studio. |
| 1239 | + Generic IAR Cortex-A5 port (without any reliance on a GIC) introduced. |
| 1240 | The new port is demonstrated on an Atmel SAMA5D3 XPlained board. |
| 1241 | |
| 1242 | FreeRTOS+ component updates: |
| 1243 | |
| 1244 | + Update CyaSSL to the latest version. |
| 1245 | + Updated the FreeRTOS+ components supplied directly by Real Time Engineers |
| 1246 | Ltd. to make use of stdint and the FreeRTOS specific typedefs that were |
| 1247 | introduced in FreeRTOS V8.0.0. |
| 1248 | + Rework and simplify the FreeRTOS+FAT SL RAM disk driver. |
| 1249 | |
| 1250 | Miscellaneous updates and maintenance: |
| 1251 | |
| 1252 | + Update the IAR and DS-5/ARM RZ demos to target the official RZ RSK |
| 1253 | hardware in place of the previously targeted Renesas internal (not |
| 1254 | publicly available) hardware. |
| 1255 | + Various other maintenance tasks. |
| 1256 | |
| 1257 | |
| 1258 | Changes between V8.0.0 and V8.0.1 released 2nd May 2014 |
| 1259 | |
| 1260 | + Minor fixes to the event group functionality that was released in V8.0.0. |
| 1261 | The 'clear bits from ISR' functionality is now implemented using a |
| 1262 | deferred interrupt callback instead of a function, and the 'wait bits' and |
| 1263 | 'task sync' functions now correctly clear internal control bits before |
| 1264 | returning a value in every possible path through the respective functions. |
| 1265 | + Ensure the updating of internal control data is protected by a critical |
| 1266 | section after a task is deleted or suspended. |
| 1267 | + Minor fixes to FreeRTOS+FAT SL - namely seeking beyond the end of a file |
| 1268 | when the offset was not a multiple of the sector size. |
| 1269 | + Ensure Cortex-A9 system registers are only ever accessed as 32-bit values, |
| 1270 | even when only the lest significant byte of the register is implemented. |
| 1271 | |
| 1272 | Other updates: |
| 1273 | |
| 1274 | + Updated the XMC4200 IAR project so it links with version 7.x of the IAR |
| 1275 | tools. |
| 1276 | + Add RL78L1C demo. |
| 1277 | + Add pcTimerGetName() API function. |
| 1278 | + Call _reclaim_reent() when a task is deleted if configUSE_NEWLIB_REENTRANT |
| 1279 | is defined. |
| 1280 | |
| 1281 | Changes between V7.6.0 and V8.0.0 released 19th Feb 2014 |
| 1282 | |
| 1283 | https://www.FreeRTOS.org/upgrading-to-FreeRTOS-V8.html |
| 1284 | |
| 1285 | FreeRTOS V8.x.x is a drop-in compatible replacement for FreeRTOS V7.x.x, |
| 1286 | although a change to the type used to reference character strings may result |
| 1287 | in application code generating a few (easily clearable) compiler warnings |
| 1288 | after the upgrade, and an updated typedef naming convention means use of the |
| 1289 | old typedef names is now discouraged. |
| 1290 | See https://www.FreeRTOS.org/upgrading-to-FreeRTOS-V8.html for full |
| 1291 | information. |
| 1292 | |
| 1293 | New features and functionality: |
| 1294 | |
| 1295 | + Event groups - see https://www.FreeRTOS.org/FreeRTOS-Event-Groups.html |
| 1296 | + Centralised deferred interrupt processing - see |
| 1297 | https://www.FreeRTOS.org/xTimerPendFunctionCallFromISR.html |
| 1298 | |
| 1299 | Other updates: |
| 1300 | |
| 1301 | + Previously, when a task left the Blocked state, a context switch was |
| 1302 | performed if the priority of the unblocked task was greater than or equal |
| 1303 | to the priority of the Running task. Now a context switch is only |
| 1304 | performed if the priority of the unblocked task is greater than the |
| 1305 | priority of the Running task. |
| 1306 | + New low power tickless demonstration project that targets the ST STM32L |
| 1307 | microcontroller - see |
| 1308 | https://www.FreeRTOS.org/STM32L-discovery-low-power-tickless-RTOS-demo.html |
| 1309 | + Add xPortGetMinimumEverFreeHeapSize() to heap_4.c. |
| 1310 | + Small change to the tickless low power implementation on the SAM4L to |
| 1311 | ensure the alarm value (compare match value) cannot be set to zero when a |
| 1312 | tickless period is exited due to an interrupt originating from a source |
| 1313 | other than the RTOS tick. |
| 1314 | + Update the GCC/Eclipse Win32 simulator demo to make better use of Eclipse |
| 1315 | resource filters and match the functionality of the MSVC equivalent. |
| 1316 | + xTaskIsTaskSuspended() is no longer a public function. Use |
| 1317 | eTaskGetState() in its place. |
| 1318 | + Improved trace macros, including tracing of heap usage. |
| 1319 | + Remove one level of indirection when accepting interrupts on the PIC32MZ. |
| 1320 | + Add Cortex-A9 GCC port layer. |
| 1321 | + Add Xilinx Zynq demo application. |
| 1322 | |
| 1323 | |
| 1324 | Changes between V7.5.3 and V7.6.0 released 18th November 2013 |
| 1325 | |
| 1326 | V7.6.0 changes some behaviour when the co-operative scheduler is used (when |
| 1327 | configUSE_PREEMPTION is set to 0). It is important to note that the |
| 1328 | behaviour of the pre-emptive scheduler is unchanged - the following |
| 1329 | description only applies when configUSE_PREEMPTION is set to 0: |
| 1330 | |
| 1331 | WHEN configUSE_PREEMPTION IS SET TO 0 (which is in a small minority of |
| 1332 | cases) a context switch will now only occur when a task places itself into |
| 1333 | the Blocked state, or explicitly calls taskYIELD(). This differs from |
| 1334 | previous versions, where a context switch would also occur when implicitly |
| 1335 | moving a higher priority task out of the Blocked state. For example, |
| 1336 | previously, WHEN PREEMPTION WAS TURNED OFF, if task A unblocks task B by |
| 1337 | writing to a queue, then the scheduler would switch to the higher priority |
| 1338 | task. Now, WHEN PREEMPTION IS TURNED OFF, if task A unblocks task B by |
| 1339 | writing to a queue, task B will not start running until task A enters the |
| 1340 | Blocked state or task A calls taskYIELD(). [If configUSE_PREEMPTION is not |
| 1341 | set to 0, so the normal pre-emptive scheduler is being used, then task B |
| 1342 | will start running immediately that it is moved out of the Blocked state]. |
| 1343 | |
| 1344 | Other changes: |
| 1345 | |
| 1346 | + Added a port layer and a demo project for the new PIC32MZ architecture. |
| 1347 | + Update the PIC32MX port layer to re-introduce some ehb instructions that |
| 1348 | were previously removed, add the ability to catch interrupt stack |
| 1349 | overflows (previously only task stack overflows were trapped), and also |
| 1350 | add the ability to catch an application task incorrectly attempting to |
| 1351 | return from its implementing function. |
| 1352 | + Make dramatic improvements to the performance of the Win32 simulator port |
| 1353 | layer. |
| 1354 | + Ensure tasks that are blocked indefinitely report their state as Blocked |
| 1355 | instead of Suspended. |
| 1356 | + Slight improvement to the Cortex-M4F port layers where previously one |
| 1357 | register was inadvertently being saved twice. |
| 1358 | + Introduce the xSemaphoreCreateBinary() API function to ensure consistency |
| 1359 | in the semantics of how each semaphore type is created. It is no longer |
| 1360 | recommended to use vSemaphoreCreateBinary() (the version prefixed with a |
| 1361 | 'v'), although it will remain in the code for backward compatibility. |
| 1362 | + Update the Cortex-M0 port layers to allow the scheduler to be started |
| 1363 | without using the SVC handler. |
| 1364 | + Added a build configuration to the PIC32MX MPLAB X demo project that |
| 1365 | targets the PIC32 USB II starter kit. Previously all the build |
| 1366 | configurations required the Explorer 16 hardware. |
| 1367 | + Some of the standard demo tasks have been updated to ensure they execute |
| 1368 | correctly with the updated co-operative scheduling behaviour. |
| 1369 | + Added comprehensive demo for the Atmel SAM4E, including use of |
| 1370 | FreeRTOS+UDP, FreeRTOS+FAT SL and FreeRTOS+CLI. |
| 1371 | |
| 1372 | FreeRTOS+ Changes: |
| 1373 | |
| 1374 | + Minor maintenance on FreeRTOS+UDP. |
| 1375 | |
| 1376 | Changes between V7.5.2 and V7.5.3 released October 14 2013 |
| 1377 | |
| 1378 | Kernel changes: |
| 1379 | |
| 1380 | + Prior to V7.5.x yields requested from the tick hook would occur in the |
| 1381 | same tick interrupt - revert to that original behaviour. |
| 1382 | + New API function uxQueueSpacesAvailable(). |
| 1383 | + Introduced the prvTaskExitError() function to Cortex-M0, Cortex-M3/4 |
| 1384 | and Cortex-M4F ports. prvTaskExitError() is used to trap tasks that |
| 1385 | attempt to return from their implementing functions (tasks should call |
| 1386 | vTaskDelete( NULL ); if they want to exit). |
| 1387 | + The Cortex-M0 version of portSET_INTERRUPT_MASK_FROM_ISR and |
| 1388 | portCLEAR_INTERRUPT_MASK_FROM_ISR are now fully nestable. |
| 1389 | + Improved behaviour and robustness of the default Cortex-M tickless idle |
| 1390 | behaviour. |
| 1391 | + Add workaround for silicon errata PMU_CM001 in Infineon XMC4000 devices to |
| 1392 | all Cortex-M4F ports. |
| 1393 | + Add Cortex-M0 port for Keil. |
| 1394 | + Updated Cortus port. |
| 1395 | + Ensure _impure_ptr is initialised before the scheduler is started. |
| 1396 | Previously it was not set until the first context switch. |
| 1397 | |
| 1398 | FreeRTOS+ changes: |
| 1399 | |
| 1400 | + Update FreeRTOS+UDP to V1.0.1 - including direct integration of the |
| 1401 | FreeRTOS+Nabto task, improvements to the DHCP behaviour, and a correction |
| 1402 | to the test that prevents the network event hook being called on the first |
| 1403 | network down event. The FreeRTOS+UDP change history is maintained |
| 1404 | separately. |
| 1405 | + Correct the __NVIC_PRIO_BITS setting in the LPC18xx.h header files |
| 1406 | provided in the NXP CMSIS library, then update the interrupts used by the |
| 1407 | LPC18xx demos accordingly. |
| 1408 | + Replace double quotes (") with single quotes (') in FreeRTOS+CLI help |
| 1409 | strings to ensure the strings can be used with the JSON descriptions used |
| 1410 | in the FreeRTOS+Nabto demos. |
| 1411 | |
| 1412 | Demo and miscellaneous changes: |
| 1413 | |
| 1414 | + Added demo for the Atmel SAMD20 Cortex-M0+. The demo includes |
| 1415 | FreeRTOS+CLI |
| 1416 | + Added a demo for the Infineon Cortex-M0 that can be built with the IAR |
| 1417 | Keil and GCC tools. |
| 1418 | + Updated the Infineon XMC4000 demos for IAR, Keil, GCC and Tasking tools, |
| 1419 | with additional build configurations to directly support the XMC4200 and |
| 1420 | XMC4400 devices, in addition to the previously supported XMC4500. |
| 1421 | + Updated the demo application. |
| 1422 | + Added additional trace macros traceMALLOC and traceFREE to track heap |
| 1423 | usage. |
| 1424 | |
| 1425 | Changes between V7.5.0 and V7.5.2 released July 24 2013 |
| 1426 | |
| 1427 | V7.5.2 makes the new Cortex-M vPortCheckInterruptPriority() function |
| 1428 | compatible with the STM32 standard peripheral driver library, and adds |
| 1429 | an extra critical section to the default low power tickless mode |
| 1430 | implementation. Only users of the STM32 peripheral library or the default |
| 1431 | tickless implementation need update from version 7.5.0. |
| 1432 | |
| 1433 | Changes between V7.4.2 and V7.5.0 released July 19 2013 |
| 1434 | |
| 1435 | V7.5.0 is a major upgrade that includes multiple scheduling and efficiency |
| 1436 | improvements, and some new API functions. |
| 1437 | |
| 1438 | Compatibility information for FreeRTOS users: |
| 1439 | FreeRTOS V7.5.0 is backward compatible with FreeRTOS V7.4.0 with one |
| 1440 | exception; the vTaskList() and vTaskGetRunTimeStats() functions are now |
| 1441 | considered legacy, having been replaced by the single uxTaskGetSystemState() |
| 1442 | function. configUSE_STATS_FORMATTING_FUNCTIONS must be set to 1 in |
| 1443 | FreeRTOSConfig.h for vTaskList() and vTaskGetRunTimeStats() to be |
| 1444 | available. |
| 1445 | |
| 1446 | Compatibility information for FreeRTOS port writers: |
| 1447 | vTaskIncrementTick() is now called xTaskIncrementTick() (because it now |
| 1448 | returns a value). |
| 1449 | |
| 1450 | Headline changes: |
| 1451 | |
| 1452 | + Multiple scheduling and efficiency improvements. |
| 1453 | + Core kernel files now pass PC-Lint V8 static checking without outputting |
| 1454 | any warnings (information on the test conditions will follow). |
| 1455 | |
| 1456 | New API functions: |
| 1457 | |
| 1458 | + uxTaskGetSystemState() https://www.FreeRTOS.org/uxTaskGetSystemState.html |
| 1459 | + xQueueOverwrite() https://www.FreeRTOS.org/xQueueOverwrite.html |
| 1460 | + xQueueOverwriteFromISR() |
| 1461 | + xQueuePeekFromISR() |
| 1462 | |
| 1463 | The following ports and demos, which were previously available separately, |
| 1464 | are now incorporated into the main FreeRTOS zip file download: |
| 1465 | |
| 1466 | + ARM Cortex-A9 IAR |
| 1467 | + ARM Cortex-A9 ARM compiler |
| 1468 | + Renesas RZ |
| 1469 | + Microsemi SmartFusion2 |
| 1470 | |
| 1471 | New FreeRTOSConfig.h settings |
| 1472 | https://freertos.org/a00110.html |
| 1473 | |
| 1474 | + configUSE_TIME_SLICING |
| 1475 | + configUSE_NEWLIB_REENTRANT |
| 1476 | + configUSE_STATS_FORMATTING_FUNCTIONS |
| 1477 | + configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS |
| 1478 | |
| 1479 | Other changes: |
| 1480 | |
| 1481 | + (MPU port only) The configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS |
| 1482 | options provides a mechanism that allows application writers to execute |
| 1483 | certain functions in privileged mode even when a task is running in user |
| 1484 | mode. |
| 1485 | + Ports that support interrupt nesting now include a configASSERT() that |
| 1486 | will trigger if an interrupt safe FreeRTOS function is called from an |
| 1487 | interrupt that has a priority designated as above the maximum system/API |
| 1488 | call interrupt priority. |
| 1489 | + The included FreeRTOS+Trace recorder code has been updated to the latest |
| 1490 | version, and the demo applications that use the trace recorder code have |
| 1491 | been updated accordingly. |
| 1492 | + The FreeRTOS Windows Simulator (MSVC version only) has been updated to |
| 1493 | include a new basic 'blinky' build option in addition to the original |
| 1494 | comprehensive build option. |
| 1495 | + Improve RAM usage efficiency of heap_4.c and heap_2.c. |
| 1496 | + Prevent heap_4.c from attempting to free memory blocks that were not |
| 1497 | allocated by heap_4.c, or have already been freed. |
| 1498 | + As FreeRTOS now comes with FreeRTOS+FAT SL (donated by HCC) the Chan FATfs |
| 1499 | files have been removed from FreeRTOS/Demo/Common. |
| 1500 | + Fix build error when R4 port is build in co-operative mode. |
| 1501 | + Multiple port and demo application maintenance activities. |
| 1502 | |
| 1503 | Changes between V7.4.1 and V7.4.2 released May 1 2013 |
| 1504 | |
| 1505 | NOTE: There are no changes in the FreeRTOS kernel between V7.4.1 and V7.4.2 |
| 1506 | |
| 1507 | + Added FreeRTOS+FAT SL source code and demo project. The demo project |
| 1508 | runs in the FreeRTOS Windows simulator for easy and hardware independent |
| 1509 | experimentation and evaluation. See https://www.FreeRTOS.org/fat_sl |
| 1510 | |
| 1511 | Changes between V7.4.0 and V7.4.1 released April 18 2013 |
| 1512 | |
| 1513 | + To ensure strict conformance with the spec and ensure compatibility with |
| 1514 | future chips data and instruction barrier instructions have been added to |
| 1515 | the yield macros of Cortex-M and Cortex-R port layers. For efficiency |
| 1516 | the Cortex-M port layer "yield" and "yield" from ISR are now implemented |
| 1517 | separately as the barrier instructions are not required in the ISR case. |
| 1518 | + Added FreeRTOS+UDP into main download. |
| 1519 | + Reorganised the FreeRTOS+ directory so it now matches the FreeRTOS |
| 1520 | directory with Source and Demo subdirectories. |
| 1521 | + Implemented the Berkeley sockets select() function in FreeRTOS+UDP. |
| 1522 | + Changed (unsigned) casting in calls to standard library functions with |
| 1523 | (size_t) casting. |
| 1524 | + Added the Atmel SAM4L and Renesas RX100 demos that demonstrates the |
| 1525 | tickless (tick suppression) low power FreeRTOS features. |
| 1526 | + Add a new RL78 IAR demo that targets numerous new RL78 chips and |
| 1527 | evaluation boards. |
| 1528 | + Adjusted stack alignment on RX200 ports to ensure an assert was not |
| 1529 | falsely triggered when configASSERT() is defined. |
| 1530 | + Updated the Cortex_M4F_Infineon_XMC4500_IAR demo to build with the latest |
| 1531 | version of EWARM. |
| 1532 | + Corrected header comments in the het.c and het.h files (RM48/TMS570 demo). |
| 1533 | |
| 1534 | |
| 1535 | Changes between V7.3.0 and V7.4.0 released February 20 2013 |
| 1536 | |
| 1537 | + New feature: Queue sets. See: |
| 1538 | https://www.FreeRTOS.org/Pend-on-multiple-rtos-objects.html |
| 1539 | + Overhauled the default tickless idle mode implementation provided with the |
| 1540 | ARM Cortex-M3 port layers. |
| 1541 | + Enhanced tickless support in the core kernel code with the introduction of |
| 1542 | the configEXPECTED_IDLE_TIME_BEFORE_SLEEP macro and the |
| 1543 | eTaskConfirmSleepModeStatus() function. |
| 1544 | + Added the QueueSet.c common demo/test file. Several demo applications |
| 1545 | have been updated to use the new demo/test tasks. |
| 1546 | + Removed reliance on the PLIB libraries from the MPLAB PIC32 port layer and |
| 1547 | demo applications. |
| 1548 | + Added the FreeRTOS+Trace recorder code to the MSVC Win32 demo. |
| 1549 | + Renamed eTaskStateGet() to eTaskGetState() for consistency, and added a |
| 1550 | pre-processor macro for backward compatibility with the previous name. |
| 1551 | + Updated functions implemented in the core queue.c source file to allow |
| 1552 | queue.h to be included from the .c file directly (this prevents compiler |
| 1553 | warnings that were generated by some compilers). |
| 1554 | + Updated the CCS Cortex-R4 port layer to replace the CLZ assembler function |
| 1555 | with the CLZ compiler intrinsic that is provided by the latest versions of |
| 1556 | the CCS ARM compiler. |
| 1557 | + Updated all heap_x.c implementations to replace the structure that was |
| 1558 | used to ensure the start of the heap was aligned with a more portable |
| 1559 | direct C code implementation. |
| 1560 | + Added support for PIC24 devices that include EDS. |
| 1561 | + Minor optimisations to the PIC32 port layer. |
| 1562 | + Minor changes to tasks.c that allow the state viewer plug-ins to display |
| 1563 | additional information. |
| 1564 | + Bug fix: Update prvProcessReceivedCommands() in timers.c to remove an |
| 1565 | issue that could occur if the priority of the timer daemon task was set |
| 1566 | below the priority of tasks that used timer services. |
| 1567 | + Update the FreeRTOS+Trace recorder code to the latest version. |
| 1568 | |
| 1569 | Changes between V7.2.0 and V7.3.0 released October 31 2012 |
| 1570 | |
| 1571 | + Added ability to override the default scheduler task selection mechanism |
| 1572 | with implementations that make use of architecture specific instructions. |
| 1573 | + Added ability to suppress tick interrupts during idle time, and in so |
| 1574 | doing, provide the ability to make use of architecture specific low power |
| 1575 | functionality. |
| 1576 | + Added the portSUPPRESS_TICKS_AND_SLEEP() macro and vTaskStepTick() helper |
| 1577 | function. |
| 1578 | + Added the configSYSTICK_CLOCK_HZ configuration constant. |
| 1579 | + Reworked the Cortex-M3 and Cortex-M4F port layers for GCC, Keil and IAR to |
| 1580 | directly support basic power saving functionality. |
| 1581 | + Added hooks to allow basic power saving to be augmented in the application |
| 1582 | by making use of chip specific functionality. |
| 1583 | + Minor change to allow mutex type semaphores to be used from interrupts |
| 1584 | (which would not be a normal usage model for a mutex). |
| 1585 | + Change the behaviour of the interrupt safe interrupt mask save and restore |
| 1586 | macros in the Cortex-M ports. The save macro now returns the previous |
| 1587 | mask value. The restore macro now uses the previous mask value. These |
| 1588 | changes are not necessary for the kernel's own implementation, and are |
| 1589 | made purely because the macros were being used by application writers. |
| 1590 | + Added eTaskStateGet() API function. |
| 1591 | + Added port specific optimisations to the PIC32 port layer, and updated the |
| 1592 | PIC32 demo applications to make use of this new feature. |
| 1593 | + Added port specific optimisations to the Win32 simulator port. |
| 1594 | + Added new ports and demo applications for the TI Hercules RM48 and TMS570 |
| 1595 | safety microcontrollers. |
| 1596 | + Added SAM3 demos targeting the ATSAM3S-EK2 and ATSAM3X-EK evaluation |
| 1597 | boards. |
| 1598 | + Updated the PIC32 MPLAB X project to manually set the compiler include |
| 1599 | paths instead of using the IDE entry box following reports that the |
| 1600 | include paths were somehow being deleted. |
| 1601 | + Improved character handling in FreeRTOS+CLI. |
| 1602 | |
| 1603 | Changes between V7.1.1 and V7.2.0 released 14 August 2012 |
| 1604 | |
| 1605 | FreeRTOS V7.2.0 is backward compatible with FreeRTOS V7.1.2. |
| 1606 | |
| 1607 | + Added a FreeRTOS+ sub-directory. The directory contains some FreeRTOS+ |
| 1608 | source code, and example projects that use the FreeRTOS Win32 simulator. |
| 1609 | + Added a new example heap allocation implementation (heap_4.c) that |
| 1610 | includes memory block coalescence. |
| 1611 | + Added a demo that targets the Atmel SAM4S Cortex-M4 based microcontroller. |
| 1612 | The demo is preconfigured to build using the free Atmel Studio 6 IDE and |
| 1613 | GCC compiler. |
| 1614 | + Added xSemaphoreTakeFromISR() implementation. |
| 1615 | + The last parameter in ISR safe FreeRTOS queue and semaphore functions |
| 1616 | (xHigherPriorityTaskWoken) is now optional and can be set to NULL if it |
| 1617 | is not required. |
| 1618 | + Update the IAR and MSP430X ports to clear all lower power mode bits before |
| 1619 | exiting the tick interrupt [bug fix]. |
| 1620 | + Allow xQueueReset() to be used, even when the queues event lists are not |
| 1621 | empty. |
| 1622 | + Added a vQueueDelete() handler for the FreeRTOS MPU port (this was |
| 1623 | previously missing). |
| 1624 | + Updated the vPortSVCHandler() functions in the FreeRTOS MPU port layer to |
| 1625 | ensure it compiles with the latest ARM GCC compilers from Linaro. |
| 1626 | + Updated the prvReadGP() function in the NIOS II port to ensure the compiler |
| 1627 | can choose any register for the functions parameter (required at high |
| 1628 | compiler optimisation levels). |
| 1629 | + Add #error macros into the Keil and IAR Cortex-M ports to ensure they |
| 1630 | cannot be built if the user has set configMAX_SYSCALL_INTERRUPT_PRIORITY |
| 1631 | to 0. |
| 1632 | + Added comments in the FreeRTOSConfig.h files associated with Cortex-M3 and |
| 1633 | Cortex-M4 demos stating that the configMAX_SYSCALL_INTERRUPT_PRIORITY |
| 1634 | parameter must not be set to 0. |
| 1635 | + Introduce new INCLUDE_xQueueGetMutexHolder configuration constant |
| 1636 | (defaulted to 0). |
| 1637 | + Added two new list handling macros - for internal use only in upcoming new |
| 1638 | products. |
| 1639 | + Removed all mention of the legacy vTaskStartTrace and ulTaskEndTrace |
| 1640 | macros. FreeRTOS+Trace supersedes the legacy trace. |
| 1641 | + Added a configASSERT() into the vPortFree() function in heap_1.c as it is |
| 1642 | invalid for the function to be called. |
| 1643 | + Made the xRxLock and xTxLock members of the queue structure volatile. |
| 1644 | This is probably not necessary, and is included as a precautionary |
| 1645 | measure. |
| 1646 | + Modify the assert() that checks to see if the priority passed into an |
| 1647 | xTaskCreate() function is within valid bounds to permit the assert to be |
| 1648 | used in the FreeRTOS MPU port. |
| 1649 | + The software timer service (daemon) task is now created in a way that |
| 1650 | to ensure compatibility with FreeRTOS MPU. |
| 1651 | |
| 1652 | Changes between V7.1.0 and V7.1.1 released May 1 2012 |
| 1653 | |
| 1654 | New ports: |
| 1655 | |
| 1656 | The following ports are brand new: |
| 1657 | + Cortex-M3 Tasking |
| 1658 | |
| 1659 | The following ports have been available as separate downloads for a number |
| 1660 | of months, but are now included in the main FreeRTOS download. |
| 1661 | + Cortex-M0 IAR |
| 1662 | + Cortex-M0 GCC |
| 1663 | + Cortex-M4F GCC (with full floating point support) |
| 1664 | |
| 1665 | |
| 1666 | New demos: |
| 1667 | |
| 1668 | The following demos are brand new: |
| 1669 | + Renesas RX63N RDK (Renesas compiler) |
| 1670 | |
| 1671 | The following demos have been available as separate downloads for a number |
| 1672 | of months, but are now included in the main FreeRTOS download. |
| 1673 | + NXP LPC1114 GCC/LPCXpresso |
| 1674 | + ST STM32F0518 IAR |
| 1675 | + Infineon XMC4500 GCC/Atollic |
| 1676 | + Infineon XMC4500 IAR |
| 1677 | + Infineon XMC4500 Keil |
| 1678 | + Infineon XMC4500 Tasking |
| 1679 | |
| 1680 | |
| 1681 | Kernel miscellaneous / maintenance: |
| 1682 | |
| 1683 | + Introduced the portSETUP_TCB() macro to remove the requirement for the |
| 1684 | Windows simulator to use the traceTASK_CREATE() macro, leaving the trace |
| 1685 | macro available for use by FreeRTOS+Trace (https://www.FreeRTOS.org/trace). |
| 1686 | + Added a new trace macro, traceMOVE_TASK_TO_READY_STATE(), to allow future |
| 1687 | FreeRTOS+Trace versions to provide even more information to users. |
| 1688 | + Updated the FreeRTOS MPU port to be correct for changes that were |
| 1689 | introduced in FreeRTOS V7.1.0. |
| 1690 | + Introduced the xQueueReset() API function. |
| 1691 | + Introduced the xSemaphoreGetMutexHolder() API function. |
| 1692 | + Tidy up various port implementations to add the static key word where |
| 1693 | appropriate, and remove obsolete code. |
| 1694 | + Slight change to the initial stack frame given to the RX600 ports to allow |
| 1695 | them to be used in the Eclipse based E2Studio IDE without confusing GDB. |
| 1696 | + Correct the alignment given to the initial stack of Cortex-M4F tasks. |
| 1697 | + Added a NOP following each DINT instruction on MSP430 devices for strict |
| 1698 | conformance with the instructions on using DINT. |
| 1699 | + Changed the implementation of thread deletes in the Win32 port to prevent |
| 1700 | the port making use of the traceTASK_DELETE() trace macros - leaving this |
| 1701 | macro free for use by FreeRTOS+Trace. |
| 1702 | + Made some benign changes to the RX600 Renesas compiler port layer to |
| 1703 | ensure the code can be built to a library without essential code being |
| 1704 | removed by the linker. |
| 1705 | + Reverted the change in the name of the uxTaskNumber variable made in |
| 1706 | V7.1.0 as it broke the IAR plug-in. |
| 1707 | |
| 1708 | |
| 1709 | Demo miscellaneous / maintenance: |
| 1710 | |
| 1711 | + The command interpreter has now been formally released as FreeRTOS+CLI, |
| 1712 | and been moved out of the main FreeRTOS download, to instead be available |
| 1713 | from the FreeRTOS+ Ecosystem site https://www.FreeRTOS.org/plus. |
| 1714 | + flash_timer.c/h has been added to the list of standard demo tasks. This |
| 1715 | performs the same functionality as the flash.c tasks, but using software |
| 1716 | timers in place of tasks. |
| 1717 | + Upgraded the PIC32 demo as follows: Changes to how the library functions |
| 1718 | are called necessitated by the new compiler version, addition of MPLAB X |
| 1719 | project with PIC32MX360, PIC32MX460 and PIC32MX795 configurations, |
| 1720 | addition of simply blinky demo, updated FreeRTOSConfig.h to include more |
| 1721 | parameters, addition of hook function stubs. |
| 1722 | + The MSP430X IAR and CCS demos have been updated to ensure the power |
| 1723 | settings are correct for the configured CPU frequency. |
| 1724 | + Rowley CrossWorks projects have been updated to correct the "multiple |
| 1725 | definition of ..." warnings introduced when the toolchain was updated. |
| 1726 | + Updated various FreeRTOSConfig.h header files associated with projects |
| 1727 | that build with Eclipse to include a #error statement informing the user |
| 1728 | that the CreateProjectDirectoryStructure.bat batch file needs to be |
| 1729 | executed before the projects can be opened. |
| 1730 | + Renamed directories that included "CCS4" in their name to remove the '4' |
| 1731 | and instead just be "CCS". This is because the demo was updated and |
| 1732 | tested to also work with later Code Composer Studio versions. |
| 1733 | + Updated the TCP/IP periodic timer frequency in numerous uIP demos to be |
| 1734 | 50ms instead of 500ms. |
| 1735 | |
| 1736 | Changes between V7.0.2 and V7.1.0 released December 13 2011 |
| 1737 | |
| 1738 | New ports: |
| 1739 | |
| 1740 | + Cortex-M4F IAR port. |
| 1741 | + Cortex-M4F Keil/RVDS port. |
| 1742 | + TriCore GCC port. |
| 1743 | |
| 1744 | New demos: |
| 1745 | |
| 1746 | + NXP LPC4350 using the Keil MDK, and demonstrated on a Hitex development |
| 1747 | board. |
| 1748 | + ST STM32F407 using the IAR Embedded Workbench for ARM, and demonstrated on |
| 1749 | the IAR STM32F407ZG-SK starter kit. |
| 1750 | + Infineon TriCore TC1782, using the GCC compiler, demonstrated on the |
| 1751 | TriBoard TC1782 evaluation board. |
| 1752 | + Renesas RX630, using the Renesas compiler and HEW, demonstrated on an |
| 1753 | RX630 RSK (Renesas Starter Kit). |
| 1754 | |
| 1755 | Miscellaneous / maintenance: |
| 1756 | |
| 1757 | + Removed all calls to printf() from the K60/IAR Kinetis demo so the project |
| 1758 | can execute stand alone - without being connected to the debugger. |
| 1759 | + Completed the command interpreter framework. Command handlers now receive |
| 1760 | the entire command string, giving them direct access to parameters. |
| 1761 | Utility functions are provided to check the number of parameters, and |
| 1762 | return parameter sub-strings. |
| 1763 | + The previously documented fix for the bug in xTaskResumeFromISR() that |
| 1764 | effected (only) ports supporting interrupt nesting has now been |
| 1765 | incorporated into the main release. |
| 1766 | + The portALIGNMENT_ASSERT_pxCurrentTCB() definition has been added to allow |
| 1767 | specific ports to skip the second stack alignment check when a task is |
| 1768 | created. This is because the second check is not appropriate for some |
| 1769 | ports - including the new TriCore port where the checked pointer does not |
| 1770 | actually point to a stack. |
| 1771 | + The portCLEAN_UP_TCB() macro has been added to allow port specific clean |
| 1772 | up when a task is deleted - again this is required by the TriCore port. |
| 1773 | + Various other minor changes to ensure warning free builds on a growing |
| 1774 | number of microcontroller and toolchain platforms. This includes a |
| 1775 | (benign) correction to the prototype of the |
| 1776 | vApplicationStackOverflowHook() definition found in lots of recent demos. |
| 1777 | |
| 1778 | Trace system: |
| 1779 | |
| 1780 | + The legacy trace mechanism has been completely removed - it has been |
| 1781 | obsolete for the years since the trace macros were introduced. The |
| 1782 | configuration constant configUSE_TRACE_FACILITY is now used to optionally |
| 1783 | include additional queue and task information. The additional information |
| 1784 | is intended to make the trace mechanism more generic, and allow the trace |
| 1785 | output to provide more information. When configUSE_TRACE_FACILITY is set |
| 1786 | to 1: |
| 1787 | - the queue structure includes an additional member to hold the queue |
| 1788 | type, which can be base, mutex, counting semaphore, binary semaphore |
| 1789 | or recursive mutex. |
| 1790 | - the queue structure includes an additional member to hold a queue |
| 1791 | number. A trace tool can set and query the queue number for its own |
| 1792 | purposes. The kernel does not use the queue number itself. |
| 1793 | - the TCB structure includes an additional member to hold a task number |
| 1794 | number. A trace tool can set and query the task number for its own |
| 1795 | purposes. The kernel does not use the task number itself. |
| 1796 | + Queues and all types of semaphores are now automatically allocated their |
| 1797 | type as they are created. |
| 1798 | + Added two new trace macros - traceTASK_PRIORITY_INHERIT() and |
| 1799 | traskTASK_PRIORITY_DISINHERIT(). |
| 1800 | + Updated the traceQUEUE_CREATE_FAILED() macro to take a parameter that |
| 1801 | indicates the type of queue, mutex, or semaphore that failed to be |
| 1802 | created. |
| 1803 | + The position from which traceCREATE_MUTEX() is called has been moved from |
| 1804 | after the call to xQueueGenericSend() [within the same function] to before |
| 1805 | the call. This ensures the trace events occur in the correct order. |
| 1806 | + The value passed into tracePRIORITY_SET() has been corrected for the case |
| 1807 | where vTaskPrioritySet() is called with a null parameter. |
| 1808 | |
| 1809 | Changes between V7.0.1 and V7.0.2 released September 20 2011 |
| 1810 | |
| 1811 | New ports: |
| 1812 | |
| 1813 | + The official FreeRTOS Renesas RX200 port and demo application have been |
| 1814 | incorporated into the main FreeRTOS zip file download. |
| 1815 | + The official FreeRTOS Renesas RL78 port and demo application have been |
| 1816 | incorporated into the main FreeRTOS zip file download. |
| 1817 | + The official FreeRTOS Freescale Kinetis K60 tower demo application has |
| 1818 | been incorporated into the main FreeRTOS zip file download. This includes |
| 1819 | an embedded web server example. |
| 1820 | + A new Microblaze V8 port layer has been created to replace the older, now |
| 1821 | deprecated, port layer. The V8 port supports V8.x of the Microblaze IP, |
| 1822 | including exceptions, caches, and the floating point unit. A new |
| 1823 | Microblaze demo has also been added to demonstrate the new Microblaze V8 |
| 1824 | port layer. The demo application was created using V13.1 of the Xilinx |
| 1825 | EDK, and includes a basic embedded web server that uses lwIP V1.4.0. |
| 1826 | + The official FreeRTOS Fujitsu FM3 MB9A310 demo application has been |
| 1827 | incorporated into the main FreeRTOS zip file download. Projects are |
| 1828 | provided for both the IAR and Keil toolchains. |
| 1829 | |
| 1830 | |
| 1831 | API additions: |
| 1832 | |
| 1833 | + xTaskGetIdleTaskHandle() has been added. |
| 1834 | + xTaskGetTimerDaemonTaskHandle() has been added. |
| 1835 | + pcTaskGetTaskName() has been added. |
| 1836 | + vSemaphoreDelete() macro has been added to make it obvious how to delete |
| 1837 | a semaphore. In previous versions vQueueDelete() had to be used. |
| 1838 | + vTaskCleanUpResources() has been removed. It has been obsolete for a |
| 1839 | while. |
| 1840 | + portPOINTER_SIZE_TYPE has been introduced to prevent compiler warnings |
| 1841 | being generated when the size of a pointer does not match the size of |
| 1842 | the stack type. This will (has already) be used in new ports, but will |
| 1843 | not be retrofitted to existing ports until the existing port itself is |
| 1844 | updated. |
| 1845 | |
| 1846 | Other updates and news: |
| 1847 | |
| 1848 | + The core files have all been modified to tighten the coding standard even |
| 1849 | further. These are style, not functional changes. |
| 1850 | + All ARM7 port layers have been slightly modified to prevent erroneous |
| 1851 | assert() failures when tasks are created and configASSERT() is defined. |
| 1852 | + All ARM IAR projects have been updated to build with the latest V6.2.x |
| 1853 | versions of the IAR Embedded Workbench for ARM tools (EWARM). This was |
| 1854 | necessary due to a change in the way EWARM uses the CMSIS libraries. |
| 1855 | + The PIC32 port layer has been updated in preparation for V2 of the C32 |
| 1856 | compiler. |
| 1857 | + The old Virtex-4 Microblaze demo has been marked as deprecated. Please |
| 1858 | use the brand new Spartan-6 port and demo in its place. |
| 1859 | + The bones of a new generic command interpreter is located in |
| 1860 | FreeRTOS/Demo/Common/Utils/CommandInterpreter.c. This is still a work in |
| 1861 | progress, and not documented. It is however already in use. It will be |
| 1862 | documented in full when the projects that are already using it are |
| 1863 | completed. |
| 1864 | + A couple of new standard demos have been included. First, a version of |
| 1865 | flop.c called sp_flop.c. This is similar to flop.c, but uses single |
| 1866 | precision floats in place of double precision doubles. This allows the |
| 1867 | for testing ports to processors that have only single precision floating |
| 1868 | point units, and revert to using emulated calculations whenever a double |
| 1869 | is used. Second, comtest_strings.c has been included to allow the test |
| 1870 | of UART drivers when an entire string is transmitted at once. The |
| 1871 | previous comtest.c only used single character transmission and reception. |
| 1872 | + lwIP V1.4.0 is now included in the FreeRTOS/Demo/Common directory, and |
| 1873 | used by a couple of new demos. |
| 1874 | |
| 1875 | Changes between V7.0.0 and V7.0.1 released May 13 2011 |
| 1876 | |
| 1877 | + Added a Fujitsu FM3 demo application for both the IAR and Keil tool |
| 1878 | chains. |
| 1879 | + Added a SmartFusion demo application for all of the IAR, Keil and |
| 1880 | SoftConsole (GCC/Eclipse) tool chains. |
| 1881 | + Updated the RX600 port and demo applications to take into account the |
| 1882 | different semantics required when using the latest (V1.0.2.0) version of |
| 1883 | the Renesas compiler. |
| 1884 | + Modified the RX600 Ethernet driver slightly to make it more robust under |
| 1885 | heavy load, and updated the uIP handling task to make use of the FreeRTOS |
| 1886 | software timers. |
| 1887 | + Slightly changed the PIC32 port layer to move an ehb instruction in line |
| 1888 | with the recommendations of the MIPS core manual, and ensure 8 byte stack |
| 1889 | alignment is truly always obtained. |
| 1890 | + Changed the behaviour when tasks are suspended before the scheduler has |
| 1891 | been started. Before, there needed to be at least one task that was not |
| 1892 | in the suspended state. This is no longer the case. |
| 1893 | |
| 1894 | Changes between V6.1.1 and V7.0.0 released April 8 2011 |
| 1895 | |
| 1896 | FreeRTOS V7.0.0 is backward compatible with FreeRTOS V6.x.x |
| 1897 | |
| 1898 | Main changes: |
| 1899 | |
| 1900 | + Introduced a new software timer implementation. |
| 1901 | + Introduced a new common demo application file to exercise the new timer |
| 1902 | implementation. |
| 1903 | + Updated the Win32/MSVC simulator project to include the new software timer |
| 1904 | demo tasks and software timer tick hook test. Much simpler software timer |
| 1905 | demonstrations are included in the demo projects for both of the new ports |
| 1906 | (MSP430X with CCS4 and STM32 with TrueStudio). |
| 1907 | + Various enhancements to the kernel implementation in tasks.c. These are |
| 1908 | transparent to users and do not effect the pre-existing API. |
| 1909 | + Added calls to configASSERT() within the kernel code. configASSERT() is |
| 1910 | functionally equivalent to the standard C assert() macro, but does not |
| 1911 | rely on the compiler providing assert.h. |
| 1912 | |
| 1913 | Other changes: |
| 1914 | |
| 1915 | + Updated the MSP430X IAR port and demo project to include support for the |
| 1916 | medium memory model. |
| 1917 | + Added a demo project for the MSP430X that targets the MSP430X Discovery |
| 1918 | board and uses the Code Composer Studio 4 tools. This demo includes use |
| 1919 | of the new software timer implementation. |
| 1920 | + Added an STM32F100RB demo project that targets the STM32 Discovery Board |
| 1921 | and uses the TrueStudio Eclipse based IDE from Atollic. |
| 1922 | + Removed some compiler warnings from the PSoC demo application. |
| 1923 | + Updated the PIC32 port layer to ensure the |
| 1924 | configMAX_SYSCALL_INTERRUPT_PRIORITY constant works as expected no matter |
| 1925 | what its value is (within the valid range set by the microcontroller |
| 1926 | kernel). |
| 1927 | + Updated the PIC24, dsPIC and PIC32 projects so they work with the latest |
| 1928 | MPLAB compiler versions from Microchip. |
| 1929 | + Various cosmetic changes to prepare for a standards compliance statement |
| 1930 | that will be published after the software release. |
| 1931 | |
| 1932 | |
| 1933 | Changes between V6.1.0 and V6.1.1 released January 14 2011 |
| 1934 | |
| 1935 | + Added two new Windows simulator ports. One uses the free Microsoft Visual |
| 1936 | Studio 2010 express edition, and the other the free MingW/Eclipse |
| 1937 | environment. Demo projects are provided for both. |
| 1938 | + Added three demo projects for the PSoC 5 (CYAC5588). These are for the |
| 1939 | GCC, Keil, and RVDS build tools, and all use the PSoC Creator IDE. |
| 1940 | + Added a demo for the low power STM32L152 microcontroller using the IAR |
| 1941 | Embedded Workbench. |
| 1942 | + Added a new port for the MSP430X core using the IAR Embedded Workbench. |
| 1943 | + Updated all the RX62N demo projects that target the Renesas Demonstration |
| 1944 | Kit (RDK) to take into account the revered LED wiring on later hardware |
| 1945 | revisions, and the new J-Link debug interface DLL. |
| 1946 | + Updated all the RX62N demo projects so the IO page served by the example |
| 1947 | embedded web server works with all web browsers. |
| 1948 | + Updated the Red Suite projects to work with the up coming Red Suite |
| 1949 | release, and to use a more recent version of the CMSIS libraries. |
| 1950 | + Added the traceTAKE_MUTEX_RECURSIVE_FAILED() trace macro. |
| 1951 | + Removed the (pointless) parameter from the traceTASK_CREATE_FAILED() |
| 1952 | trace macro. |
| 1953 | + Introduced the portALT_GET_RUN_TIME_COUNTER_VALUE() macro to compliment |
| 1954 | the already existing portGET_RUN_TIME_COUNTER_VALUE(). This allows for |
| 1955 | more flexibility in how the time base for the run time statistics feature |
| 1956 | can be implemented. |
| 1957 | + Added a "cpsie i" instruction before the "svc 0" instruction used to start |
| 1958 | the scheduler in each of the Cortex M3 ports. This is to ensure that |
| 1959 | interrupts are globally enabled prior to the "svc 0" instruction being |
| 1960 | executed in cases where interrupts are left disabled by the C start up |
| 1961 | code. |
| 1962 | + Slight optimisation in the run time stats calculation. |
| 1963 | |
| 1964 | Changes between V6.0.5 and V6.1.0 released October 6 2010 |
| 1965 | |
| 1966 | + Added xTaskGetTickCountFromISR() function. |
| 1967 | + Modified vTaskSuspend() to allow tasks that have just been created to be |
| 1968 | immediately suspended even when the kernel has not been started. This |
| 1969 | allows them to effectively start in the Suspended state - a feature that |
| 1970 | has been asked for on numerous occasions to assist with initialisation |
| 1971 | procedures. |
| 1972 | + Added ports for the Renesas RX62N using IAR, GCC and Renesas tool suites. |
| 1973 | + Added a STM32F103 demo application that uses the Rowley tools. |
| 1974 | + Under specific conditions xFreeBytesRemaining within heap_2.c could end up |
| 1975 | with an incorrect value. This has been fixed. |
| 1976 | + xTaskCreateGeneric() has a parameter that can be used to pass the handle |
| 1977 | of the task just created out to the calling task. The assignment to this |
| 1978 | parameter has been moved to ensure it is assigned prior to the newly |
| 1979 | created having any possibility of executing. This takes into account the |
| 1980 | case where the assignment is made to a global variable that is accessed by |
| 1981 | the newly created task. |
| 1982 | + Fixed some build time compiler warnings in various FreeTCPIP (based on |
| 1983 | uIP) files. |
| 1984 | + Fixed some build time compiler warnings in Demo/Common/Minimal/IntQueue.c. |
| 1985 | |
| 1986 | Changes between V6.0.4 and V6.0.5 released May 17 2010 |
| 1987 | |
| 1988 | + Added port and demo application for the Cortus APS3 processor. |
| 1989 | |
| 1990 | Changes between V6.0.3 and V6.0.4 released March 14 2010 |
| 1991 | |
| 1992 | + All the contributed files that were located in the Demo/Unsupported_Demos |
| 1993 | directory have been removed. These files are instead now available in the |
| 1994 | new Community Contributions section of the FreeRTOS website. See |
| 1995 | https://www.FreeRTOS.org/RTOS-contributed-ports.html |
| 1996 | + The project file located in the Demo/CORTEX_STM32F107_GCC_Rowley directory |
| 1997 | has been upgraded to use V2.x of the Rowley Crossworks STM32 support |
| 1998 | package. |
| 1999 | + An initial Energy Micro EFM32 demo has been included. This will be |
| 2000 | updated over the coming months to make better use of the low power modes |
| 2001 | the EFM32 provides. |
| 2002 | |
| 2003 | Changes between V6.0.2 and V6.0.3 released February 26 2010 |
| 2004 | |
| 2005 | + SuperH SH7216 (SH2A-FPU) port and demo application added. |
| 2006 | + Slight modification made to the default implementation of |
| 2007 | pvPortMallocAligned() and vPortFreeAligned() macros so by default they |
| 2008 | just call pvPortMalloc() and vPortFree(). The macros are only needed to |
| 2009 | be defined when a memory protection unit (MPU) is being used - and then |
| 2010 | only depending on other configuration settings. |
| 2011 | |
| 2012 | Changes between V6.0.1 and V6.0.2 released January 9th 2010 |
| 2013 | |
| 2014 | + Changed all GCC ARM 7 ports to use 0 as the SWI instruction parameter. |
| 2015 | Previously the parameter was blank and therefore only an implicit 0 but |
| 2016 | newer GCC releases do not permit this. |
| 2017 | + Updated IAR SAM7S and SAM7X ports to work with IAR V5.40. |
| 2018 | + Changed the stack alignment requirement for PIC32 from 4 bytes to 8 bytes. |
| 2019 | + Updated prvListTaskWithinSingleList() is it works on processors where the |
| 2020 | stack grows up from low memory. |
| 2021 | + Corrected some comments. |
| 2022 | + Updated the startup file for the RVDS LPC21xx demo. |
| 2023 | |
| 2024 | Changes between V6.0.0 and V6.0.1 released November 15th 2009 |
| 2025 | |
| 2026 | + Altered pxPortInitialiseStack() for all Cortex-M3 ports to ensure the |
| 2027 | stack pointer is where the compiler expects it to be when a task first |
| 2028 | starts executing. |
| 2029 | |
| 2030 | The following minor changes only effect the Cortex-M3 MPU port: |
| 2031 | |
| 2032 | + portRESET_PRIVILEGE() assembly macro updated to include a clobber list. |
| 2033 | + Added prototypes for all the privileged function wrappers to ensure no |
| 2034 | compile time warnings are generated no matter what the warning level |
| 2035 | setting. |
| 2036 | + Corrected the name of portSVC_prvRaisePrivilege to |
| 2037 | portSVC_RAISE_PRIVILEGE. |
| 2038 | + Added conditional compilation into xTaskGenericCreate() to prevent some |
| 2039 | compilers issuing warnings when portPRIVILEGE_BIT is defined as zero. |
| 2040 | |
| 2041 | |
| 2042 | Changes between V5.4.2 and V6.0.0 released October 16th 2009 |
| 2043 | |
| 2044 | FreeRTOS V6 is backward compatible with FreeRTOS V5.x. |
| 2045 | |
| 2046 | Main changes: |
| 2047 | |
| 2048 | + FreeRTOS V6 is the first version to include memory protection unit (MPU) |
| 2049 | support. Two ports now exist for the Cortex M3, the standard FreeRTOS |
| 2050 | which does not include MPU support, and FreeRTOS-MPU which does. |
| 2051 | + xTaskCreateRestricted() and vTaskAllocateMPURegions() API functions added |
| 2052 | in support of FreeRTOS-MPU. |
| 2053 | + Wording for the GPL exception has been (hopefully) clarified. Also the |
| 2054 | license.txt file included in the download has been fixed (the previous |
| 2055 | version contained some corruption). |
| 2056 | |
| 2057 | Other changes: |
| 2058 | |
| 2059 | + New API function xPortGetFreeHeapSize() added to heap_1.c and heap_2.c. |
| 2060 | + ARM7 GCC demo interrupt service routines wrappers have been modified to |
| 2061 | call the C portion using an __asm statement. This prevents the function |
| 2062 | call being inlined at higher optimisation levels. |
| 2063 | + ARM7 ports now automatically set the THUMB bit if necessary when |
| 2064 | setting up the initial stack of a task - removing the need for |
| 2065 | THUMB_INTERWORK to be defined. This also allows THUMB mode and ARM mode |
| 2066 | tasks to be mixed more easily. |
| 2067 | + All ARM7/9 ports now have portBYTE_ALIGNMENT set to 8 by default. |
| 2068 | + Various demo application project files have been updated to be up to date |
| 2069 | with the latest IDE versions. |
| 2070 | + The linker scripts used with command line GCC demos have been updated to |
| 2071 | include an eh_frame section to allow their use with the latest Yagarto |
| 2072 | release. Likewise the demo makefiles have been updated to include |
| 2073 | command line options to reduce or eliminate the eh_frame section all |
| 2074 | together. |
| 2075 | + The definition of portBYTE_ALIGNMENT_MASK has been moved out of the |
| 2076 | various memory allocation files and into the common portable.h header |
| 2077 | file. |
| 2078 | + Removed unnecessary use of portLONG, portSHORT and portCHAR. |
| 2079 | + Added LM3Sxxxx demo for Rowley CrossWorks. |
| 2080 | + Posix simulator has been upgraded - see the corresponding WEB page on the |
| 2081 | FreeRTOS.org site. |
| 2082 | |
| 2083 | |
| 2084 | Changes between V5.4.1 and V5.4.2 released August 9th 2009 |
| 2085 | |
| 2086 | + Added a new port and demo app for the Altera Nios2 soft core. |
| 2087 | + Added LPC1768 demo for IAR. |
| 2088 | + Added a USB CDC demo to all LPC1768 demos (Code Red, CrossWorks and IAR). |
| 2089 | + Changed clock frequency of LPC1768 demos to 99MHz. |
| 2090 | |
| 2091 | Changes between V5.4.0 and V5.4.1 released July 25th 2009 |
| 2092 | |
| 2093 | + New hook function added. vApplicationMallocFailedHook() is (optionally) |
| 2094 | called if pvPortMalloc() returns NULL. |
| 2095 | + Additional casting added to xTaskCheckForTimeOut(). This prevents |
| 2096 | problems that can arise should configUSE_16_BIT_TICKS be set to 1 on a |
| 2097 | 32 bit architecture (which would probably be a mistake, anyway). |
| 2098 | + Corrected the parameter passed to NVIC_SetPriority() to set the MAC |
| 2099 | interrupt priority in both LPC1768 demos. |
| 2100 | + Decreased the default setting of configMINIMAL_STACK_SIZE in the PIC32 |
| 2101 | demo application to ensure the heap space was not completely consumed |
| 2102 | before the scheduler was started. |
| 2103 | |
| 2104 | Changes between V5.3.1 and V5.4.0 released July 13th 2009 |
| 2105 | |
| 2106 | + Added Virtex5 / PPC440 port and demos. |
| 2107 | + Replaced the LPC1766 Red Suite demo with an LPC1768 Red Suite demo. The |
| 2108 | original demo was configured to use engineering samples of the CPU. The |
| 2109 | new demo has an improved Ethernet driver. |
| 2110 | + Added LPC1768 Rowley demo with zero copy Ethernet driver. |
| 2111 | + Reworked byte alignment code to ensure 8 byte alignment works correctly. |
| 2112 | + Set configUSE_16_BIT_TICKS to 0 in the PPC405 demo projects. |
| 2113 | + Changed the initial stack setup for the PPC405 to ensure the small data |
| 2114 | area pointers are setup correctly. |
| 2115 | |
| 2116 | Changes between V5.3.0 and V5.3.1 released June 21st 2009 |
| 2117 | |
| 2118 | + Added ColdFire V1 MCF51CN128 port and WEB server demo. |
| 2119 | + Added STM32 Connectivity Line STM32107 Cortex M3 WEB server demo. |
| 2120 | + Changed the Cortex M3 port.c asm statements to __asm so it can be |
| 2121 | compiled using Rowley CrossWorks V2 in its default configuration. |
| 2122 | + Updated the Posix/Linux simulator contributed port. |
| 2123 | |
| 2124 | Changes between V5.2.0 and V5.3.0 released June 1st 2009 |
| 2125 | |
| 2126 | Main changes: |
| 2127 | |
| 2128 | + Added new (optional) feature that gathers statistics on the amount of CPU |
| 2129 | time used by each task. |
| 2130 | + Added a new demo application for the Atmel AT91SAM3U Cortex-M3 based |
| 2131 | microcontroller. |
| 2132 | + Added a new demo application for the NXP LPC1766 Cortex-M3 based |
| 2133 | microcontroller. |
| 2134 | + Added a contributed port/demo that allows FreeRTOS to be 'simulated' in a |
| 2135 | Linux environment. |
| 2136 | |
| 2137 | Minor changes: |
| 2138 | + Updated the Stellaris uIP WEB server demos to include the new run time |
| 2139 | statistics gathering feature - and include a served WEB page that |
| 2140 | presents the information in a tabular format. |
| 2141 | + Added in the lwIP port layer for the Coldfire MCF52259. |
| 2142 | + Updated the CrossWorks LPC2368 WEB server to include an image in the |
| 2143 | served content. |
| 2144 | + Changed some of the timing in the initialisation of the LPC2368 MAC to |
| 2145 | permit its use on all part revisions. |
| 2146 | + Minor modifications to the core uIP code to remove some compiler warnings. |
| 2147 | + Added xTaskGetApplicationTaskTag() function and updated the OpenWatcom |
| 2148 | demo to make use of the new function. |
| 2149 | + Added contributed demos for AVR32 AP7000, STM32 Primer 2 and STM32 using |
| 2150 | Rowley Crossworks. |
| 2151 | + Heap_1.c and Heap_2.c used to define structures for the purpose of data |
| 2152 | alignment. These have been converted to unions to save a few bytes of |
| 2153 | RAM that would otherwise be wasted. |
| 2154 | + Remove the call to strncpy() used to copy the task name into the TCB when |
| 2155 | the maximum task name is configured to be 1 byte long. |
| 2156 | |
| 2157 | Changes between V5.1.2 and V5.2.0 released March 14th 2009 |
| 2158 | |
| 2159 | + Optimised the queue send and receive functions (also used by semaphores). |
| 2160 | + Replaced the standard critical sections used to protect BIOS calls in the |
| 2161 | PC port to instead use scheduler locks. This is because the BIOS calls |
| 2162 | always return with interrupts enabled. |
| 2163 | + Corrected unclosed comments in boot.s. |
| 2164 | |
| 2165 | Changes between V5.1.1 and V5.1.2 released February 9th 2009 |
| 2166 | |
| 2167 | + Added NEC V850ES port and demo. |
| 2168 | + Added NEC 78K0R port and demo. |
| 2169 | + Added MCF52259 port and demo. |
| 2170 | + Added the AT91SAM9XE port and demo. |
| 2171 | + Updated the MCF52233 FEC driver to work around a silicon bug that |
| 2172 | prevents the part auto negotiating some network parameters. |
| 2173 | + Minor modifications to the MCF52233 makefile to permit it to be used |
| 2174 | on Linux hosts. |
| 2175 | + Updated the STM32 primer files to allow them to be built with the latest |
| 2176 | version of the RIDE tools. |
| 2177 | + Updated the threads.js Java script used for kernel aware debugging in |
| 2178 | the Rowley CrossWorks IDE. |
| 2179 | |
| 2180 | |
| 2181 | Changes between V5.1.0 and V5.1.1 released November 20, 2008 |
| 2182 | |
| 2183 | + Added Coldfire MCF52233 WEB server demo using GCC and Eclipse. |
| 2184 | + Added IAR MSP430 port and demo. |
| 2185 | + Corrected several compiler time issues that had crept in as tool versions |
| 2186 | change. |
| 2187 | + Included FreeRTOS-uIP - a faster uIP. This is not yet complete. |
| 2188 | |
| 2189 | Changes between V5.0.4 and V5.1.0 released October 24, 2008 |
| 2190 | |
| 2191 | + Added a new port and demo application for the ColdFire V2 core using the |
| 2192 | CodeWarrior development tools. |
| 2193 | + Replaced the ARM7 demo that used the old (and now no longer supported) |
| 2194 | Keil compiler with a new port that uses the new Keil/RVDS combo. |
| 2195 | + Stack overflow checking now works for stacks that grow up from low |
| 2196 | memory (PIC24 and dsPIC). |
| 2197 | + BUG FIX - set the PIC32 definition of portSTACK_GROWTH to the correct |
| 2198 | value of -1. |
| 2199 | + MSP430 port layers have been updated to permit tasks to place the |
| 2200 | microcontroller into power down modes 1 to 3. The demo applications have |
| 2201 | likewise been updated to demonstrate the new feature. |
| 2202 | + Replaced the two separate MSP430/Rowley port layers with a single and more |
| 2203 | flexible version. |
| 2204 | + Added more contributed ports, including ports for NEC and SAM9 |
| 2205 | microcontrollers. |
| 2206 | + Changed the linker script used in the LPC2368 Eclipse demo. |
| 2207 | |
| 2208 | Changes between V5.0.3 and V5.0.4 released September 22, 2008 |
| 2209 | |
| 2210 | + Completely re-written port for ColdFire GCC. |
| 2211 | + Bug fix: All Cortex M3 ports have a minor change to the code that sets |
| 2212 | the pending interrupt. |
| 2213 | + Some header files require that FreeRTOS.h be included prior to their |
| 2214 | inclusion. #error message have been added to all such header file |
| 2215 | informing users to the cause of the compilation error should the headers |
| 2216 | not be included in the correct order. |
| 2217 | |
| 2218 | Changes between V5.0.2 and V5.0.3 released July 31, 2008 |
| 2219 | |
| 2220 | Changes relating to the Cortex M3: |
| 2221 | |
| 2222 | + Added configMAX_SYSCALL_INTERRUPT_PRIORITY usage to all the Cortex M3 |
| 2223 | ports and demos. See the port documentation pages on the FreeRTOS.org |
| 2224 | WEB site for full usage information. |
| 2225 | + Improved efficiency of Cortex M3 port even further. |
| 2226 | + Ensure the Cortex M3 port works no matter where the vector table is |
| 2227 | located. |
| 2228 | + Added the IntQTimer demo/test tasks to a demo project for each CM3 port |
| 2229 | (Keil, GCC and IAR) to test the new configMAX_SYSCALL_INTERRUPT_PRIORITY |
| 2230 | functionality. |
| 2231 | + Added the mainINCLUDE_WEB_SERVER definition to the LM3SXXXX IAR and Keil |
| 2232 | projects to allow the WEB server to be conditionally excluded from the |
| 2233 | build and therefore allow use of the KickStart (code size limited) |
| 2234 | compiler version. |
| 2235 | |
| 2236 | Other changes: |
| 2237 | |
| 2238 | + Moved the PIC24 and dsPIC versions of vPortYield() from the C file to |
| 2239 | an assembly file to allow use with all MPLAB compiler versions. This also |
| 2240 | allows the omit-frame-pointer optimisation to be turned off. |
| 2241 | |
| 2242 | Changes between V5.0.0 and V5.0.2 released May 30, 2008 |
| 2243 | |
| 2244 | + Updated the PIC32 port to allow queue API calls to be used from |
| 2245 | interrupts above the kernel interrupt priority, and to allow full |
| 2246 | interrupt nesting. Task stack usages has also been reduced. |
| 2247 | + Added a new PowerPC port that demonstrates how the trace macros can be |
| 2248 | used to allow the use of a floating point co-processor. The |
| 2249 | traceTASK_SWITCHED_OUT() and traceTASK_SWITCHED_INT() macros are used to |
| 2250 | save and restore the floating point context respectively for those tasks |
| 2251 | that actually use floating point operations. |
| 2252 | + BUG FIX: The first PPC405 port contained a bug in that it did not leave |
| 2253 | adequate space above the stack for the backchain to be saved when a task |
| 2254 | started to execute for the first time. |
| 2255 | + Updated queue.c to add in the means to allow interrupt nesting and for |
| 2256 | queue API functions to be called from interrupts that have a priority |
| 2257 | above the kernel priority. This is only supported on PIC32 ports thus |
| 2258 | far. |
| 2259 | + Fixed the compiler warnings that were generated when the latest version |
| 2260 | of WinAVR was used. |
| 2261 | + Remove all inline usage of 'inline' from the core kernel code. |
| 2262 | + Added the queue registry feature. The queue registry is provided as a |
| 2263 | means for kernel aware debuggers to locate queue definitions. It has no |
| 2264 | purpose unless you are using a kernel aware debugger. The queue registry |
| 2265 | will only be used when configQUEUE_REGISTRY_SIZE is greater than zero. |
| 2266 | + Added the ST Cortex-M3 drivers into the Demo/Common/Drivers directory to |
| 2267 | prevent them from having to be included in multiple demos. |
| 2268 | + Added a Keil STM32 demo application. |
| 2269 | + Changed the blocktim.c test files as it is no longer legitimate for all |
| 2270 | ports to call queue API functions from within a critical section. |
| 2271 | + Added the IntQueue.c test file to test the calling of queue API functions |
| 2272 | from different interrupt priority levels, and test interrupt nesting. |
| 2273 | |
| 2274 | Changes between V5.0.0 and V5.0.1 |
| 2275 | |
| 2276 | + V5.0.1 was a customer specific release. |
| 2277 | |
| 2278 | Changes between V4.8.0 and V5.0.0 released April 15, 2008 |
| 2279 | |
| 2280 | *** VERY IMPORTANT INFORMATION ON UPGRADING TO FREERTOS.ORG V5.0.0 *** |
| 2281 | |
| 2282 | The parameters to the functions xQueueSendFromISR(), xQueueSendToFrontFromISR(), |
| 2283 | xQueueSendToBackFromISR() and xSemaphoreGiveFromISR() have changed. You must |
| 2284 | update all calls to these functions to use the new calling convention! Your |
| 2285 | compiler might not issue any type mismatch warnings! |
| 2286 | |
| 2287 | |
| 2288 | Other changes: |
| 2289 | |
| 2290 | + Support added for the new Luminary Micro LM3S3768 and LM3S3748 Cortex-M3 |
| 2291 | microcontrollers. |
| 2292 | + New task hook feature added. |
| 2293 | + PowerPC demo updated to use version 10.1 of the Xilinx EDK. |
| 2294 | + Efficiency gains within the PIC32 port layer. |
| 2295 | |
| 2296 | Changes between V4.7.2 and V4.8.0 released March 26 2008 |
| 2297 | |
| 2298 | + Added a Virtex4 PowerPC 405 port and demo application. |
| 2299 | + Added optional stack overflow checking and new |
| 2300 | uxTaskGetStackHighWaterMark() function. |
| 2301 | + Added new xQueueIsQueueEmptyFromISR(), xQueueIsQueueFullFromISR() and |
| 2302 | uxQueueMessagesWaitingFromISR() API functions. |
| 2303 | + Efficiency improvements to the Cortex-M3 port layer. NOTE: This |
| 2304 | requires that an SVC handler be installed in the application. |
| 2305 | + Efficiency improvements to the queue send and receive functions. |
| 2306 | + Added new trace macros. These are application definable to provide |
| 2307 | a flexible trace facility. |
| 2308 | + Implemented the configKERNEL_INTERRUPT_PRIORITY within the Keil Cortex |
| 2309 | M3 port layer (bringing it up to the same standard as the IAR and GCC |
| 2310 | versions). |
| 2311 | + Ports that used the arm-stellaris-eabi-gcc tools have been converted to |
| 2312 | use the arm-non-eabi-gcc tools. |
| 2313 | |
| 2314 | Changes between V4.7.1 and V4.7.2 released February 21, 2008 |
| 2315 | |
| 2316 | + Added Fujitsu MB91460 port and demo. |
| 2317 | + Added Fujitsu MB96340 port and demo. |
| 2318 | + Tidied up the capitalisation of include files to facilitate builds on |
| 2319 | Linux hosts. |
| 2320 | + Removed some redundant casting that was generating warnings - but was |
| 2321 | included to remove warnings on other compilers. |
| 2322 | |
| 2323 | Changes between V4.7.0 and V4.7.1 released February 3, 2008 |
| 2324 | |
| 2325 | + Updated all IAR ARM projects to use V5.11 of the IAR Embedded Workbench |
| 2326 | for ARM. |
| 2327 | + Introduced recursive semaphore feature. |
| 2328 | + Updated LPC2368 demos to take into account silicon bugs in old chip |
| 2329 | revisions. |
| 2330 | + Updated STR9 uIP port to manually set the net mask and gateway addresses. |
| 2331 | + Updating demos to allow more to run with the co-operative scheduler. |
| 2332 | + Fixed co-operative scheduler behaviour upon the occurrence of a tick |
| 2333 | interrupt while the scheduler was suspended. |
| 2334 | + Updated documentation contained within semphr.h. |
| 2335 | + ARM7 GCC ports no longer use the IRQ attribute. |
| 2336 | |
| 2337 | Changes between V4.6.1 and V4.7.0 released December 6, 2007 |
| 2338 | |
| 2339 | + Introduced the counting semaphore macros and demo source files. The |
| 2340 | Open Watcom PC project has been updated to include the new demo. See |
| 2341 | the online documentation for more information. |
| 2342 | + Introduced the 'alternative' queue handling API and demo source files. |
| 2343 | The Open Watcom PC project has been updated to include the new demo |
| 2344 | source files. See the online documentation for more information. |
| 2345 | + Added AT91SAM7X Eclipse demo project. |
| 2346 | + Added the STM32 primer demo project for the GCC compiler and Ride IDE. |
| 2347 | + Removed the .lock files that were mistakenly included in the V4.6.1 |
| 2348 | eclipse workspaces. |
| 2349 | |
| 2350 | Changes between V4.6.0 and V4.6.1 released November 5 2007 |
| 2351 | |
| 2352 | + Added support for the MIPS M4K based PIC32. |
| 2353 | + Added 'extern "C"' to all the header files to facilitate use with C++. |
| 2354 | |
| 2355 | Changes between V4.5.0 and V4.6.0 released October 28 2007 |
| 2356 | |
| 2357 | + Changed the method used to force a context switch within an ISR for the |
| 2358 | ARM7/9 GCC ports only. The portENTER_SWITCHING_ISR() and |
| 2359 | portEXIT_SWITCHING_ISR() macros are no longer supported. This is to |
| 2360 | ensure correct behaviour no matter which GCC version is used, with or |
| 2361 | without the -fomit-frame-pointer option, and at all optimisation levels. |
| 2362 | + Corrected the prototype for xQueueGenericSend() within queue.h. |
| 2363 | |
| 2364 | Changes between V4.4.0 and V4.5.0 released September 17 2007 |
| 2365 | |
| 2366 | + Added the xQueueSendToFront(), xQueueSendToBack() and xQueuePeek() |
| 2367 | functionality. These should now be used in preference to the old |
| 2368 | xQueueSend() function - which is maintained for backward compatibility. |
| 2369 | + Added Mutex functionality. The behaviour of mutexes is subtly different |
| 2370 | to the already existing binary semaphores as mutexes automatically |
| 2371 | include a priority inheritance mechanism. |
| 2372 | + Added the GenQTest.c and QPeek.c to test and demonstrate the behaviour |
| 2373 | of the new functionality. |
| 2374 | + Updated the LM3Sxxxx and PC ports to include the new GenQTest.c and |
| 2375 | QPeek.c files. |
| 2376 | + Updated the GCC port for the Cortex M3 to include the |
| 2377 | configKERNEL_INTERRUPT_PRIORITY functionality. This was previously only |
| 2378 | included in the IAR port. |
| 2379 | + Optimised the GCC and IAR port layer code - specifically the context |
| 2380 | switch code. |
| 2381 | + Consolidated the LM3Sxxxx EK demos for all development tools into a |
| 2382 | single project that automatically detects which version of the EK the |
| 2383 | application is executing on. |
| 2384 | + Added Eclipse support for LM3Sxxxx evaluation kits. |
| 2385 | + Added Eclipse support for the Keil LPC2368 evaluation kit. |
| 2386 | + Added the Demo/Drivers directory to hold code that is common to multiple |
| 2387 | demo application projects. |
| 2388 | + Included some minor bug fixes in the uIP 1.0 code. |
| 2389 | + Added an lwIP demo for the STR9 - thanks ST for assistance. |
| 2390 | + Updated the AVR32 port to ensure correct behaviour with full compiler |
| 2391 | optimisation. |
| 2392 | + Included binaries for OpenOCD FTDI and parallel port interfaces. |
| 2393 | |
| 2394 | Changes between V4.4.0 and V4.3.1 released July 31, 2007 |
| 2395 | |
| 2396 | + Added AVR32 UC3B demo application. |
| 2397 | + Updated AVR32 UC3A port and demo applications. |
| 2398 | + Added IAR lwIP demo for AVR32 UC3A. |
| 2399 | + Updated listGET_OWNER_OF_NEXT_ENTRY() to assist compiler optimisation |
| 2400 | (thanks Niu Yong for making the suggestion). |
| 2401 | + Added xTaskGetSchedulerState() API function. |
| 2402 | + BUG FIX: Corrected behaviour when tasks that are blocked indefinitely |
| 2403 | have their block time adjusted (within xQueueSend() and xQueueReceive()), |
| 2404 | and are the subject of a call the vTaskResume() when they are not |
| 2405 | actually in the Suspended state (thanks Dan Searles for reporting the |
| 2406 | issues). |
| 2407 | |
| 2408 | |
| 2409 | Changes between V4.3.0 and V4.3.1 released June 11, 2007 |
| 2410 | |
| 2411 | + Added STMicroelectronics STM32 Cortex-M3 demo application. |
| 2412 | + Updated ustdlib.c for the GCC LM3S6965 demo. |
| 2413 | |
| 2414 | Changes between V4.2.1 and V4.3.0 released June 5, 2007 |
| 2415 | |
| 2416 | + Introduced configKERNEL_INTERRUPT_PRIORITY to the IAR Cortex-M3, PIC24 |
| 2417 | and dsPIC ports. See the LM3S6965 and PIC24 demo application |
| 2418 | documentation pages for more information. |
| 2419 | + Updated the PIC24 and dsPIC demos to build with V3.0 of the PIC30 GCC |
| 2420 | tools, and changed the demo applications. |
| 2421 | + Added demos for the new Ethernet and CAN enabled Luminary Micro Stellaris |
| 2422 | microcontrollers. |
| 2423 | + Corrected bug in uIP the demos that prevented frames of approximately 1480 |
| 2424 | bytes and over from being transmitted. |
| 2425 | + Included the LPC2368/uIP/Rowley demo into the main FreeRTOS.org |
| 2426 | download. |
| 2427 | + Update to WizC PIC18 port to permit its use with version 14 of the |
| 2428 | compiler. Thanks Marcel! |
| 2429 | |
| 2430 | Changes between V4.2.1 and V4.2.0 released April 2, 2007 |
| 2431 | |
| 2432 | + Added AVR32 AT32UC3A ports for GCC and IAR. |
| 2433 | + Added -fomit-frame-pointer option to lwIP SAM7X demo makefile. |
| 2434 | + Moved location of call to LCD_Init() in STR9 demo to ensure it is only |
| 2435 | called after the scheduler has been started. |
| 2436 | |
| 2437 | Changes between V4.1.3 and V4.2.0 released February 8, 2007 |
| 2438 | |
| 2439 | + Changes to both task.c and queue.c as a result of testing performed on |
| 2440 | the SafeRTOS code base. |
| 2441 | + Added Cortex-M3 LM3S811 demos for GCC and IAR tools. |
| 2442 | |
| 2443 | Changes between V4.1.2 and V4.1.3 released November 19, 2006 |
| 2444 | |
| 2445 | + Added STR750 ARM7 port using the Raisonance RIDE/GCC tools. |
| 2446 | + Added -fomit-frame-pointer option to Rowley ARM7 demos as work around |
| 2447 | to GCC bug at some optimisation levels. |
| 2448 | + Altered the way the heap is defined in the LM3S811 Keil demo to prevent |
| 2449 | the RAM usage from counting toward the code size limit calculation. |
| 2450 | + CO-ROUTINE BUG FIX: Removed the call to prvIsQueueEmpty from within |
| 2451 | xQueueCRReceive as it exited with interrupts enabled. Thanks Paul Katz. |
| 2452 | + Tasks that block on events with a timeout of portMAX_DELAY are now |
| 2453 | blocked indefinitely if configINCLUDE_vTaskSuspend is defined. |
| 2454 | Previously portMAX_DELAY was just the longest block time possible. This |
| 2455 | is still the case if configINCLUDE_vTaskSuspend is not defined. |
| 2456 | + Minor changes to some demo application files. |
| 2457 | |
| 2458 | Changes between V4.1.1 and V4.1.2 released October 21, 2006 |
| 2459 | |
| 2460 | + Added 16bit PIC ports and demos. |
| 2461 | + Added STR750 port and demo. |
| 2462 | |
| 2463 | |
| 2464 | Changes between V4.1.0 and V4.1.1 released September 24, 2006 |
| 2465 | |
| 2466 | + Added the Luminary Micro Stellaris LM3S811 demo application. |
| 2467 | |
| 2468 | Changes between V4.0.5 and V4.1.0 released August 28, 2006 |
| 2469 | |
| 2470 | + Prior to V4.1.0, under certain documented circumstances, it was possible |
| 2471 | for xQueueSend() and xQueueReceive() to return without having completed |
| 2472 | and without their block time expiring. The block time effectively |
| 2473 | stated a maximum block time, and the return value of the function needed |
| 2474 | to be checked to determine the reason for returning. This is no longer |
| 2475 | the case as the functions will only return once the block time has |
| 2476 | expired or they are able to complete their operation. It is therefore no |
| 2477 | longer necessary to wrap calls within loops. |
| 2478 | + Changed the critical section handling in the IAR AVR port to correct the |
| 2479 | behaviour when used with later compiler versions. |
| 2480 | + Added the LPC2138 CrossWorks demo into the zip file. Previously this was |
| 2481 | only available as a separate download. |
| 2482 | + Modified the AVR demo applications to demonstrate the use of co-routines. |
| 2483 | |
| 2484 | Changes between V4.0.4 and V4.0.5 released August 13, 2006 |
| 2485 | |
| 2486 | + Introduced API function xTaskResumeFromISR(). Same functionality as |
| 2487 | xTaskResume(), but can be called from within an interrupt service routine. |
| 2488 | + Optimised vListInsert() in the case when the wake time is the maximum |
| 2489 | tick count value. |
| 2490 | + Bug fix: The 'value' of the event list item is updated when the priority |
| 2491 | of a task is changed. Previously only the priority of the TCB itself was |
| 2492 | changed. |
| 2493 | + vTaskPrioritySet() and vTaskResume() no longer use the event list item. |
| 2494 | This has not been necessary since V4.0.1 when the xMissedYield handling |
| 2495 | was added. |
| 2496 | + Lowered the PCLK setting on the ARM9 STR9 demo from 96MHz to 48MHz. |
| 2497 | + When ending the scheduler - do not try to attempt a context switch when |
| 2498 | deleting the current task. |
| 2499 | + SAM7X EMAC drivers: Corrected the Rx frame length mask when obtaining |
| 2500 | the length from the rx descriptor. |
| 2501 | |
| 2502 | |
| 2503 | Changes between V4.0.3 and V4.0.4 released June 22, 2006 |
| 2504 | |
| 2505 | + Added a port and demo application for the STR9 ARM9 based processors from |
| 2506 | ST. |
| 2507 | + Slight optimisation to the vTaskPrioritySet() function. |
| 2508 | + Included the latest uIP version (1.0) in the demo/common/ethernet |
| 2509 | directory. |
| 2510 | |
| 2511 | Changes between V4.0.2 and V4.0.3 released June 7, 2006 |
| 2512 | |
| 2513 | + Added a port and demo application for the Cortex-M3 target using the IAR |
| 2514 | development tools. |
| 2515 | + The ARM Cortex-m3 Rowley projects have been updated to use V1.6 of the |
| 2516 | CrossStudio tools. |
| 2517 | + The heap size defined for the lwIP Rowley demo has been reduced so that |
| 2518 | the project will link correctly when using the command line GCC tools |
| 2519 | also. The makefile has also been modified to allow debugging. |
| 2520 | + The lwIP Rowley demo not includes a 'kernel aware' debug window. |
| 2521 | + The uIP Rowley project has been updated to build with V1.6 of CrossWorks. |
| 2522 | + The second set of tasks in the blockQ demo were created the wrong way |
| 2523 | around (inconsistent to the description in the file). This has been |
| 2524 | corrected. |
| 2525 | |
| 2526 | Changes between V4.0.1 and V4.0.2 released May 28, 2006 |
| 2527 | |
| 2528 | + Port and demo application added for the Tern Ethernet Engine controller. |
| 2529 | + Port and demo application added for MC9S12 using GCC, thanks to |
| 2530 | Jefferson "imajeff" Smith. |
| 2531 | + The function vTaskList() now suspends the scheduler rather than disabling |
| 2532 | interrupts during the creation of the task list. |
| 2533 | + Allow a task to delete itself by passing in its own handle. Previously |
| 2534 | this could only be done by passing in NULL. |
| 2535 | + Corrected the value passed to the WDG_PeriodValueConfig() library |
| 2536 | function in the STR71x demo. |
| 2537 | + The tick hook function is now called only within a tick isr. Previously |
| 2538 | it was also called when the tick function was called during the scheduler |
| 2539 | unlocking process. |
| 2540 | + The EMAC driver in the SAM7X lwIP demo has been made more robust as per |
| 2541 | the thread: https://sourceforge.net/forum/message.php?msg_id=3714405 |
| 2542 | + In the PC ports: Add function prvSetTickFrequencyDefault() to set the |
| 2543 | DOS tick back to its proper value when the scheduler exits. Thanks |
| 2544 | Raynald! |
| 2545 | + In the Borland x86 ports there was a mistake in the portFIRST_CONTEXT |
| 2546 | macro where the BP register was not popped from the stack correctly. The |
| 2547 | BP value would never get used so this did not cause a problem, but it has |
| 2548 | been corrected all the same. |
| 2549 | |
| 2550 | |
| 2551 | Changes between V4.0.0 and V4.0.1 released April 7 2006 |
| 2552 | |
| 2553 | + Improved the ARM CORTEX M3 ports so they now only have to service |
| 2554 | pendSV interrupts. |
| 2555 | + Added a Luminary Micro port and demo for use with Rowley CrossWorks. |
| 2556 | + Added the xMissedYield handling to tasks.c. |
| 2557 | |
| 2558 | Changes between V3.2.4 and V4.0.0 |
| 2559 | |
| 2560 | Major changes: |
| 2561 | |
| 2562 | + Added new RTOS port for Luminary Micros ARM CORTEX M3 microcontrollers. |
| 2563 | + Added new co-routine functionality. |
| 2564 | |
| 2565 | Other kernel changes: |
| 2566 | |
| 2567 | + An optional tick hook call is now included in the tick function. |
| 2568 | + Introduced the xMiniListItem structure and removed the list pxHead |
| 2569 | member in order to reduce RAM usage. |
| 2570 | + Added the following definitions to the FreeRTOSConfig.h file included |
| 2571 | with every port: |
| 2572 | configUSE_TICK_HOOK |
| 2573 | configUSE_CO_ROUTINES |
| 2574 | configMAX_CO_ROUTINE_PRIORITIES |
| 2575 | + The volatile qualification has been changed on the list members to allow |
| 2576 | the task.c code to be tidied up a bit. |
| 2577 | + The scheduler can now be started even if no tasks have been created! |
| 2578 | This is to allow co-routines to run when there are no tasks. |
| 2579 | + A task being woken by an event will now preempt the currently running task |
| 2580 | even if its priority is only equal to the currently running task. |
| 2581 | |
| 2582 | Port and demo application changes: |
| 2583 | |
| 2584 | + Updated the WinAVR demo to compile with the latest version of WinAVR |
| 2585 | with no warnings generated. |
| 2586 | + Changed the WinAVR makefile to make chars signed - needed for the |
| 2587 | co-routine code if BaseType_t is set to char. |
| 2588 | + Added new demo application file crflash.c. This demonstrates co-routine |
| 2589 | functionality including passing data between co-routines. |
| 2590 | + Added new demo application file crhook.c. This demonstrates co-routine |
| 2591 | and tick hook functionality including passing data between and ISR and |
| 2592 | a co-routine. |
| 2593 | + Some NOP's were missing following stmdb{}^ instructions in various ARM7 |
| 2594 | ports. These have been added. |
| 2595 | + Updated the Open Watcom PC demo project to include the crflash and crhook |
| 2596 | demo co-routines as an example of their use. |
| 2597 | + Updated the H8S demo to compile with the latest version of GCC. |
| 2598 | + Updated the SAM7X EMAC drivers to take into account the hardware errata |
| 2599 | regarding lost packets. |
| 2600 | + Changed the default MAC address used by some WEB server demos as the |
| 2601 | original addresses used was not liked by some routers. |
| 2602 | + Modified the SAM7X/IAR startup code slightly to prevent it hanging on |
| 2603 | some systems when the code is executed using a j-link debugger. The |
| 2604 | j-link macro file configures the PLL before the code executes so |
| 2605 | attempting to configure it again in the startup code was causing a |
| 2606 | problem for some user. Now a check is performed first to see if the |
| 2607 | PLL is already set up. |
| 2608 | + GCC port now contain all assembler code in a single asm block rather than |
| 2609 | individual blocks as before. |
| 2610 | + GCC LPC2000 code now explicitly uses R0 rather than letting the assembler |
| 2611 | choose the register to use as a temporary register during the context |
| 2612 | switch. |
| 2613 | + Added portNOP() macro. |
| 2614 | + The compare match load value on LPC2000 ports now has 1 added to correct |
| 2615 | the value used. |
| 2616 | + The minimal stack depth has been increased slightly on the WIZC PIC18 |
| 2617 | port. |
| 2618 | |
| 2619 | Changes between V3.2.3 and V3.2.4 |
| 2620 | |
| 2621 | + Modified the GCC ARM7 port layer to allow use with GCC V4.0.0 and above. |
| 2622 | Many thanks to Glen Biagioni for the provided update. |
| 2623 | + Added a new Microblaze port and demo application. |
| 2624 | + Modified the SAM7X EMAC demo to default to use the MII interface rather |
| 2625 | than the RMII interface. |
| 2626 | + Modified the startup sequence of the SAM7X demo slightly to allow the |
| 2627 | EMAC longer to auto negotiate. |
| 2628 | |
| 2629 | Changes between V3.2.2 and V3.2.3 |
| 2630 | |
| 2631 | + Added MII interface support to the SAM7X EMAC peripheral driver. |
| 2632 | Previously versions worked with the RMII interface only. |
| 2633 | + Added command line GCC support to the SAM7X lwIP demo. Previously the |
| 2634 | project could only be built using the CrossWorks IDE. Modifications to |
| 2635 | this end include the addition of a standard makefile and linker script to |
| 2636 | the download, and some adjustments to the stacks allocated to each task. |
| 2637 | + Changed the page returned by the lwIP WEB server demo to display the |
| 2638 | task status table rather than the TCP/IP statistics. |
| 2639 | + Corrected the capitalisation of some header file includes and makefile |
| 2640 | dependencies to facilitate use on Linux host computers. |
| 2641 | + The various LPC2000 ports had a mistake in the timer setup where the |
| 2642 | prescale value was written to T0_PC instead of T0_PR. This would have |
| 2643 | no effect unless a prescale value was actually required. This has been |
| 2644 | corrected. |
| 2645 | |
| 2646 | Changes between V3.2.1 and V3.2.2 - Released 23 September, 2005 |
| 2647 | |
| 2648 | + Added an IAR port for the Philips LPC2129 |
| 2649 | + The Atmel ARM7 IAR demo project files are now saved in the IAR Embedded |
| 2650 | Workbench V4.30a format. |
| 2651 | + Updated the J-Link macro file included with the SAM7X uIP demo project |
| 2652 | to allow the demo board to be reset over the J-Link. |
| 2653 | |
| 2654 | Changes between V3.2.0 and V3.2.1 - Released 1 September, 2005 |
| 2655 | |
| 2656 | + Added lwIP demo for AT91SAM7X using Rowley tools. |
| 2657 | + Added uIP demo for AT91SAM7X using IAR tools. |
| 2658 | + Added function xTaskGetCurrentTaskHandle(). |
| 2659 | + Renamed events.h to mevents.h to prevent it conflicting with the events.h |
| 2660 | generated automatically by the HCS12 processor expert utility. events.h |
| 2661 | is only used by the PC demo application. |
| 2662 | + Both PIC18 ports now initialise the TBLPTRU to 0 as this is the value |
| 2663 | expected by the compiler, and the compilers do not write to this |
| 2664 | register. |
| 2665 | + The HCS12 banked model demo now creates the 'suicide' tasks immediately |
| 2666 | prior to starting the scheduler. These tasks should be the last tasks to |
| 2667 | get started in order for the test to function correctly. |
| 2668 | |
| 2669 | Changes between V3.1.1 and V3.2.0 - Released 29 June, 2005 |
| 2670 | |
| 2671 | V3.2.0 introduces two new MSP430 ports and corrects a minor kernel |
| 2672 | issues. Thanks to Ares.qi for his input. |
| 2673 | |
| 2674 | + Added two MSP430 ports that use the Rowley CrossWorks development tools. |
| 2675 | One port just mirrors the existing GCC port. The other port was provided |
| 2676 | by Milos Prokic. Thanks! |
| 2677 | + V3.2.0 corrects the behavior when vTaskPrioritySet() or vTaskResume() |
| 2678 | are called while the scheduler is locked (by a call to |
| 2679 | vTaskSuspendAll()). When this is done the subject task now starts to |
| 2680 | execute immediately when the scheduler is unlocked if it has the highest |
| 2681 | priority that is ready to run. Previously there was a possibility that |
| 2682 | the task would not run until the next RTOS tick or call to portYIELD(). |
| 2683 | + Another similar small correction ensures that in the case where more than |
| 2684 | one task is blocked on a semaphore or queue, the task with the highest |
| 2685 | priority is guaranteed to be unblocked first. |
| 2686 | + Added a couple of more test tasks to the PC demo which cover the points |
| 2687 | above. |
| 2688 | |
| 2689 | Changes between V3.1.0 and V3.1.1 - Released 21st June, 2005 |
| 2690 | |
| 2691 | This release updates the HCS12 port. The common kernel code |
| 2692 | remains unchanged. |
| 2693 | |
| 2694 | + Updated the HCS12 port to support banking and introduced a demo |
| 2695 | application for the MC9S12DP256. The new demo application is |
| 2696 | located in the Demo/HCS12_CodeWarrior_banked directory. |
| 2697 | + The name of the directory containing the MC9S12F32 demo application |
| 2698 | has been changed to Demo/HCS12_CodeWarrior_small (as in 'small' |
| 2699 | memory model). |
| 2700 | + MC9S12F32 demo updated slightly to use the PLL. The CPU speed for the |
| 2701 | demo application is now 24MHz. Previously it was 8MHz. |
| 2702 | + The demo application file Demo/Common/Minimal/death.c has a slight |
| 2703 | alteration to prevent it using floating point variables. |
| 2704 | |
| 2705 | |
| 2706 | Changes between V3.0.0 and V3.1.0 - Released 11th June, 2005 |
| 2707 | |
| 2708 | + Added new ports for ST Microsystems STR71x, and Freescale HCS12 |
| 2709 | microcontrollers. Currently the HCS12 port is limited to the small |
| 2710 | memory model. Large memory models will be supported in the next |
| 2711 | release. |
| 2712 | + PIC18 wizC port updated. Thanks to Marcel van Lieshout for his |
| 2713 | continuing contribution. |
| 2714 | + The accuracy of the AVR port timer setup has been improved. Thanks to |
| 2715 | Thomas Krutmann for this contribution. |
| 2716 | + Added a new conditional compilation macro configIDLE_SHOULD_YIELD. |
| 2717 | See the WEB documentation for details. |
| 2718 | + Updated the CrossWorks uIP demo to build with V1.4 of CrossWorks. |
| 2719 | + Slight modification to the SAM7 release build configuration to correct |
| 2720 | an include path definition. |
| 2721 | + Updated the MPLAB PIC18 documentation to provide extra details on linker |
| 2722 | file configuration. |
| 2723 | |
| 2724 | Changes between V3.0.0 and V2.6.1 - Released 23rd April, 2005 |
| 2725 | |
| 2726 | V3.0.0 includes many enhancements, so this history list is broken into |
| 2727 | subsections as follows: |
| 2728 | |
| 2729 | API changes |
| 2730 | New ports |
| 2731 | Directory name changes |
| 2732 | Kernel and miscellaneous changes changes |
| 2733 | |
| 2734 | - API changes |
| 2735 | |
| 2736 | + Each port now defines BaseType_t as the data type that is most |
| 2737 | efficient for that architecture. The type BaseType_t is used |
| 2738 | extensively in API calls necessitating the following changes to the |
| 2739 | FreeRTOS API function prototypes. |
| 2740 | |
| 2741 | See the "New for V3.0.0" section of the FreeRTOS online |
| 2742 | documentation for full details of API changes. |
| 2743 | |
| 2744 | - New ports |
| 2745 | |
| 2746 | + The AT91FR40008 ARM7 port contributed by John Feller is now included |
| 2747 | in the download (thanks John!). |
| 2748 | + The PIC18 port for the wizC/fedC compiler contributed by Marcel van |
| 2749 | Lieshout is now included in the download (thanks Marcel!). |
| 2750 | + The IAR port for the AVR microcontroller has been upgraded to V3.0.0 |
| 2751 | and is now a supported port. |
| 2752 | |
| 2753 | - Directory name changes |
| 2754 | |
| 2755 | For consistency, and to allow integration of the new ports, the |
| 2756 | following directory names have been changed. |
| 2757 | |
| 2758 | + The source/portable/GCC/ARM7 directory has been renamed |
| 2759 | source/portable/GCC/ARM7_LPC2000 so it is compatible with the naming |
| 2760 | of other GCC ARM7 ports. |
| 2761 | + The Demo/PIC directory has been renamed Demo/PIC18_MPLAB to |
| 2762 | accommodate the wizC/fedC PIC port. |
| 2763 | + The demo applications for the two AVR ports no longer share the same |
| 2764 | directory. The WinAVR demo is in the Demo/AVR_ATMega323_WinAVR |
| 2765 | directory and the IAR port in the Demo/AVR_ATMega323_IAR directory. |
| 2766 | |
| 2767 | |
| 2768 | - Kernel and miscellaneous changes changes |
| 2769 | |
| 2770 | See the "New for V3.0.0" section of the FreeRTOS online |
| 2771 | documentation for more information. |
| 2772 | |
| 2773 | + Previously 'portmacro.h' contained some user editable definitions |
| 2774 | relating to the user application, and some fixed definitions relating |
| 2775 | specifically to the port being used. The application specific |
| 2776 | definitions have been removed from 'portmacro.h' and placed inside a |
| 2777 | new header file called 'FreeRTOSConfig.h'. 'portmacro.h' should now |
| 2778 | never be modified by the user. A 'FreeRTOSConfig.h' is now included |
| 2779 | in each of FreeRTOS/Demo subdirectories - as it's settings relate to |
| 2780 | the demo application rather than being specific to the port. |
| 2781 | + Introduced configUSE_IDLE_HOOK in idle task. |
| 2782 | + The idle task will yield when another idle priority task is ready to |
| 2783 | run. Previously the idle task would run to the end of its time slice |
| 2784 | regardless. |
| 2785 | + The idle task is now created when the scheduler is started. This |
| 2786 | requires less stack than the previous scheme where it was created upon |
| 2787 | creation of the first application task. |
| 2788 | + The function usPortCheckFreeStackSpace() has been renamed |
| 2789 | usTaskCheckFreeStackSpace() and moved from the portable layer to |
| 2790 | tasks.c. |
| 2791 | + Corrected spelling of portMINMAL_STACK_SIZE to portMINIMAL_STACK_SIZE. |
| 2792 | + The portheap.c file included with the AVR port has been deleted. The |
| 2793 | AVR demo now uses the standard heap1 sample memory allocator. |
| 2794 | + The GCC AVR port is now build using the standard make utility. The |
| 2795 | batch files used previously have been deleted. This means a recent |
| 2796 | version of WinAVR is required in order to create a binary suitable for |
| 2797 | source level debugging. |
| 2798 | + vTaskStartScheduler() no longer takes the configUSE_PREEMPTION |
| 2799 | constant as a parameter. Instead the constant is used directly within |
| 2800 | tasks.c and no parameter is required. |
| 2801 | + The header file 'FreeRTOS.h' has been created and is used to include |
| 2802 | 'projdefs.h', 'FreeRTOSConfig.h' and 'portable.h' in the necessary |
| 2803 | order. FreeRTOS.h can now be included in place of these other |
| 2804 | headers. |
| 2805 | + The header file 'errors.h' has been deleted. The definitions it |
| 2806 | contained are now located within 'projdefs.h'. |
| 2807 | + pvPortMalloc() now takes a size_t parameter as per the ANSI malloc(). |
| 2808 | Previously an unsigned short was used. |
| 2809 | + When resuming the scheduler a yield is performed if either a tick has |
| 2810 | been missed, or a task is moved from the pending ready list into a |
| 2811 | ready list. Previously a yield was not performed on this second |
| 2812 | condition. |
| 2813 | + In heap1.c an overflow check has been added to ensure the next free |
| 2814 | byte variable does not wrap around. |
| 2815 | + Introduced the portTASK_FUNCTION() and portTASK_FUNCTION_PROTO() |
| 2816 | macros. |
| 2817 | + The MPLAB PIC port now saved the TABLAT register in interrupt service |
| 2818 | routines. |
| 2819 | |
| 2820 | Changes between V2.6.0 and V2.6.1 - Released Feb 22, 2005 |
| 2821 | |
| 2822 | This version adds support for the H8 processor. |
| 2823 | |
| 2824 | Other changes: |
| 2825 | |
| 2826 | + tskMAX_TASK_NAME_LEN removed from the task.h header and added to each |
| 2827 | individual portmacro.h file as portMAX_TASK_NAME_LEN. This allows RAM |
| 2828 | limited ports to allocate fewer characters to the task name. |
| 2829 | + AVR port - Replaced the inb() and outb() functions with direct memory |
| 2830 | access. This allows the port to be built with the 20050414 build of |
| 2831 | WinAVR. |
| 2832 | + GCC LPC2106 port - removed the 'static' from the definition of |
| 2833 | vNonPreemptiveTick() to allow the demo to link when using the cooperative |
| 2834 | scheduler. |
| 2835 | + GCC LPC2106 port - Corrected the optimisation options in the batch files |
| 2836 | ROM_THUMB.bat, RAM_THUMB.bat, ROM_ARM.bat and RAM_ARM.bat. The lower case |
| 2837 | -o is replaced by an uppercase -O. |
| 2838 | + Tasks.c - The strcpy call has been removed when copying across the task |
| 2839 | name into the TCB. |
| 2840 | + Updated the trace visualisation to always be 4 byte aligned so it can be |
| 2841 | used on ARM architectures. |
| 2842 | + There are now two tracecon executables (that convert the trace file binary |
| 2843 | into an ASCII file). One for big endian targets and one for little endian |
| 2844 | targets. |
| 2845 | + Added ucTasksDeleted variable to prevent vTaskSuspendAll() being called |
| 2846 | too often in the idle task. |
| 2847 | + SAM7 USB driver - Replaced the duplicated RX_DATA_BK0 in the interrupt |
| 2848 | mask with the RX_DATA_BK1. |
| 2849 | |
| 2850 | |
| 2851 | Changes between V2.5.5 and V2.6.0 - Released January 16, 2005 |
| 2852 | |
| 2853 | + Added the API function vTaskDelayUntil(). The demo app file |
| 2854 | Demo/Common/Minimal/flash.c has been updated to demonstrate its use. |
| 2855 | + Added INCLUDE_vTaskDelay conditional compilation. |
| 2856 | + Changed the name of the Demo/ARM7_AtmelSAM7S64_IAR directory to |
| 2857 | Demo/ARM7_AT91SAM7S64_IAR for consistency. |
| 2858 | + Modified the AT91SAM7S USB driver to allow descriptors that have |
| 2859 | a length that is an exact multiple of the FIFO to be transmitted. |
| 2860 | |
| 2861 | Changes between V2.5.4 and V2.5.5 - Released January 3, 2005 |
| 2862 | |
| 2863 | This version adds support for the Atmel SAM7 ARM7 microcontrollers |
| 2864 | along with the IAR development tools. |
| 2865 | |
| 2866 | Other changes: |
| 2867 | |
| 2868 | + Renamed the Demo/ARM7 directory to Demo/ARM7_LPC2106_GCC. |
| 2869 | + Renamed the Demo/ARM7_Keil directory to Demo/ARM7_LPC2129_Keil. |
| 2870 | + Modified the Philips ARM7 serial interrupt service routines to only |
| 2871 | process one interrupt per call. This seems to enable the ISR to |
| 2872 | operate more quickly. |
| 2873 | + Removed the 'far' keyword from the Open Watcom portable layer source |
| 2874 | files. This allows their use with V1.3 of Open Watcom. |
| 2875 | + Minor modifications to the SDCC build files to allow their use under |
| 2876 | Linux. Thanks to Frieder Ferlemann for this contribution. |
| 2877 | + Small change to sTaskCreate() to allow a context switch even when |
| 2878 | pxCreatedTask is NULL. Thanks to Kamil for this contribution. |
| 2879 | + inline keyword removed from vTaskSwitchContext() and VTaskIncrementTick() |
| 2880 | definitions. |
| 2881 | |
| 2882 | Changes between V2.5.3 and V2.5.4 - Released Dec 1, 2004 |
| 2883 | |
| 2884 | This is an important maintenance release. |
| 2885 | |
| 2886 | The function cTaskResumeAll() has been modified so it can be used safely |
| 2887 | prior to the kernel being initialised. This was an issue as |
| 2888 | cTaskResumeAll() is called from pvPortMalloc(). Thanks to Daniel Braun |
| 2889 | for highlighting this issue. |
| 2890 | |
| 2891 | Changes between V2.5.2 and V2.5.3 - Released Nov 2, 2004 |
| 2892 | |
| 2893 | The critical section handling functions have been changed for the GCC ARM7 |
| 2894 | port. Some optimisation levels use the stack differently to others. This |
| 2895 | means the interrupt flags cannot always be stored on the stack and are |
| 2896 | instead now stored in a variable, which is then saved as part of the |
| 2897 | tasks context. This allows the GCC ARM7 port to be used at all |
| 2898 | optimisation levels - including -Os. |
| 2899 | |
| 2900 | Other minor changes: |
| 2901 | |
| 2902 | + MSP430 definition of usCriticalNesting now uses the volatile qualifier. |
| 2903 | This is probably not required but added just in case. |
| 2904 | |
| 2905 | Changes between V2.5.1 and V2.5.2 - Released Oct 26, 2004 |
| 2906 | |
| 2907 | + Added the Keil ARM7 port. |
| 2908 | + Slight modification to comtest.c to make the delay periods more random. |
| 2909 | This creates a better test condition. |
| 2910 | |
| 2911 | Changes between V2.5.0 and V2.5.1 - Released Oct 9, 2004 |
| 2912 | |
| 2913 | + Added the MSP430 port. |
| 2914 | + Extra comments added to the GCC ARM7 port.c and portISR.c files. |
| 2915 | + The memory pool allocated within heap_1.c has been placed within a |
| 2916 | structure to ensure correct memory alignment on 32bit systems. |
| 2917 | + Within the GCC ARM7 serial drivers an extra check is made to ensure |
| 2918 | the post to the queue was successful if then attempting immediately |
| 2919 | retrieve the posted character. |
| 2920 | + Changed the name of the constant portTICKS_PER_MS to portTICK_PERIOD_MS |
| 2921 | as the old name was misleading. |
| 2922 | |
| 2923 | |
| 2924 | Changes between V2.4.2 and V2.5.0 - Released Aug 12, 2004 |
| 2925 | |
| 2926 | The RTOS source code download now includes three separate memory allocation |
| 2927 | schemes - so you can choose the most appropriate for your application. |
| 2928 | These are found in the Source/Portable/MemMang directory. The demo |
| 2929 | application projects have also been updated to demonstrate the new schemes. |
| 2930 | See the "Memory Management" page of the API documentation for more details. |
| 2931 | |
| 2932 | + Added heap_1.c, heap_2.c and heap_3.c in the Source/Portable/MemMang |
| 2933 | directory. |
| 2934 | + Replaced the portheap.c files for each demo application with one of the |
| 2935 | new memory allocation files. |
| 2936 | + Updated the portmacro.h file for each demo application to include the |
| 2937 | constants required for the new memory allocators: portTOTAL_HEAP_SIZE and |
| 2938 | portBYTE_ALIGNMENT. |
| 2939 | + Added a new test to the ARM7 demo application that tests the operation |
| 2940 | of the heap_2 memory allocator. |
| 2941 | |
| 2942 | |
| 2943 | Changes between V2.4.1 and V2.4.2 - Released July 14, 2004 |
| 2944 | |
| 2945 | + The ARM7 port now supports THUMB mode. |
| 2946 | + Modification to the ARM7 demo application serial port driver. |
| 2947 | |
| 2948 | Changes between V2.4.0 and V2.4.1 - Released July 2, 2004 |
| 2949 | |
| 2950 | + Rationalised the ARM7 port version of portEXIT_CRITICAL() - |
| 2951 | improvements provided by Bill Knight. |
| 2952 | + Made demo serial driver more complete and robust. |
| 2953 | |
| 2954 | |
| 2955 | Changes between V2.4.0 and V2.3.1 - Released June 30, 2004 |
| 2956 | |
| 2957 | + Added the first ARM7 port - thanks to Bill Knight for the assistance |
| 2958 | provided. |
| 2959 | + Added extra files to the Demo/Common/Minimal directory. These are |
| 2960 | equivalent to their Demo/Common/Full counterparts but with the |
| 2961 | calls to the functions defined in print.c removed. |
| 2962 | + Added TABLAT to the list of registers saved as part of a PIC18 context. |
| 2963 | |
| 2964 | Changes between V2.3.0 and V2.3.1 - Released June 25, 2004 |
| 2965 | |
| 2966 | + Changed the way the vector table is defined to be more portable. |
| 2967 | + Corrected the definitions of SPH and SPL in portmacro.s90. |
| 2968 | The previous definitions prevented V2.3.0 operating if the iom323.h |
| 2969 | header file was included in portmacro.s90. |
| 2970 | |
| 2971 | Changes between V2.2.0 and V2.3.0 - Released June 19, 2004 |
| 2972 | |
| 2973 | + Added an AVR port that uses the IAR compiler. |
| 2974 | + Explicit use of 'signed' qualifier on plain char types. |
| 2975 | + Modified the Open Watcom project files to use 'signed' as the |
| 2976 | default char type. |
| 2977 | + Changed odd calculation of initial pxTopOfStack value when |
| 2978 | portSTACK_GROWTH < 0. |
| 2979 | + Added inline qualifier to context switch functions within task.c. |
| 2980 | Ports that do not support the (non ANSI) inline keyword have the |
| 2981 | inline #define'd away in their respective portmacro.h files. |
| 2982 | |
| 2983 | Changes between V2.1.1 and V2.2.0 - Released May 18, 2004 |
| 2984 | |
| 2985 | + Added Cygnal 8051 port. |
| 2986 | + PCLATU and PCLATH are now saved as part of the PIC18 context. This |
| 2987 | allows function pointers to be used within tasks. Thanks to Javier |
| 2988 | Espeche for the enhancement. |
| 2989 | + Minor changes to demo application files to reduce stack usage. |
| 2990 | + Minor changes to prevent compiler warnings when compiling the new port. |
| 2991 | |
| 2992 | Changes between V2.1.0 and V2.1.1 - Released March 12, 2004 |
| 2993 | |
| 2994 | + Bug fix - pxCurrentTCB is now initialised before the call to |
| 2995 | prvInitialiseTaskLists(). Previously pxCurrentTCB could be accessed |
| 2996 | while null during the initialisation sequence. Thanks to Giuseppe |
| 2997 | Franco for the correction. |
| 2998 | |
| 2999 | Changes between V2.0.0 and V2.1.0 - Released Feb 29, 2004 |
| 3000 | |
| 3001 | V2.1.0 has significant reworks that greatly reduce the amount of time |
| 3002 | the kernel has interrupts disabled. The first section of modifications |
| 3003 | listed here must be taken into account by users. The second section |
| 3004 | are related to the kernel implementation and as such are transparent. |
| 3005 | |
| 3006 | Section1 : |
| 3007 | |
| 3008 | + The typedef TickType_t has been introduced. All delay times should |
| 3009 | now use a variable of type TickType_t in place of the unsigned long's |
| 3010 | used previously. API function prototypes have been updated |
| 3011 | appropriately. |
| 3012 | + The configuration macro USE_16_BIT_TICKS has been introduced. If set |
| 3013 | to 1 TickType_t is defined as an unsigned short. If set to 0 |
| 3014 | TickType_t is defined as an unsigned long. See the configuration |
| 3015 | section of the API documentation for more details. |
| 3016 | + The configuration macro INCLUDE_vTaskSuspendAll is now obsolete. |
| 3017 | + vTaskResumeAll() has been renamed cTaskResumeAll() as it now returns a |
| 3018 | value (see the API documentation). |
| 3019 | + ulTaskGetTickCount() has been renamed xTaskGetTickCount() as the type |
| 3020 | it returns now depends on the USE_16_BIT_TICKS definition. |
| 3021 | + cQueueReceive() must now >never< be used from within an ISR. Use the new |
| 3022 | cQueueReceiveFromISR() function instead. |
| 3023 | |
| 3024 | Section 2: |
| 3025 | |
| 3026 | + A mechanism has been introduced that allows a queue to be accessed by |
| 3027 | a task and ISR simultaneously. |
| 3028 | + A "pending ready" queue has been introduced that enables interrupts to |
| 3029 | be processed when the scheduler is suspended. |
| 3030 | + The list implementation has been improved to provide faster item |
| 3031 | removal. |
| 3032 | + The scheduler now makes use of the scheduler suspend mechanism in places |
| 3033 | where previously interrupts were disabled. |
| 3034 | |
| 3035 | Changes between V1.2.6 and V2.0.0 - Released Jan 31, 2004 |
| 3036 | |
| 3037 | + Introduced new API functions: |
| 3038 | vTaskPriorityGet () |
| 3039 | vTaskPrioritySet () |
| 3040 | vTaskSuspend () |
| 3041 | vTaskResume () |
| 3042 | vTaskSuspendAll () |
| 3043 | vTaskResumeAll () |
| 3044 | + Added conditional compilation options that allow the components of the |
| 3045 | kernel that are unused by an application to be excluded from the build. |
| 3046 | See the Configuration section on the WEB site for more information (on |
| 3047 | the API pages). The macros have been added to each portmacro.h file ( |
| 3048 | sometimes called prtmacro.h). |
| 3049 | + Rearranged tasks.c. |
| 3050 | + Added demo application file dynamic.c. |
| 3051 | + Updated the PC demo application to make use of dynamic.c. |
| 3052 | + Updated the documentation contained in the kernel header files. |
| 3053 | + Creating a task now causes a context switch if the task being created |
| 3054 | has a higher priority than the calling task - assuming the kernel is |
| 3055 | running. |
| 3056 | + vTaskDelete() now only causes a context switch if the calling task is |
| 3057 | the task being deleted. |
| 3058 | |
| 3059 | Changes between V1.2.5 and V1.2.6 - Released December 31, 2003 |
| 3060 | |
| 3061 | Barring the change to the interrupt vector (PIC port) these are minor |
| 3062 | enhancements. |
| 3063 | |
| 3064 | + The interrupt vector used for the PIC master ISR has been changed from |
| 3065 | 0x18 to 0x08 - where it should have always been. The incorrect address |
| 3066 | still works but probably executes a number of NOP's before getting to the |
| 3067 | ISR. |
| 3068 | + Changed the baud rate used by the AVR demo application to 38400. This |
| 3069 | has an error percentage of less than one percent with an 8MHz clock. |
| 3070 | + Raised the priority of the Rx task in demo\full\comtest.c. This only |
| 3071 | affects the Flashlite and PC ports. This was done to prevent the Rx |
| 3072 | buffer becoming full. |
| 3073 | + Reverted the Flashlite COM port driver back so it does not use the DMA. |
| 3074 | The DMA appears to miss characters under stress. The Borland Flashlite |
| 3075 | port was also calculating a register value incorrectly resulting in the |
| 3076 | wrong DMA source address being used. The same code worked fine when |
| 3077 | compiling with Open Watcom. Other minor enhancements were made to the |
| 3078 | interrupt handling. |
| 3079 | + Modified the PIC serial Rx ISR to check for and clear overrun errors. |
| 3080 | Overrun errors seem to prevent any further characters being received. |
| 3081 | + The PIC demo projects now have some optimisation switched on. |
| 3082 | |
| 3083 | |
| 3084 | Changes between V1.2.4 and V1.2.5 |
| 3085 | |
| 3086 | Small fix made to the PIC specific port.c file described below. |
| 3087 | |
| 3088 | + Introduced portGLOBAL_INTERRUPT_FLAG definition to test the global |
| 3089 | interrupt flag setting. Using the two bits defined within |
| 3090 | portINITAL_INTERRUPT_STATE was causing the w register to get clobbered |
| 3091 | before the test was performed. |
| 3092 | |
| 3093 | Changes between V1.2.3 and V1.2.4 |
| 3094 | |
| 3095 | V1.2.4 contains a release version of the PIC18 port. |
| 3096 | An optional exception has been included with the GPL. See the licensing |
| 3097 | section of www.FreeRTOS.org for details. |
| 3098 | |
| 3099 | + The function xPortInitMinimal() has been renamed to |
| 3100 | xSerialPortInitMinimal() and the function xPortInit() has been renamed |
| 3101 | to xSerialPortInit(). |
| 3102 | + The function sSerialPutChar() has been renamed cSerialPutChar() and |
| 3103 | the function return type chaned to portCHAR. |
| 3104 | + The integer and flop tasks now include calls to tskYIELD(), allowing |
| 3105 | them to be used with the cooperative scheduler. |
| 3106 | + All the demo applications now use the integer and comtest tasks when the |
| 3107 | cooperative scheduler is being used. Previously they were only used with |
| 3108 | the preemptive scheduler. |
| 3109 | + Minor changes made to operation of minimal versions of comtest.c and |
| 3110 | integer.c. |
| 3111 | + The ATMega port definition of portCPU_CLOSK_HZ definition changed to |
| 3112 | 8MHz base 10, previously it base 16. |
| 3113 | |
| 3114 | |
| 3115 | |
| 3116 | Changes between V1.2.2a and V1.2.3 |
| 3117 | |
| 3118 | The only change of any significance is to the license, which has changed |
| 3119 | from the Open Software License to the GNU GPL. |
| 3120 | |
| 3121 | The zip file also contains a pre-release version of the PIC18 port. This |
| 3122 | has not yet completed testing and as such does not constitute part of the |
| 3123 | V1.2.3 release. It is still however covered by the GNU GPL. |
| 3124 | |
| 3125 | There are minor source code changes to accommodate the PIC C compiler. |
| 3126 | These mainly involve more explicit casting. |
| 3127 | |
| 3128 | + sTaskCreate() has been modified slightly to make use of the |
| 3129 | portSTACK_GROWTH macro. This is required for the PIC port where the |
| 3130 | stack grows in the opposite direction to the other existing ports. |
| 3131 | + prvCheckTasksWaitingTermination() has been modified slightly to bring |
| 3132 | the decrementing of usCurrentNumberOfTasks within the critical section, |
| 3133 | where it should have been since the creation of an eight bit port. |
| 3134 | |
| 3135 | Changes between V1.2.2 and V1.2.2a |
| 3136 | |
| 3137 | The makefile and buildcoff.bat files included with the AVR demo application |
| 3138 | have been modified for use with the September 2003 build of WinAVR. No |
| 3139 | source files have changed. |
| 3140 | |
| 3141 | Changes between V1.2.1 and V1.2.2 |
| 3142 | |
| 3143 | There are only minor changes here to allow the PC and Flashlite 186 ports |
| 3144 | to use the Borland V4.52 compiler, as supplied with the Flashlite 186 |
| 3145 | development kit. |
| 3146 | |
| 3147 | + Introduced a BCC directory under source\portable. This contains all the |
| 3148 | files specific to the Borland compiler port. |
| 3149 | + Corrected the macro naming of portMS_PER_TICK to portTICKS_PER_MS. |
| 3150 | + Modified comtest.c to increase the rate at which the string is |
| 3151 | transmitted and received on the serial port. The Flashlite 186 demo |
| 3152 | app baud rate has also been increased. |
| 3153 | + The values of the constants used in both integer.c files have been |
| 3154 | increased to force the Borland compiler to use 32 bit values. The |
| 3155 | Borland optimiser placed the previous values in 16 bit registers, and in |
| 3156 | So doing invalidated the test. |
| 3157 | |
| 3158 | Changes between V1.2.0 and V1.2.1 |
| 3159 | |
| 3160 | This version includes some minor changes to the list implementation aimed |
| 3161 | at improving the context switch time - with is now approximately 10% faster. |
| 3162 | Changes include the removal of some null pointer assignment checks. These |
| 3163 | were redundant where the scheduler uses the list functions, but means any |
| 3164 | user application choosing to use the same list functions must now check |
| 3165 | that no NULL pointers are passed as a parameter. |
| 3166 | |
| 3167 | The Flashlite 186 serial port driver has also been modified to use a DMA |
| 3168 | channel for transmissions. The serial driver is fully functional but still |
| 3169 | under development. Flashlite users may prefer to use V1.2.0 for now. |
| 3170 | |
| 3171 | Details: |
| 3172 | |
| 3173 | + Changed the baud rate for the ATMega323 serial test from 19200 to 57600. |
| 3174 | + Use vSerialPutString() instead of single character puts in |
| 3175 | Demo\Full\Comtest.c. This allows the use of the flashlite DMA serial |
| 3176 | driver. Also the check variable only stops incrementing after two |
| 3177 | consecutive failures. |
| 3178 | + semtest.c creates four tasks, two of which operate at the idle priority. |
| 3179 | The tasks that operate at the idle priority now use a lower expected |
| 3180 | count than those running at a higher priority. This prevents the low |
| 3181 | priority tasks from signalling an error because they have not been |
| 3182 | scheduled enough time for each of them to count the shared variable to |
| 3183 | the higher original value. |
| 3184 | + The flashlite 186 serial driver now uses a DMA channel for transmissions. |
| 3185 | + Removed the volatile modifier from the list function parameters. This was |
| 3186 | only ever included to prevent compiler warnings. Now warnings are |
| 3187 | removed by casting parameters where the calls are made. |
| 3188 | + prvListGetOwnerOfNextEntry() and prvListGetOwnerOfHeadEntry() have been |
| 3189 | removed from list.c and added as macros in list.h. |
| 3190 | + usNumberOfItems has been added to the list structure. This removes the |
| 3191 | need for a pointer comparison when checking if a list is empty, and so |
| 3192 | is slightly faster. |
| 3193 | + Removed the NULL check in vListRemove(). This makes the call faster but |
| 3194 | necessitates any application code utilising the list implementation to |
| 3195 | ensure NULL pointers are not passed. |
| 3196 | + Renamed portTICKS_PER_MS definition to portMS_PER_TICK (milli seconds |
| 3197 | per tick). This is what it always should have been. |
| 3198 | |
| 3199 | Changes between V1.01 and V1.2.0 |
| 3200 | |
| 3201 | The majority of these changes were made to accommodate the 8bit AVR port. |
| 3202 | The scheduler workings have not changed, but some of the data types used |
| 3203 | have been made more friendly to an eight bit environment. |
| 3204 | |
| 3205 | Details: |
| 3206 | |
| 3207 | + Changed the version numbering format. |
| 3208 | + Added AVR port. |
| 3209 | + Split the directory demo\common into demo\common\minimal and |
| 3210 | demo\common\full. The files in the full directory are for systems with |
| 3211 | a display (currently PC and Flashlite 186 demo's). The files in the |
| 3212 | minimal directory are for systems with limited RAM and no display |
| 3213 | (currently MegaAVR). |
| 3214 | + Minor changes to demo application function prototypes to make more use |
| 3215 | of 8bit data types. |
| 3216 | + Within the scheduler itself the following functions have slightly |
| 3217 | modified declarations to make use of 8bit data types where possible: |
| 3218 | xQueueCreate(), |
| 3219 | sQueueReceive(), |
| 3220 | sQUeueReceive(), |
| 3221 | usQueueMessageWaiting(), |
| 3222 | sQueueSendFromISR(), |
| 3223 | sSemaphoreTake(), |
| 3224 | sSemaphoreGive(), |
| 3225 | sSemaphoreGiveFromISR(), |
| 3226 | sTaskCreate(), |
| 3227 | sTaskMoveFromEventList(). |
| 3228 | |
| 3229 | Where the return type has changed the function name has also changed in |
| 3230 | accordance with the naming convention. For example |
| 3231 | usQueueMessageWaiting() has become ucQueueMessageWaiting(). |
| 3232 | + The definition tskMAX_PRIORITIES has been moved from task.h to |
| 3233 | portmacro.h and renamed portMAX_PRIORITIES. This allows different |
| 3234 | ports to allocate a different maximum number of priorities. |
| 3235 | + By default the trace facility is off, previously USE_TRACE_FACILITY |
| 3236 | was defined. |
| 3237 | + comtest.c now uses a psuedo random delay between sends. This allows for |
| 3238 | better testing as the interrupts do not arrive at regular intervals. |
| 3239 | + Minor change to the Flashlite serial port driver. The driver is written |
| 3240 | to demonstrate the scheduler and is not written to be efficient. |
| 3241 | |
| 3242 | |
| 3243 | |
| 3244 | Changes between V1.00 and V1.01 |
| 3245 | |
| 3246 | These changes improve the ports. The scheduler itself has not changed. |
| 3247 | |
| 3248 | Improved context switch mechanism used when performing a context |
| 3249 | switch from an ISR (both the tick ISR and the serial comms ISR's within |
| 3250 | the demo application). The new mechanism is faster and uses less stack. |
| 3251 | |
| 3252 | The assembler file portasm.asm has been replaced by a header file |
| 3253 | portasm.h. This includes a few assembler macro definitions. |
| 3254 | |
| 3255 | All saving and restoring of registers onto/off of the stack is now handled |
| 3256 | by the compiler. This means the initial stack setup for a task has to |
| 3257 | mimic the stack used by the compiler, which is different for debug and |
| 3258 | release builds. |
| 3259 | |
| 3260 | Slightly changed the operation of the demo application, details below. |
| 3261 | |
| 3262 | Details: |
| 3263 | |
| 3264 | + portSWITCH_CONTEXT() replaced by vPortFirstContext(). |
| 3265 | + pxPortInitialiseStack() modified to replicate the stack used by the |
| 3266 | compiler. |
| 3267 | + portasm.asm file removed. |
| 3268 | + portasm.h introduced. This contains macro definitions for |
| 3269 | portSWITCH_CONTEXT() and portFIRST_CONTEXT(). |
| 3270 | + Context switch from ISR now uses the compiler generated interrupt |
| 3271 | mechanism. This is done simply by calling portSWITCH_CONTEXT and leaving |
| 3272 | the save/restore to compiler generated code. |
| 3273 | + Calls to taskYIELD() during ISR's have been replaced by calling the |
| 3274 | simpler and faster portSWITCH_CONTEXT(). |
| 3275 | + The Flashlite 186 port now uses 186 instruction set (used to use 80x86 |
| 3276 | instructions only). |
| 3277 | + The blocking queue tasks within the demo application did not operate |
| 3278 | quite as described. This has been corrected. |
| 3279 | + The priority of the comtest Rx task within the demo application has been |
| 3280 | lowered. Received characters are now processed (read from the queue) at |
| 3281 | the idle priority, allowing low priority tasks to run evenly at times of |
| 3282 | a high communications overhead. |
| 3283 | + Prevent the call to kbhit() in main.c for debug builds as the debugger |
| 3284 | seems to have problems stepping over the call. This if for the PC port |
| 3285 | only. |