ChibiOS/RT 2.3.0 has been released. This release is the start of the new development branch. Among the other features this version brings official support for USB and improvements to the kernel.
Worth mentioning are also the new "IRQ STORM" test applications under ./testhal, those really brings down the system on its knees in order to test overall stability, I must say the results have been very good, even under the worst conditions the system is able to recover (and by worst I mean random interrupts with an average period under 10uS and complete CPU saturation). The tests are meant to be long duration stress tests and take hours to complete.
List of changes:
Code: Select all
*** 2.3.0 ***
- FIX: Fixed race condition in CM0 ports, the fix also improves the
ISR latency (bug 3193062)(backported to 2.2.2).
- FIX: Fixed Cortex-Mx linker scripts alignment of __heap_base__, the
correct alignment is now enforced at runtime into core_init() in order
to make the OS integration easier (bug 3191112)(backported to 2.2.2).
- FIX: Fixed error in function chCoreAllocI() function documentation (bug
3191107)(backported to 2.2.2).
- FIX: Fixed minor problem with memory pools (bug 3190512)(backported to
- FIX: Stack overflow in CM0 ports when nearing interrupts saturation (bug
3187105)(backported to 2.2.1).
- FIX: Fixed error in _BSEMAPHORE_DATA macro (bug 3184139)(backported to
- FIX: Error in MAC driver (bug 3179783)(backported to 2.2.1).
- FIX: Fixed wrong serial driver macros (bug 3173336)(backported to 2.2.1).
- NEW: Inproved preemption implementation for the Cortex-M0, now it uses
the NMI vector in order to restore the original context. The change makes
IRQ handling faster and also saves some RAM/ROM space. The GCC port code
now does not inline the epilogue code in each ISR saving significan ROM
space for each interrupt handler in the system (backported to 2.2.3).
- NEW: Added "IRQ STORM" long duration tests for the STM32, LPC11xx and
LPC11xx. The test demonstrates the system stability in a thread-intensive,
progressively CPU-saturating, IRQ-intensive long duration test.
- NEW: Added two new functions to the events subsystem: chEvtBroadcastFlags()
and chEvtBroadcastFlagsI(). The old chEvtBroadcast() and chEvtBroadcastI()
become macros. The new functions allow to add the same flags to all the
registered listener threads.
- NEW: Added I-Class functions to the MailBoxes subsystem, now it is
possible to use them as a transport layer between ISRs and Threads
(backported to 2.2.2).
- NEW: Added new USB driver model, probably it will evolve in next
- NEW: USB driver implementation for STM32.
- NEW: Added "serial over USB" driver, it implements a Communication
Device Class exposing it as a normal serial driver to applications,
probably it will evolve in next releases.
- NEW: Added STM32 USB CDC loopback test application.
- NEW: Added new GPT driver model, General Purpose Timer. The driver
allows to access the available timers in an abstract way.
- NEW: GTP driver implementation for STM32, LPC13xx and LPC11xx.
- NEW: Added STM32 GPT test application.
- NEW: Implemented new event IO_TRANSMISSION_END in the generic serial
driver. This event marks the physical transmission end of a data stream.
- NEW: Implemented the new IO_TRANSMISSION_END event in the STM32 serial
- NEW: Added explicit reset of all peripherals inside the STM32 HAL driver.
Removed the separate resets on initialization from the various other
drivers saving significant space.
- OPT: Removed TIMx reset on system startup in the STM32 PWM driver, the
timers are already reset on driver startup.
- CHANGE: The functions chEvtSignal() and chEvtSignalI() have been renamed
to chEvtSignalFlags() and chEvtSignalFlagsI() for consistency.
- CHANGE: Swapped the numeric values of the TIME_IMMEDIATE and TIME_INFINITE
constants. Fixed the relative documentation in various places (backported
- Many documentation improvements.
As you can see, some of the new features have been, or are going to be, back-ported into the 2.2.x stable branch.