ChibiOS/RT 2.0.0 released

2010-06-16
2013-04-06
  • 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
      the makefile.
    - NEW: Added support for STM32/HD/CL UART4 and UART5, thanks Egon for the
      patch.
    - 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"
      shell command.
    - 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
      single project.
    - 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
      perfectly interchangeable.
    - 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).
    

    Giovanni

     
  • Congrats!  This is a great release, I'm looking forward to using it in several projects.  Here's to the next one!

     

  • Anonymous
    2010-06-16

    WoW!!! It's awesome..

     
  • Congratulations Giavanni,

    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.

    PSilva

     
  • 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).
    Thanks!

     
  • 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.

    Giovanni

     
  • 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.
    Thanks again!

     
  • 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.

    Giovanni

     
  • ChibiOS/RT 2.0.3 stable has been released.

    This version fixes all the known bugs.

    Changes:

    *** 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
      3031534).
    - FIX: Fixed wrong macro check in the STM32 SPI driver (bug 3028562).
    

    Giovanni

     
  • ChibiOS/RT 2.0.4 stable has been released.

    This version fixes all the known bugs.

    Changes:

    *** 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).
    

    Giovanni

     
  • ChibiOS/RT 2.0.5 stable has been released.

    All known bugs have been fixed.

    Changes:

    *** 2.0.5 ***
    - FIX: Incorrect AT91SAM7X initialization, thanks Leszek (bug 3075354).
    - FIX: Fixed race condition in function chSchGoSleepTimeoutS, thanks Balázs
      (bug 3074984).
    - FIX: Fixed race condition in threads creation (bug 3069854).
    - FIX: Fixed broken CH_DBG_ENABLE_STACK_CHECK option in legacy CM3 port (bug
      3064274).
    - FIX: Fixed CAN_USE_SLEEP_MODE setting (bug 3064204).
    

    Giovanni

     
  • ChibiOS-RT 2.0.6 has been released. All the know bugs have been fixed in this stable release.

    Changes:

    *** 2.0.6 ***
    - FIX: Fixed typo in memstreams.h (bug 3089567).
    - FIX: Fixed wrong macro check in LPC214x and AT91SAM7 serial drivers (bug
      3088776).
    - FIX: Fixed non functioning option SPI_USE_MUTUAL_EXCLUSION=FALSE (bug
      3084764).
    - 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().
    

    Giovanni

     
  • 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).
    

    Changes:

     
  • ameur bilel
    ameur bilel
    2010-11-25

    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
      3114467).
    - 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.
    

    Giovanni