I am pleased to announce that, after months of work, ChibiOS/RT version 2.0.0 has finally been released. I want to thanks all the contributors that helped create this huge release.
The list of changes over the previous stable release is huge, this is the short version, the full version can be retrieved into the readme of the 1.5.9 unstable version.
*** 2.0.0 ***
- NEW: Implemented the concept of thread references, this mechanism ensures
that a dynamic thread's memory is not freed while some other thread still
owns a reference to the thread. Static threads are not affected by the new
mechanism. Two new APIs have been added: chThdAddRef() and chThdRelease().
- NEW: Now more than one thread can be waiting in chThdWait() as long they
own a reference.
- NEW: Implemented a new threads registry subsystem, the registry allows to
enumerate the active threads at runtime and/or from a debugger. This is
a preparatory step for a dedicated ChibiOS/RT debugger.
- NEW: New chCoreFree() API that returns the core memory left.
- NEW: Added a PowerPC port and demo targeting the SPC563M/MPC563xM
ST/Freescale automotive SOCs.
- NEW: Added STM8 port and demo targeting the Raisonance REva board
with STM8S208RB piggyback.
- NEW: New unified ARM Cortex-Mx port, this port supports both the ARMv6M
and ARMv7-M architectures (Cortex-M0/M1/M3/M4 so far). The new port also
allow to easily add to new Cortex-M implementations by simply adding a
parameters file (cmparams.h).
- NEW: Improved clock initialization for the STM32, now it is possible to
configure the clock using any clock source and any HSE frequency.
- NEW: The STM32 clock tree parameters and checks are now calculated into
a separate file in order to support multiple clock trees for different
sub-families of the STM32 platform.
- NEW: Added separated clock trees for the STM32 LD/MD/HD sub-family and
the CL sub-family. Now the selection of the sub-family is done in the
board.h file, there is no more the need to put -DSTM32F10X_xx into
- NEW: Added support for STM32/HD/CL UART4 and UART5, thanks Egon for the
- NEW: Embedded Artists LPCxpresso Base Board support files added.
- NEW: LPC11xx support, drivers (Serial, PAL, HAL) and demo.
- NEW: LPC13xx support, drivers (Serial, PAL, HAL), demo and reports.
- NEW: The port layer now can "capture" the implementation of individual
scheduler API functions in order to provide architecture-optimized
versions. This is done because further scheduler optimizations are
becoming increasingly pointless without considering architecture and
compiler related constraints.
- NEW: Updated the STM32 FW Library files to latest version 3.3.0.
- NEW: AT91SAM7 HAL support for the DGBU UART peripheral, as SD3.
- NEW: Added a demo for the AT91SAM7S256 and board files for the Olimex
SAM7-P256. The demo has been contributed by Alexander Kozaruk.
- NEW: Added core variant name macro in chcore.h and platform name in
hal_lld.h, the info are printed in the test report and from the "info"
- NEW: Added BOARD_NAME macro to the various board.h files.
- NEW: Added a MemoryStream class under ./os/various.
- NEW: Added Mac OS-X support for the simulator. The Linux simulator has
been renamed to Posix simulator in order to include this change in a
- NEW: New articles, sections and various improvements to the documentation.
- NEW: Added to the simulators shell demos two new commands: threads and mem,
that show the currently active threads (using the new registry) and the
memory allocators state.
- NEW: New articles and guides in the documentation.
- OPT: New Cortex-M3 port code, *huge* performance improvements in all the
context switching related benchmarks (up to 18% depending on the benchmark).
The new code does no more require the use of the PendSV vector that is
thus available to the user, it also saves four RAM bytes for each thread
in the system. The old code is still available as a fall back option while
the new one is being hardened by peer review and time, the two ports are
- OPT: Speed/size optimization to the events subsystem.
- OPT: Speed/size optimization to the mutexes subsystem.
- OPT: Speed/size optimization to the condvars subsystem.
- OPT: Speed/size optimization to the synchronous messages subsystem.
- OPT: Small size optimization in the semaphores subsystem.
- OPT: Minor optimizations in the "compact" code path.
- OPT: Optimization on the interface between scheduler and port layer, now
the kernel is even smaller and the context switch performance improved
quite a bit on all the supported architectures.
- OPT: Simplified the implementation of chSchYieldS() and made it a macro.
The previous implementation was probably overkill and took too much space
even if a bit faster.
- OPT: Internal optimization in the serial driver, it now is a bit smaller
and uses less RAM (all architectures).
Congrats! This is a great release, I'm looking forward to using it in several projects. Here's to the next one!
WoW!!! It's awesome..
I have some code that I will test with this new version, when I have some time, after this I will talk to you,to put this into the chibiOS/RT.
Congrats on a fantastic project!
Are there any changes in the USART in the STM32 port from 1.4.3 -> 2.0.0 that I am missing? I have a project that outputs to USART1 correctly under 1.4.3, but not 2.0.0 (does not seem to output anything). I am running on an ET STM32 stamp module, the code seems to compile fine under either version (after setting up the Makefiles correctly).
In 2.0.0 there are a lot of small differences, the STM32 support and the serial driver changed too. Please make sure that the configuration files (chconf.h, halconf.h and mcuconf.h) all come from version 2.0.0 because there are some differences.
Thanks for the quick reply. I had copied mcuconf.h and halconf.h, but I completely missed chconf.h… That didn't quite fix the problem, though.
What did work in the end was setting up the board.h correctly - I had copied it from the Olimex example and modified it to fit my board for 1.4.3, but forgot to set all the paths right for 2.0.0. Now everything works as expected.
ChibiOS/RT 2.0.1 stable has been released.
This version fixes all the known bugs and includes a small improvement into the STM32 HAL driver related to the timers.
It is strongly recommended to upgrade to this new version ASAP because an important fix in the mutexes subsystem. Previous stable branches (1.0.x, 1.2.x and 1.4.x) are still affected and will be updated on request.
ChibiOS/RT 2.0.3 stable has been released.
This version fixes all the known bugs.
*** 2.0.3 ***
- Tests reports regenerated using GCC 4.5.1, small performance improvements
in all benchmarks.
- FIX: Fixed crash of the Posix simulator under Ubuntu 10.4 (bug 3055329).
- FIX: Fixed incorrect PLL2 setting in STM32 HAL (bug 3044770).
- FIX: Fixed wrong check on STM32_HCLK (bug 3044758).
- FIX: Fixed wrong condition check in STM32 PWM driver (bug 3041414).
- FIX: Corrupted IRQ stack in Cortex-Mx port (bug 3041117).
- FIX: Fixed a documentation error regarding the ADC driver function
adcStartConversion() (bug 3039890).
- FIX: Fixed insufficient stack size for idle thread (bug 3033624).
- FIX: Fixed misspelled word in some chioch.h and chstreams.h macros (bug
- FIX: Fixed wrong macro check in the STM32 SPI driver (bug 3028562).
ChibiOS/RT 2.0.4 stable has been released.
*** 2.0.4 ***
- FIX: Fixed potential issue with GCC reorganizing instructions around "asm
volatile" statements (bug 3058731).
- FIX: Fixed reduced ARM7 performance with GCC 4.5.x (bug 3056866).
ChibiOS/RT 2.0.5 stable has been released.
All known bugs have been fixed.
*** 2.0.5 ***
- FIX: Incorrect AT91SAM7X initialization, thanks Leszek (bug 3075354).
- FIX: Fixed race condition in function chSchGoSleepTimeoutS, thanks Balázs
- FIX: Fixed race condition in threads creation (bug 3069854).
- FIX: Fixed broken CH_DBG_ENABLE_STACK_CHECK option in legacy CM3 port (bug
- FIX: Fixed CAN_USE_SLEEP_MODE setting (bug 3064204).
ChibiOS-RT 2.0.6 has been released. All the know bugs have been fixed in this stable release.
*** 2.0.6 ***
- FIX: Fixed typo in memstreams.h (bug 3089567).
- FIX: Fixed wrong macro check in LPC214x and AT91SAM7 serial drivers (bug
- FIX: Fixed non functioning option SPI_USE_MUTUAL_EXCLUSION=FALSE (bug
- FIX: Fixed wrong macro check in STM32 serial support (but 3078891).
- FIX: Fixed lwIP demo not working (bug 3076354).
- FIX: Fixed non functioning option CH_USE_NESTED_LOCKS (bug 3075544).
- CHANGE: The API chThdInit() has been renamed to chThdCreateI().
ChibiOS-RT 2.0.7 has been released. All the know bugs have been fixed in this stable release. One of the fixed bugs is important enough to make this a recommended update. See bug 3113443.
*** 2.0.7 ***
- FIX: Fixed typo in board name (bug 3113574).
- FIX: Fixed defective event wait functions with timeout (bug 3113443).
thank you !!!!!
ChibiOS-RT 2.0.8 has been released. All the know bugs have been fixed in this stable release.
*** 2.0.8 ***
- FIX: Fixed failed memory recovery by registry scan, improved the related
test case (bug 3116888).
- FIX: Fixed PWM channels going to ACTIVE state when the pulse width is
set to zero in the STM32 PWM driver (bug 3114481).
- FIX: Fixed PWM channels return to IDLE state in STM32 PWM driver (bug
- CHANGE: Bugs 3114467 and 3114481 have been fixed by backporting the 2.1.x
PWM driver, there is a difference in the PWM callback parameters.
Log in to post a comment.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.