wiki:Release/4.11

Version 29 (modified by Chris Johns, on Mar 23, 2017 at 12:49:27 AM) (diff)

Update the page to add the release details.

4.11 Release Notes

The 4.11 releases are:

Tool Improvements

  • New ARM tool chain configuration: arm-rtems4.11
  • This is the first release series to use the RTEMS Source Builder (RSB). With this, it is possible to provide target specific versions of the development tools on many hosts. 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.26
    • gcc 4.9.3 with newlib 2.2.0.20150423.
    • gdb 7.9

The URL for the latest patch for each tool is captured in the RSB recipe to build that tool. All source and patches are fetched from the Internet as part of building your toolset.

RTEMS Improvements

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

API Changes

  • 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 loopback 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() no longer returns to the caller (usually boot_card()). All system termination paths should end up in _Terminate().
  • The clock driver API changed. The nanoseconds extension was removed. Clock drivers may provide a timecounter for high resolution timestamps. See https://docs.rtems.org/doc-current/share/rtems/html/bsp_howto/Clock-Driver.html#Clock-Driver.
  • RTEMS_offsetof() was removed. This macro was not documented. Use the standard offsetof() instead. See https://devel.rtems.org/ticket/1941
  • 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.
  • The Termios framework provides a new device model. The old device model is still supported for legacy drivers.
  • 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 the 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.

API Additions

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.

API Deprecations

  • Notepads: rtems_task_set_note(), rtems_task_get_note(). Consider using POSIX keys instead.
  • Task Variables: rtems_task_variable_add(), rtems_task_variable_delete(). Consider using POSIX keys instead.
  • rtems_clock_get(). Use other clock methods instead.

API Removals

  • malloc_get_statistics(): Use malloc_info() instead. See also malloc shell command.

Configuration Changes

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

General

  • Added support for the Moxie open source processor architecture.
  • Added support for the OpenRISC (or1k) open source processor architecture (target=or1k).
  • Added support for the Epiphany processor (eCore) architecture (target=epiphany).
  • Added support for the SPARC V9 CPU family, a 64-bit processor architecture (target=sparc64).
  • 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 lead 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
  • TBD

BSPs and Device Drivers

  • General
    • TBD
  • New BSPs
    • BSPs for ARM
      • lm3s69xx - ARM Cortex-Mx based BSP supports Stellaris Microcontroller LM3S6965 (works only on Qemu), LM3S3749 and LM4F120
      • lpc24xx - NXP LPC1700, LPC4000
      • stm32f4xxxx - Discovery kit for STM32 F4 series - with STM32F407 MCU
      • stm32f10xxx - STM32F105RC MCU
      • Altera Cyclone V
      • Xilinx Zynq
      • RealView PBX (works only on Qemu)
      • raspberrypi - Raspberry Pi
      • Ti tms570 - TMS570LS3137 support, full header files, option to include hardware complete initialization to start directly from Flash
    • BSPs for bfin
    • BSPs for Epiphany
      • epiphany_sim - It runs on the Epiphany default simulator.
    • BSPs for moxie
      • moxiesim
    • BSPs for OpenRISC (or1k)
      • generic_or1k - This BSP can run on or1ksim (the main or1k simulator), QEMU, jor1k and a real or1k supported FPGA board (has been tested on Atlys board).
    • BSPs for sparc64 cpu model
    • BSPs for PowerPC
      • qemuprep? - run a variant of motorola_powerpc in qemu
      • QorIQ - P1020, T2080, T4240
      • t32mppc - Lauterbach Trace32 PowerPC simulator
  • Significant updates to existing BSPs
    • pc386 family (pc386 .. pc686) VESA BIOS Extension (VBE) based frame buffer configuration selected by default
      • the switch to graphic mode is controlled by multiboot option --video=auto|off|1024x768-32 etc.
      • application can override default none by exporting variable const char * const rtems_fb_default_mode="auto";
    • 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

Test Suites =

  • TBD

RTEMS API Changes

This section covers the API changes between the 4.10 and 4.11 release series which are expected to have an impact on application source code. This section does NOT cover additions to the API.

  • TBD

4.11.2 (open)

#1523
gethostbyname is not reenterant.
#2002
ioctl recursive perimeter lock driver deadlock vulnerability
#2058
RPC library audit required
#2324
Documentation and quick start for the RSB
#2388
[PATCH] [NFS client] Remove old CVS keywords
#2401
ARMv7M: Default exception handler doesn't support FPU
#2479
RTEMS Source Builder gets wrong version of rtems-tools for rtems4-11.
#2499
RSB 4.11 broken on FreeBSD 10 with default prefix.
#2622
FAT file corruption when pre-empted while appending to a file
#2670
epiphany tools fail to build on 4.11
#2708
【rtems-bsp shell script does not list the available BSPS】
#2755
FAT mkdir() broken
#2758
SDCard driver for QoriQ
#2815
Add Preferred waf to top of various repositories
#2827
rtems-bsps broken on 4.11 branch
#2886
RTEMS version is wrong on 4.11 branch
#2907
BSP Script v4.11 Fix
#2908
FAT filename comparison is broken
#2913
RTEMS FAT32 formatter does not set the not dirty and no IO error bits
#2914
termios: Race condition in raw input buffer handling
#2915
termios: Potential infinite loop in canonical mode
#2928
FAT filename comparision is broken while using the UTF-8 support
#2929
FAT long file names accross cluster boundaries may be broken
#2934
FAT long file name padding is broken
#2936
Deadlock in filesystem location management
#2937
FAT race condition msdos_dir_read()
#2939
FAT file name search may not consider long file names
#2940
rtems-docs output and catalogue.xml verison numbering is wrong.
#2947
FreeBSD 11.0 check warnings for makeinfo and install-info
#2948
ARM: Optimize IEEE-754 sqrt implementation
#2950
doxygen does not install on sync.rtems.org
#2952
Support a release candidates residing in an `rc` directory.
#2953
Change Trac time format to absolute.
#2955
Backport libdl fixes to the 4.11 branch.
#2956
Backport rtems-tester qemu console fix.
#2989
doxygen crashes on sync.rtems.org
#2996
source download for RTEMS 4.11.2-rc1 Release
#3002
Incorrect bit reference in ARM GIC
#3005
Typo in RTEMS Source Builder 4.11.99
#3030
lm32-rtems4.11-gdb does not build on Windows.
#3033
MIPS does not build on FreeBSD
#3035
4.11/rtems-moxie does not build.
#3042
4.11/rtems-bfin does not build on Windows
#3044
4.11/rtems-h8300 does not build on Windows.
#3045
4.11/rtems-h8300 does not build on Windows
#3060
ARMv7-M interrupt processing is broken
#3064
RSB does not handle the `--rsb-file` option named sources with releases.

4.11.1 (17 November 2017)

#2119
Could the software be downloaded at the beginning?
#2121
CVS command failure clean up.
#2124
Strict order mutex introduces unbounded priority inversion
#2243
c/src/lib/libbsp/arm/nds/libfat/source/directory.c:768: possible bad compare ?
#2274
Enable libgomp build in GCC
#2286
cpustdatomic.h on 16 and 64 bit architectures
#2287
RTEMS printf warnings - newlib's inttypes.h and gcc's newlib-stdint.h
#2298
sptls01 fails on sis
#2309
RSB get stuck building: expat-2.1.0-x86_64-w64-mingw32-1
#2312
rtems-tools built in RSB on Linux fails to install
#2317
fsfseeko01 invalid on some architectures
#2318
Wrong alignment of ARM exception frame
#2326
Or1k bsp not supported for c++ usage
#2328
_CORE_message_queue_Insert_message() not ISR proof
#2329
or1k Linking error on C++ tests
#2332
rtemstools cannot be built by RSB under MinGW32
#2345
BSP spec file error.
#2358
Interrupt latency problem in _POSIX_Timer_Insert_helper()
#2364
pc386 build fails
#2369
[PowerPC Book E] Invalid mftb instruction in _CPU_Counter_read()
#2373
PowerPC BSPs that do not build
#2374
RSB builds 3rd party packages as Canadian Cross (Cxc) packages
#2378
ampolish3 script can't always find perl
#2379
Ensure ada-tests build
#2380
Incorrect title for C User's Guide in info output
#2384
[PATCH] [NFS client] Respect 2^32 - 1 B NFSv2 maximum file size
#2402
pthread_cancel() invalidates the thread identifier
#2405
CppCheck errors being reported throughout the code
#2410
rtems_dhcp.c fails to compile ("free" requires an extra argument)
#2411
dumpbuf.c compiles with warnings
#2416
Beaglebone: bsp.h missing clobber in inline assembly.
#2418
rtems_waf: SMP support is broken
#2435
gpio functions in bsp name improvement
#2437
if pax is not found by configure, the tests fail to build un-gracefully.
#2438
ARM cache problem after libdl load
#2440
rtems_waf: Install is broken for version != 4.11
#2465
Update Hello World Instructions to include MSYS2
#2495
RSB 4.11 tool build broken
#2497
Beaglebone Black: rtems_gpio_bsp_disable_interrupt disables all the GPIO interrupts
#2505
beagle sdcard.sh has hard-coded rtems arm-rtems4.11-objcopy
#2508
Remove LICENSE.WEBSERVER
#2511
WorkSpace wiki page
#2512
RTEMSReferences automatically deleting content
#2525
RSB Python scripts may refer to Python3
#2535
Shell: printf() format specifiers do not match parameter types
#2579
Add per-section compilation and linking support to powerpc/motorola_powerpc
#2589
Update Applications Ada User's Guide
#2594
Update POSIX 1003.1 Compliance Guide
#2595
Update Filesystem Design Guide
#2645
RSB qemu bset issues and failure
#2646
glib cfg file is missing hash. Fails in release mode
#2721
sem_init() does not honour SEM_VALUE_MAX
#2731
rtems/c/src/lib/libbsp/arm/raspberrypi/console/console_select.c:98]: (warning) Found calculation inside sizeof().
#2756
MSDOS_MAX_DIR_LENGHT typo
#2772
Enhancement for more general real-time model
#2785
Ioctl extension for termios
#2801
Invalid configuration option used in virtex bsp headers
#2812
Remove Texinfo Documentation
#2813
4.11.0 has incorrect version information

4.11.0 (16 November 2017)

No results