4.11 Release Notes
4.11 To Do List
The items in these lists are in no particular order and subject to discussion, additions, and deletions.
The following are things that MUST be resolved before 4.11 is branched:
- Tools stabilized on known versions
- Looks impossible to have all tools on same GCC version.
- Some GDB simulators do not support Mingw. We will likely have to accept that.
- All BSPs must build without error
- Select BSPs must run tests without errors
- List of BSPs and acceptable conditions TBD
- Coverage run and baseline for release agreed to
- Need to set coverage goal for either ERC32 or LEON3 and meet it.
- Address Getting Started manual
- RSB not mentioned for one
- All GCI patches reviewed and merged as appropriate
- All GSOC projects reviewed and evaluated for merger.
- Minimum is a plan for future
- Release procedure on git defined
The following are things that WOULD BE NICE to be resolved before 4.11 is branched:
- Warning reduction pass
- Focus on all SPARC BSPs, select PowerPC, ARM and MIPS
- All test .doc files in place and updated to not have XX_method RTEID form of name.
- POSIX and Classic affinity APIs in place
- May not have scheduler with support.
- OS Web Monitor in network demos
- Pok and i386 hyopervisor patches
To be discussed:
- Status of USB and new TCP/IP stack
Open Ideas are are: RTEMS411Ideas
This page lists the changes and improvements that are planned and/or have been made to the RTEMS development source since the 4.9 release branch was made. As usual, there will be submissions that are not expected and incorporated as ready into the 4.11 releases. In keeping with project history, the feature set of the 4.11 release series will be largely be driven by user submissions and requests.
Any snapshots made during this development effort are numbered 4.10.99.x.
The RTEMS project provides built tools sets that are available for download. For Linux the RPM package format is supported and available from the APT/Yum Repository. For Windows MinGW Executable Installers are available.
If any changes or enhancements are missing in this list, feel free to add them. After all, that's why this is a Wiki.
- New ARM tool chain configuration: arm-rtems4.11
- Thanks again to Ralf, it is possible to provide target specific versions of the development tools. This is important when GCC drops support for an old architecture or we are avoiding target specific bugs in a particular tool version. Nominally, most RTEMS targets will use the same tools and they have been upgraded to the following versions:
- autoconf 2.69
- automake 1.12.6
- binutils 2.24
- gcc 4.8.2 or C/C++ with newlib 2.1.0
- gdb 7.5
The latest patch for each tools is in rtems/contrib/crossrpms/patches.
In this section, we discuss public API level changes as well as improvements to the implementation of those API routines.
Public API changes usually fall into one of the following categories:
- Addition of new methods
- Modifications to prototypes
- Deletion of obsoleted methods
Implementation improvements usually fall into one of the following categories:
- Algorithm improvements in execution time or memory usage
- Critical section reduction
- Score Chain API changed due to strict aliasing concerns. In case you have a compiler error related to RTEMS chains, you should use the appropriate API function and do not access chain control members directly.
- The loop back interface of the network stack will be initialized now during the normal initialization via rtems_bsdnet_initialize_network(). The loop back interface configurations are now obsolete and must be removed. You will notices this if you encounter a linker error of undefined references to rtems_bsdnet_loopattach().
- rtems_initialize_start_multitasking() was void and now returns the uint32_t passed to rtems_shutdown_executive(). This exit status is propagated by boot_card() to bsp_cleanup() and returned to the assembly initialization.
- RTEMS_offsetof() was removed. This macro was not documented. Use the standard offsetof() instead. See https://www.rtems.org/PR1941
- The file system API has changed considerably.
- The work area initialization (RTEMS work space and C program heap) changed. Now a table based initialization is used.
- The block device transfer request API changed.
- The Termios interrupt write support invocation changed.
- rtems_panic() / rtems_error(RTEMS_ERROR_PANIC ...) no longer cause a halt of the local system, but a reset (assuming no application or BSP-specific fatal error extension intervenes)
- The Mongoose HTTP / web server has been updated to version 3.9, at the last point before the MIT -> GPL license change. Its API has changed considerably. In particular, please ensure you pass an initialised struct mg_callbacks as the first argument to mg_start(), with all members set to NULL if you don't use callbacks
- POSIX keys and POSIX once are now available even if POSIX-API is not enabled.
- The shell now relies on POSIX keys instead of task variables. This means that enough keys and key-value-pairs have to be configured.
- C++ support now relies on POSIX keys instead of task variables. This means that enough keys and key-value-pairs have to be configured.
- Private environments are now relying on POSIX keys instead of task variables.
- There is one key automatically added to the configuration. The configuration hast to define one additional key-value-pairs for each thread that uses a private environment. If no private environment is used there is no need to change a existing configuration.
- Please note that the chroot() function uses a private environment. If chroot() an appropriate number of key-value pair is necessary.
- Please note that the ftp-server uses chroot() and therefore needs an appropriate number of key-value pairs.
- New red-black tree implementation with API. In contrast to the RTEMS Chains this container offers no internal locking mechanisms. The user must ensure that at most one thread at once can access a red-black tree instance.
- Constant Bandwidth Server (CBS) scheduler API added as an interface for communication with the scheduler.
- The IMFS allows now generic nodes:
- System events and transient event:
- There are now additional fatal sources
- RTEMS_FATAL_SOURCE_ASSERT, and
- There is a new fatal error function rtems_fatal().
API Implementation Improvements
- POSIX semaphores make now a copy of the name string (similar to POSIX message queues). This allows dynamic creation of POSIX semaphore names.
- The fatal error handling changed considerable. The function _Internal_error_Occurred() can now be called in nearly every system state. The invocation of the fatal extension of an initial extension is guaranteed under the following conditions. The initial extensions reside in read-only memory. The following conditions must hold
- the stack pointer is valid,
- the code memory is valid,
- the read-only data is valid, and
- the read-write data is accessible.
- Possible to use new EDF scheduler (CONFIGURE_SCHEDULER_EDF) and new CBS scheduler (CONFIGURE_SCHEDULER_CBS).
- More accurate workspace size estimate.
- The stack space size estimate is now separate and not a part of the overall workspace size estimate.
- The root file system mount parameters can be now configured via rtems_filesystem_root_configuration.
- Add CONFIGURE_UNLIMITED_OBJECTS and CONFIGURE_UNLIMITED ALLOCATION_SIZE to auto-extend classic and posix objects whose resource limits are not otherwise defined.
- The Configuration is now read-only and must be statically initialized via confdefs.h or similar.
- BSPs can now register an initial extension via the BSP_INITIAL_EXTENSION define.
RTEMS Shell Improvements
The following improvements were made to the RTEMS Shell:
- New command lsof to list all referenced file system locations.
- Added support for the Moxie open source processor architecture.
- Added support for the SPARC V9 (sparc64) CPU family, a 64-bit processor architecture.
- Added support for ARM Cortex-M (ARMv7-M).
- Added support for Journalling Flash File System, Version 2 (JFFS2) imported from Linux 3.11 and eCos.
- FTPFS will no longer use the BOOTP server address as default if no hostname was specified. The FTP path must specify the hostname. Applications can obtain the BOOTP server address and from the appropriate path.
- Added new two configurable single processor schedulers: Earliest Deadline First (EDF) and Constant Bandwidht Server (CBS).
- The exit(), _exit() and abort() functions leads now to a fatal error. The fatal source is RTEMS_FATAL_SOURCE_EXIT and the fatal code is the exit status. The rtems_panic() and rtems_error() are also affected by this since they call one of these functions. Depending on the fatal error extensions this may lead to a bsp_reset(). A reset is the default provided by the BSP.
- Thread-local storage (TLS): Supported on ARM, m68k, PowerPC and SPARC. Other architectures lack an implementation.
- Scheduler Refactoring Improvements
BSPs and Device Drivers
- New BSPs
- BSPs for ARM
- lm3s69xx - ARM Cortex-Mx based BSP supports Stellaris Microcontroller LM3S6965 (works only on Qemu), LM3S3749 and LM4F120
- lpc17xx - NXP LPC1700
- stm32f4xxxx - Discovery kit for STM32 F4 series - with STM32F407 MCU
- stm32f10xxx - STM32F105RC MCU
- Xilinx Zynq
- RealView PBX (works only on Qemu)
- raspberrypi - Raspberry Pi
- BSPs for bfin
- BSPs for moxie
- BSPs for sparc64 cpu model
- BSPs for PowerPC
- BSPs for ARM
- Significant updates to existing BSPs
- Full driver support for Milkymist SoC (video input, DMX, MIDI, USB input devices, ...)
- Removal of obsoleted BSPs
- i386ex - Removed 1 March 2011
- ts_386ex - Removed 1 March 2011
- Drivers: TBD
RTEMS API Changes
This section covers the API changes between the 4.9 and 4.10 release series which are expected to have an impact on application source code. This section does NOT cover additions to the API.
Changes Per Point Release
Release 4.11.0 Changes
When this happens, you will be the first to know. :)