wiki:Release/4.7

Version 36 (modified by JoelSherrill, on 11/20/08 at 20:29:06) (diff)

/* Release 4.7.4 Changes */ Add 1337/bsps - Stripping .rodata section produces unusable executables for the i386-rtems target.

4.7 Release Notes

{| border="0" cellpadding="5" cellspacing="0" align="right"

! style="background:#efefef;" | |}

[8 August 2008]: Release 4.7.3 is EXPECTED to be the LAST PUBLIC RELEASE in the 4.7 release series from the RTEMS Project. Unless there are serious problems with the 4.7.3 release, once the 4.9.0 release is made publicly available, the 4.7 branch will be closed by the RTEMS Project. Legacy support for the 4.7 releases will be available from OAR Corporation.

This page lists the changes and improvements that were made to the RTEMS development source between the 4.6 and 4.7 release branches. As usual, there were submissions that were not expected and incorporated into the 4.7 release. User submissions are highly valued by the RTEMS Project. Please note that if we forgot to include anyone's work in this release information, it is an accident. Please email and we will add the information.

The fourh release from the 4.7 release series is 4.7.3. This version may be found in ftp://ftp.rtems.com/pub/rtems/4.7.3 or http://www.rtems.com/ftp/pub/rtems/4.7.3.

Tool Improvements

Thanks 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.60
  • automake 1.10
  • binutils 2.17
  • gcc 4.1.1 for C/C++ with newlib 1.15.0
  • gdb 6.5

RTEMS Improvements

  • A significant reworking of the Makefile and configure infratructure to meet a number of goals including higher compliance with GNU standards and eventual shipping of binaries for a RTEMS CPU Kit. The most visible results of this are that some source did move and that a LOT (> 1000) of Makefile.am's disappeared. Ralf Corsepius explained the changes in this post (http://www.rtems.org/rtems-4.7/%3Cget-var%20BACKPATH%3Eml/rtems-users/2004/february/msg00034.html) to the RTEMS Users mailing list. The following list is a more detailed perspective:
    • Movement to a single Makefile.am at the same level as each component's configure.ac. This eliminated > 1000 Makefile.am's.
    • A cleanup of the header file installation directories to allow for eventually being able to ship CPU Kit binaries.
    • Source code dependency tracking added to the build process.
    • Upgrade to latest auto* tools.
  • Project Infrastructure Upgrades
    • rtems.org server is new and significantly better
    • Yum/APT Repository for distribution of GNU/Linux RPMs
    • Switched to GNU mailman for mail lists
    • Switched to Bugzilla from GNATS.
    • RTEMS Wiki Established
  • Conversion of SuperCore? comments to Doxygen has been initiated.
  • Trailing spaces removed from files.
  • Large speedup in FAT filesystem performance by Thomas Doerfler
  • Addition of object ID to name lookup service -- rtems_object_id_to_name()
  • Addition of service that iterates over all threads and tasks in the system calling a user supplied function -- rtems_iterate_over_all_threads()
  • Upgrade of GoAhead? Webserver.
  • Addition of the following system calls from the Open Group Single UNIX Specification, Version 2:
    • sync() - schedule filesystem updates
    • ualarm() - set the interval alarm
    • usleep() - suspend execution for an interval
  • Addition of new BSPs
    • Motorola MPC5200 support with multiple BSPs by Thomas Doerfler
    • MIPS rbtx4925 and rbtx4938 BSPs for the corresponding Toshiba reference boards from Bruce Robinson of PMC Corporation. He also submitted the MIPS Hurricane BSP for the corresponding PMC-Sierra board.
    • Arcturus Networks BSP (ColdFire? uC5282) from Eric Norum of Argonne Labs
    • Intec Automation SS555 BSP written by David Querbach of Real-Time Systems Inc. This work was sponsored by the Defence Research and Development Canada - Suffield. He notes that the BSP is largely based on the mbx8xx ports, with some floating-point code from the mpc8260 port.
    • Jay Monkman has submitted a number of BSPs for Cogent boards. RTEMS now supports the ARM-based CSB336 and CSB337, the MC68360-based CSB360, and the MIPS-based (AMD Au1100) CSB350.
    • Motorola MVME2100 sponsored by Argonne National Laboratory.
    • Motorola MVME5500 BSP written by Kate Feng of Brookhaven National Laboratory.
    • Radstone EmPower EP1A which also supports the Radsone Empower PMCQ1 high speed serial and MIL-STD-1553 PMC.
    • GP32 BSP for the GamePark? handheld device submitted by Philippe Simons
  • Significant updates to existing BSPs
    • Support for MIP32 and R4000 targets and alignment fixes in the IP stack for all MIPS targets.
    • Added parameter to IRQ handlers in the powerpc and the i386 targets.
    • Converted powerpc score603e to new exception model.
  • Removal of obsoleted target CPUs and accompanying BSPs:
    • AMD a29k - no longer in production or active use.
    • Intel i960 - no longer supported by GNU tools.
    • MIPS64ORION - Now covered by mips port.
    • OR32 - Not well supported by GNU tools.
  • Removal of obsoleted BSPs:
    • arm/arm_bare_bsp - Example BSP no longer of use.
    • arm/vegaplus - Early ARM BSP without interrupt support.
    • m68k/efi68k - No longer available or in use.
    • m68k/efi332 - No longer available or in use.
    • powerpc/dmv177 - No longer available or in use.
    • powerpc/ppcn_60x - No longer available or in use.

RTEMS API Changes

  • Multiple .h files which were RTEMS specific are now installed under an rtems subdirectory.
    /* Before 4.6 */ #include <confdefs.h>
    /* After 4.6 */  #include <rtems/confdefs.h>
    
  • Format of Region Manager Statistics changed.
  • PCI API modified in attempt to provide same API across ports.
  • New constants in rtems/confdefs.h:
    • CONFIGURE_APPLICATION_NEEDS_LIBBLOCK - application is using libblock
    • CONFIGURE_SWAPOUT_TASK_PRIORITY - libblock swap task priority
    • CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER - application is using ATA driver
    • CONFIGURE_SWAPOUT_TASK_PRIORITY - ATA driver task priority
  • TBD - if something is missing add it here.

Changes Per Point Release

Release 4.7.4 Changes

NOTE: 4.7.4 has not been released yet. This section describes changes which will be in the 4.7.4 release.

Issues with PR numbers:

  • 1313/cpukit - "rtems_pty_maximum_ptys" not initialized
  • 1316/cpukit - message queue broadcast truncated messages that were too long and should have return an error per the documentation
  • 1333/cpukit - typo in termiostypes.h uses major instead of minor
  • 1334/doc - Misc Documentation Typos and Object ID correction
  • 1337/bsps - Stripping .rodata section produces unusable executables for the i386-rtems target.

Release 4.7.3 Changes

This release is the fourth in the 4.7 series and was cut on 8 August 2008.

Signficant changes between 4.7.2 and 4.7.3 include the following:

  • Issues With Problems Report Numbers
    • PR741 - Add dummy network configuration table for autoconf probes
    • PR1192 - libblock: Update the disktap pointer after the realloc.
    • PR1212 - Correctly enabled timeslicing when done by calling task. Adds sp44.
    • PR1237 - SPARC port specific modifications to avoid overflowing interrupted task stack under high load
    • PR1263 - User's Guide Partition: Improve discussion of alignment and minimum buffer sizes.
    • PR1265 - objectbyindex.c and prototype - rename parameter so including rtems.h and string.h in user code does not give warning.
    • PR1277 - i386 in_cksum macro had incorrect assembly constraints
    • PR1278 - SPARC/cpu.c - Fix incorrect bit manipulation on returning old address of raw trap handler.
    • PR1282 - librtems++ Interrupt class has confusion over vec and vector variable names
    • PR1291 - POSIX Blocking Calls with Timeouts as Absolute Times. There was confusion over absolute versus relative time used as timeout values for some blocking POSIX services. When correctly implemented as absolute time, some services could calculate a time as 0 ticks into the future and block the caller forever. The impacted services are:
      • pthread_cond_timedwait - could block forever
      • mq_timedreceive - used relative not absolute time
      • mq_timedsend - used relative not absolute time
      • pthread_mutex_timedlock - used relative not absolute time
      • pthread_rwlock_timedrdlock- used relative not absolute time
      • pthread_rwlock_timedwrlock- used relative not absolute time
      • sem_timedwait - could block forever
    • PR1288 - Services Allowed From ISR updated
    • PR1293 - PSX10 should avoid using -1 for tv_nsec value
    • PR1294 - Correct prototype and usage of sparc_disable_interrupts
    • TBD
  • Issues Without Problems Report Numbers
    • Corrected typos in C User's Guide
    • Updated and corrected Development Environment Guide
    • Fixed typos in C User's Guide on CONFIGURE_ENABLE_CLOCK_DRIVER.
    • Fixed minor mistakes in C User's Guide on rtems_io_unregister_driver.
    • Fix typo in comment in cpukit/score/include/rtems/system.h

Release 4.7.2 Changes

This release is the third in the 4.7 series and was cut on 14 February 2008. 4.7.2 was released on February 14 2008

Significant changes between 4.7.1 and 4.7.2 include the following:

  • Issues With Problems Report Numbers
    • 1237/rtems - Interrupt during dispatch may fill up task stack
    • 1240/filesystem - IMFS remove symlink leaks memmory
    • 1243/PR - invalid dereference in pppd/auth.c
    • 1244/bsps - pc386 defines own assert and should not do so
    • 1248/networking - Network setup jumps to random address when no interfaces available
    • 1249/build - Cache Support Not Enabled on SPARC/LEON3
    • 1256/networking - ftpd can generate a misaligned access
    • 1258/rtems - _Heap_Allocate_aligned() is broken (by patch to PR746).
    • 1259/rtems - some sptests fail when mp enabled.
    • 1260/cpukit - POSIX threads signals blocked improperly initialized
    • 1261/cpukit - POSIX Semaphore Create -- do not assume memory is zeroed
    • 1266/cpukit - POSIX Key Indexing Issues
    • 1268/cpukit - wrong method name in prototype in assoc.h
    • 1277/networking - invalid inline asm in cpukit/libnetworking/netinet/in_cksum_i386.h
  • Issues Without Problems Report Numbers
    • Corrected types in C User's Guide
    • Updated and corrected Development Environment Guide

Release 4.7.1 Changes

Signficant changes between 4.7.0 and 4.7.1 include the following:

  • Issues with Problems Report Numbers
    • 1226/cpukit - CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE spelled wrong
    • 1227/bsps - mbx8xx booting problems
    • 1230/tests - minimum should not include console driver
    • 1231/cpukit - POSIX API Files Unnecessarily Including assert.h
    • 1232/bsps - Fatal error in bsppost if /dev/console not present
    • 1233/bsps - erc32 printk use forces include of console driver
    • 1234/cpukit - Add assert based upon printk
    • 1235/bsps - mvme5500/pci/pci.c: PCI_DEBUG/PCI_PRINT
  • Issues Without Problems Report Numbers
    • Smaller executables. This was a of small changes which together shrunk minimum.exe on sparc/erc32 by approximately 1/3. Results vary by BSP and each BSP may have unnecessary dependencies or file structuring issues that need to be addressed. For example, on the erc32, the debug IO support was "ld -r" with the console driver which in turn resulted termios support being linked in to any application which used debug IO. There are still places in RTEMS itself where code and data space can be reduced but you must always start by examining the BSP for issues.
    • Stack Checker now bounds checks the actual stack pointer in addition to checking the end of stack memory. A user application had a 4K unused buffer on a task stack and the stack checked missed this.
    • PR1234 comments: Provided RTEMS specific implementation of assert which uses printk. This reduced executable size by 12K on applications not requiring printf() support. It also ensured that one should be able to assert from RTEMS critical sections and interrupts.
    • Stack Checker converted to use printk so there is a higher probability of getting a failure message.
    • Added dummy printk support to multiple BSPs so all tests will link.
    • ITRON rsm_tsk error code
    • MIPS Little and .sdata (aka R_MIPS_GPREL16 problem)
    • printk %p support added
    • Unnecessary include of assert.h removed.
    • BSD code updates and cleanup.
    • assoc.c: Dead code removed. Warnings fixed.
    • RTEMS Classic API Ada bindings updated.
    • License URL updated in many files.
    • m68k/mvme162: No longer build tools that are specific to Solaris VMEBus hosts.
    • Multiple BSPs had bsp_specs cleaned up.

Release 4.7.0 Changes

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