Notice: We have migrated to GitLab launching 2024-05-01 see here:

Version 18 (modified by Gedare Bloom, on 05/14/15 at 18:06:22) (diff)


4.6 Release Notes

Release 4.6.6? is the LAST PUBLIC RELEASE in the 4.6 release series from the RTEMS Project. Legacy support for the 4.6 releases is available from OAR Corporation.

Release 4.6.6 of RTEMS is primarily a problem fixing release and the problems addressed are discussed here. The primary driving factor for 4.6.6? was a patch to address GCC optimizing code outside of interrupt disable critical sections. Other bug fixes and improvements were also committed to the branch so this release includes them. The notable changes are that the SPARC LEON3 BSP received significant improvements including supprt for SpaceWire? and a new NIC from Gaisler Research. The PC386 BSP was modified to allow easy compile time selection of VGA or COM1 as the console.

4.6.6 is available for download from or

Please be warned that the entire set of tools for all hosts can consume an enormous amount of space. For the 4.6 series, this is approximately 1.6 GB. The bulk of this is tool binaries for approximately 10 target CPU families on GNU/Linux, Cygwin, and Solaris. It is highly unlikely that any non-maintainer requires a full download. Please try to download just what is required.

In addition to the standard RTEMS feature set?, the 4.6 release series includes these major improvements over previous RTEMS releases:

Tool Improvements

RTEMS Improvements

  • New port to the ARM including network optimizations
  • New port to the OpenCores?.org OR32
  • MIPS port redesigned to support more CPU models including the space hardened LSI 33000 derivative Mongoose V and the Toshiba TX3904.
  • New Board Support Packages for:
    • ARM simulator in GDB
    • ARM based Cogent EDP7312
    • ARM VegaPlus? with support for on-CPU peripherals
    • MIPS Mongoose V and on-CPU peripherals
    • Motorola MCF5206Elite Coldfire
    • Motorola MTX603e, MVME2100, and MVME230x
    • Motorola MPC8260ADS
    • PC BSP variants optimized for 486, Pentium and above, and Athlon
    • Reneas/Hitachi? SH4 generic BSP
    • SPARC ERC32 BSP variation for CPU model without FPU with support on-CPU peripherals
    • SPARC LEON2 and LEON3 with support for on-CPU peripherals
    • Tosbiba MIPS JMR3904 and on-CPU peripherals
  • FAT filesystem supporting FAT12, FAT16, and FAT32
  • ATA/IDE device support
  • NFS client
  • Dynamic downloading via CEXP shell
  • Numerous ported third party packages including Python and TCL
  • Many more improvements including more POSIX support and much reorganization as part of the ongoing effort to move RTEMS to full automake support and separate the CPU and BSP portions of RTEMS.

Changes Per Point Release

Release 4.6.6 Changes

11 problems reports ( filed by users were closed between 4.6.5 and 4.6.6. Four (4) of these were BSP specific. These problems can be roughly categorized as follows:

  • Run-Time Problems (7)
    • 830/filesystem - termios ioctl(FIONREAD) reported wrong number of chars
    • 843/rtems_misc - memory corruption in web server when not using "internal" malloc
    • 849/networking - rtems portmapper stack overrun
    • 850/rtems - watchdog with delay of 1 failing to time out
    • 855/tests - a bug in the define of macro function sprint_time()
    • 886/filesystem - fcntl(F_GETFL) POSIX violation (non-blocking fd doesn't return O_NONBLOCK)
    • 890/networking - Webserver POST DoS vulnerability
  • BSP and Port Specific Problems Reports (5)
    • 719/bsps - m68kpretaskinghook.c vs if ((unsigned long)&pointer == 0)
    • 834/bsps - PPC BSP exception handler stack popping fix
    • 837/bsps - 4.6.5 broken on motorola_powerpc (mvme23xx, 26xx, ..) other than mvme2100
    • 845/bsps - mvme2100 BSP has MMU disabled

Release 4.6.5 Changes

6 problems reports ( filed by users were closed between 4.6.4 and 4.6.5. Five (5) of these were BSP specific and only one was cross-platform. These problems can be roughly categorized as follows:

  • Run-Time Problems (1)
    • PR 829/rtems - task variable dtor called with wrong argument<
  • BSP and Port Specific Problems Reports (5)
    • 527/bsps - mbx8xx BSP should be modified in various ways (same fix as PR 822)
    • 577/bsps - Lib Shared Console Close correction
    • 822/bsps - MBX8xx-BSP does not boot (same fix as PR 527)
    • 827/bsps - sparc BSP update
    • 833/bsps - PPC BSPs must not enable FPU across user ISR

Release 4.6.4 Changes

38 problems reported ( by users were fixed between 4.6.2 and 4.6.4. On a positive note, 3 of these issues were simple improvements in argument parsing, 8 were general improvements in either functionality or cleanup, and 12 were BSP or port specific. These problems can be roughly categorized as follows:

  • Improved Parameter Validation (3)
    • PR 628/rtems - POSIX sigset of 0 should result in EINVAL
    • PR 749/networking - NULL pointer derefernce in show_inet_route().
    • PR 750/pppd - NULL pointer derefernce in wait_input().
  • Run-Time Problems (10)
    • PR 577/bsps - Lib Shared Console Close correction
    • PR 692/rtems - Region Manager broken for blocking when empty
    • PR 745/rtems - internal timers are not always reinitialized
    • PR 772/networking - select() not waking up when socket becomes writable
    • PR 790/rtems - Extensions name are not correctly managed
    • PR 796/rtems - sem_timedwait uses relative time instead of absolute time
    • PR 805/rtems - It is not possible to create more than 11 posix timers
    • PR 807/rtems - Timer chain corruption with simultaneous used by different priority interrupt
    • PR 808/rtems_misc - printk crashes with field size smaller than value.
    • PR 820/rtems - core msgq count not atomic with chain inserts
  • Improvements (8)
    • PR 704/bsps - ide controller wrapper should only be once in the source tree
    • PR 721/filesystem - unlink does not yet work for DOSFS
    • PR 742/rtems - cpukit/score/include/rtems/system.h stringify pollutes application namespace
    • PR 744/filesystem - fix unlink for dosfs
    • PR 786/rtems - Backport mallocfreespace optimization to 4.6
    • PR 810/rtems - ide_part_table.h does not link with cpp
    • PR 817/rtems - rtems_gxx_recursive_mutex_init_function
    • PR 819/filesystem - symbol clash in ttyname.c and ttyname_r.c
  • BSP and Port Specific Problems (12)
    • PR 581/bsps - PSIM BSP should migrate to powerpc new exception processing model
    • PR 617/bsps - cdtest sample and C++ constructors do not work on psim
    • PR 693/rtems_misc - mc146818a_ioreg.c is non-portable
    • PR 696/bsps - powerpc: old_exception_processing/cpu.c need bsp.h
    • PR 697/bsps - Suspicious comments in helas403/flashentry/flashentry.S
    • PR 715/bsps - libchip/rtc/mc146818a.c should not include bsp.h
    • PR 717/bsps - motorola_powerppc bootloader miscompiled
    • PR 743/bsps - pc386 BSP build fails on rtems-4-6-branch
    • PR 777/bsps - psim: Add a Processor_Synchronize command in bsp.h
    • PR 778/bsps - score603e - modify SCORE_.. to BSP_.. for globally used defs.
    • PR 781/rtems_misc - libchip: ns16550 has an error in the baud rate calculation
    • PR 816/bsps - mpc8xx ethernet struct has taddr members in the wrong order
  • Documentation Issues (1)
    • PR 706/doc - Classic API task_is_suspended doc has extra not
  • Tool Issues (1)
    • PR 594/tools - GNAT Is missing
  • Test Issues (2)
    • PR 628/rtems - POSIX sigset of 0 should result in EINVAL. XXX
    • PR 721/tests - bogus assert in itrontests/itronsem01
  • Miscellaneous
    • PR 350/make_build - Honor user setting LD_PATHS as addition to LDFLAGS

Release 4.6.3 Changes

There was officially no 4.6.3 release. There is a tag in CVS however, the release process was aborted when what we thought at the time was a serious problem was discovered. Since the number was already used, it was just skipped.

Release 4.6.2 Changes

37 problems reported ( by users were fixed between 4.6.1 and 4.6.2. On a positive note, 8 of these issues were simple improvements in argument parsing and 7 were general improvements in either functionality or cleanup. These problems can be categorized as follows:

  • Improved Parameter Validation (8)
    • PR 618/rtems - add null checks to Classic API
    • PR 628/rtems - POSIX API sigset of 0 should return EINVAL
    • PR 629/rtems - POSIX mqcreate check msg size <= not < 0
    • PR 651/rtems - Classic API task ident missing NULL check
    • PR 652/rtems - Classic API signal send does not detect empty signal set
    • PR 659/rtems - Heap get size does not check for out of range address
    • PR 660/rtems - thread stack allocation -- detect math overflows
    • PR 661/rtems - object mp name search -- fix invalid dereference
  • Run-Time Problems (6)
    • PR 609/rtems - Race condition between _Thread_Dispatch and _Thread_Tickle_timeslice
    • PR 626/networking - avoid printing 0xFFFFF for bytes > 127
    • PR 641/rtems - Events sent to a task entering rtems_event_receive() may be lost
    • PR 654/rtems - Thread_Control watchdog is not initialized on reuse
    • PR 681/misc - stack checker dereferences bad pointer
    • PR 692/rtems - Region Manager broken for blocking when empty
    • PR 686/networking - if_fxp.c locks up
  • Improvements (7)
    • NO PR -- Added NFS client to Add-On Packages
    • PR 605/rtems - mips cpu.c uses C++ style comments
    • PR 619/bsps - (mpc6xx) account for latency when updating decrementer clock
    • PR 625/networking - small fixes to some libchip/network drivers
    • PR 676/networking - /etc/resolv.conf contains NTP instead of DNS servers
    • PR 676/misc - rtmonuse.h missing extern C wrapper
    • PR 688/bsps - Add libchip support for Motorola MC146818 time-of-day clock
  • BSP and Port Specific Problems (8)
    • PR 569/bsps - i386/pc386: pcibios.c lacks BusCountPCI() -- see 608
    • PR 606/bsps - (PowerPC) Minor enhancements and fixes to PCI support
    • PR 607/networking - Adjusted dec21140 PCI config to minimum sane
    • PR 608/bsps - Preliminary fix for pc386 BusCountPCI()
    • PR 671/bsps - ARM _ISR_Set_level broken
    • PR 679/bsps - i386ex linkcmds missing newer sections
    • PR 680/bsps - mpc8260ads network driver does not compile
    • PR 691/bsps - gen405 has linkcmds buglet
  • Documentation Issues (3)
    • PR 627/doc - document behavior when stacksize < minimum
    • PR 682/doc - Getting Started -- minor corrections to PATH and tar examples
    • PR 683/doc - User's Guide preface has chapters misnumbered
  • Tool Issues (2)
    • PR 588/tools - Remove m505/roe multilib variant in 3.4.0 patch
    • PR 621/tools - powerpc-rtems-gcc >= 3.3.2 lacks -DUSE_INIT_FINI

Release 4.6.1 Changes

Fourteen problems reported ( by users were fixed between 4.6.0 and 4.6.1. These problems can be categorized as follows:

  • General Build Failures (1)
    • PR574 (libcpu/i386/ missing) prevented all i386 BSPs from building.
  • RTEMS Run-Time Problems (5)
    • PR582 (POSIX message queue memory allocation problem) fixed a problem which rendered POSIX message queues unusable.
    • PR584 (Critical section window in Event Timeout) closed a small window.
    • PR598 (MIPS FP context switch error) added the needed save and restore of the FPCS register.
    • PR599 (PPPD memory allocation issues) fixed places where memory was allocated and not freed.
    • PR604 (sparc cpu_asm.S has window resulting in corrupted CWP) addressed a small window in the interrupt task switch path which resulted in the CWP getting corrupted.
  • BSP Specific Problems (3)
    • PR505 (libbsp/m68k/shared/setvec.c) fixes a warning with gcc 3.3 and newer.
    • PR575 (motorola_powerpc: conflicting linkcmds) removed an unused and confusingly different linkcmds in the shared codebase.
    • PR602 (mpc8260ads irq.h typo) prevented this BSP from building the C++ RTEMS examples.
  • Documentation Issues (1)
    • PR576 (FAQ/embedded.t is outdated) removed an out of date file.
  • Test Issues (3)
    • PR583 (tm26 and tm27 broken) fixes these tests to address needing to be out of a dispatching critical section before allocating memory.
    • PR596 (sp32 broken for buffered output) lets this test run when bufer test IO mode is enabled.
    • PR595 (sp13 buffer overrun) addresses a buffer overrun
  • Tool Issues (1)
    • PR594 (GNAT missing) addresses the problem that rtems-4.6-gcc3.2.3newlib1.11.0-2 did not include GNAT. rtems-4.6-gcc3.2.3newlib1.11.0-3 tool binaries for GNU/Linux now include GNAT.

Release 4.6.0 Changes

This was the first release in the 4.6 Release Series and first to have all the major improvements listed at the top of this page.