RTEMS 5 Embedded Realtime Operating System ------------------------------------------------------------------------ Home: https://ftp.rtems.org/pub/rtems/releases/5/rc/5.1.0-rc1 Release: 5.1.0-rc1 Date: 26 June 2020 ------------------------------------------------------------------------ The Real-Time Executive for Multiprocessor Systems or RTEMS is an open source Real Time Operating System (RTOS) that supports open standard application programming interfaces (API) such as POSIX. It is used in space flight, medical, networking and many more embedded devices using processor architectures including ARM, PowerPC, SPARC, Intel, RISCV, MIPS, NIOS-II, Microblaze and more (a full list is provided at the end). This release directory contains the source code for the RTEMS 5.1.0-rc1 operating system and tools. All the documenation provided in HTML and PDF formats. Please drop by the Users mailing list (users@rtems.org) and let us know how you are using RTEMS. We love hearing about user projects. Many thanks to everyone who helped create this release. Regards The RTEMS Development Team. RTEMS Web Sites ----------- ------------------------------------------ Home https://www.rtems.org/ Download https://ftp.rtems.org/pub/rtems/releases Wiki https://devel.rtems.org/ Docs https://docs.rtems.org/ Bugs https://devel.rtems.org/query Lists https://lists.rtems.org/ Developer https://devel.rtems.org/ GIT https://git.rtems.org/ ----------- ------------------------------------------ Release Files ----------------------------------------------------------------------- 5.1.0-rc1 Top level directory ---------------------------------------- ------------------------------ README.txt, index.html This document contrib Directory contains extra release related files docs The generated RTEMS documentation sources Source code for this release rtems-5.1.0-rc1-release-notes.pdf Detailed RTEMS Release notes sha512sum.txt The SHA512 checksums for this directory ----------------------------------------------------------------------- Source Downloads RTEMS Source Code --------------------------------------- -------------------------------------------- rtems-5.1.0-rc1.tar.xz RTEMS kernel rtems-source-builder-5.1.0-rc1.tar.xz RTEMS Source Builder rtems-tools-5.1.0-rc1.tar.xz RTEMS Tools rtems-docs-5.1.0-rc1.tar.xz RTEMS Documentation source rtems-libbsd-5.1.0-rc1.tar.xz RTEMS LibBSD rtems-examples-5.1.0-rc1.tar.xz RTEMS Examples sources All source code for this release sha512sum.txt SHA512 checksums for the sources directory RTEMS Documentation The generated documentation can be found in the docs directory. The following manuals are available as compress HTML tar files or PDF: RTEMS User Manual - docs/rtems-5.1.0-rc1-user.pdf - docs/rtems-5.1.0-rc1-user-html.tar.xz RTEMS C User Manual - docs/rtems-5.1.0-rc1-c-user.pdf - docs/rtems-5.1.0-rc1-c-user-html.tar.xz RTEMS POSIX User Manual - docs/rtems-5.1.0-rc1-posix-users.pdf - docs/rtems-5.1.0-rc1-posix-users-html.tar.xz RTEMS Software Engineering Manual - docs/rtems-5.1.0-rc1-eng.pdf - docs/rtems-5.1.0-rc1-eng-html.tar.xz RTEMS Networking User Manual - docs/rtems-5.1.0-rc1-networking.pdf - docs/rtems-5.1.0-rc1-networking-html.tar.xz RTEMS Shell User Manual - docs/rtems-5.1.0-rc1-shell.pdf - docs/rtems-5.1.0-rc1-shell-html.tar.xz RTEMS Doxygen - docs/rtems-5.1.0-rc1-doxygen-html.tar.xz Quick Guide to Building For new user the Quick Start in the User Manual contains a details Quick Start guide. Download the User Manual: https://ftp.rtems.org/pub/rtems/releases/5/rc/5.1.0-rc1/docs/rtems-5.1.0-rc1-user.pdf and follow the instructions in the Quick Start section. If are familiar with RTEMS or just want to get going the following steps will download the RTEMS Source Builder: cd mkdir -p development/rtems cd development/rtems wget https://ftp.rtems.org/pub/rtems/releases/5/rc/5.1.0-rc1/sources/rtems-source-builder-5.1.0-rc1.tar.xz tar Jxf rtems-source-builder-5.1.0-rc1.tar.xz cd rtems-source-builder-5.1.0-rc1/rtems To build the tools for the ARM architecture: ../source-builder/sb-set-builder \ --prefix=$HOME/development/rtems/5.1.0-rc1 \ 5/rtems-arm To build the tools, kernel and all packages for the Beagleboneblack: ../source-builder/sb-set-builder \ --prefix=$HOME/development/rtems/5.1.0-rc1 \ 5/bsps/beagleboneblack If you encounter a problem please post to the user@rtems.org mailing list. You can join the Users mailing at https://lists.rtems.org/. If you find a bug please raise a ticket at https://devel.rtems.org/newticket. RTEMS 5.1 Release Notes 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 - The header file no longer includes and . - Most services use now statically allocated resources and no longer need accounting in the application configuration. - The work area initialization (RTEMS Work Space and C Program Heap) changed. BSPs must provide now a _Memory_Get() function. - POSIX timers and signals are now the only POSIX resources which are enabled by the POSIX API. API Additions - Support for recording of high-frequency events in particular on SMP systems - Termios supports now generation of signals. - New fatal sources: - RTEMS_FATAL_SOURCE_EXCEPTION - RTEMS_FATAL_SOURCE_PANIC - RTEMS_FATAL_SOURCE_SMP - RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE - RTEMS_FATAL_SOURCE_HEAP - New chain API function: rtems_chain_get_first_unprotected() - Add user defined thread names: pthread_setname_np() and pthread_getname_np() - Support for xz compression/decompression - Added rtems_scheduler_ident_by_processor() - Added rtems_scheduler_ident_by_processor_set() - Added RTEMS_PREDICT_TRUE() and RTEMS_PREDICT_FALSE() for static branch prediction hints - Added rtems_malloc() and rtems_calloc() - Added rtems_scheduler_get_maximum_priority() - Added rtems_scheduler_get_processor() - Added rtems_scheduler_get_processor_maximum() API Implementation Improvements - Priority inheritance is now transitive. - POSIX key destructors are now called during thread restart. - More robust thread dispatching on SMP and ARM Cortex-M API Deprecations - rtems_iterate_over_all_threads(). Use rtems_task_iterate() instead. - rtems_get_current_processor(). Use rtems_scheduler_get_processor() instead. - rtems_get_processor_count(). Use rtems_scheduler_get_processor_maximum() instead. - boolean is deprecated. Use bool instead. - single_precision is deprecated. Use float instead. - double_precision is deprecated. Use double instead. - proc_ptr is deprecated. Use a proper function pointer type. - rtems_context - rtems_context_fp - rtems_extension - rtems_io_lookup_name() is deprecated. Use stat() instead. - region_information_block - rtems_thread_cpu_usage_t is deprecated. Use struct timespec instead. - rtems_rate_monotonic_period_time_t is deprecated. Use struct timespec instead. - _Copyright_Notice is deprecated. Use rtems_get_copyright_notice() instead. - _RTEMS_version is deprecated. Use rtems_get_version_string() instead. - RTEMS_MAXIMUM_NAME_LENGTH is deprecated. Use sizeof(rtems_name) instead. - RTEMS_COMPILER_NO_RETURN_ATTRIBUTE is deprecated. Use RTEMS_NO_RETURN instead. - RTEMS_COMPILER_PURE_ATTRIBUTE is deprecated. Use RTEMS_PURE instead. - RTEMS_COMPILER_DEPRECATED_ATTRIBUTE is deprecated. Use RTEMS_DEPRECATED instead. - RTEMS_COMPILER_UNUSED_ATTRIBUTE is deprecated. Use RTEMS_UNUSED instead. - RTEMS_COMPILER_PACKED_ATTRIBUTE is deprecated. Use RTEMS_PACKED instead. - Including is deprecated. This header file will be removed in RTEMS 6. API Removals - rtems_clock_get() - API defined by - Task notepads - Task variables SMP Support Improvements - Reimplemenation of the Multiprocessor Resource Sharing Protocol (MrsP) to address performance issues. - Implementation of the O(m) Independence-Preserving Protocol (OMIP). - Support for thread pinning (enables support for Epoch Based Reclamation; used by libbsd) - The default SMP scheduler supports now EDF scheduling, one-to-one and one-to-all thread to processor affinities, and thread pinning. - Timers (watchdogs) use now per-processor data structures. - Improved POSIX key to value look up. - The Ada runtime supports now SMP configurations. Configuration Changes - All configuration options are now documented. - Most resources are now statically allocated and no longer use the workspace. - New configuration options: - CONFIGURE_MAXIMUM_THREAD_NAME_SIZE - CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE - CONFIGURE_DIRTY_MEMORY - CONFIGURE_RECORD_EXTENSIONS_ENABLED - CONFIGURE_RECORD_FATAL_DUMP_BASE64 - CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB - CONFIGURE_RECORD_PER_PROCESSOR_ITEMS - CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION - CONFIGURE_IMFS_ENABLE_MKFIFO - CONFIGURE_IMFS_DISABLE_MKNOD_FILE - Renamed configuration options: - CONFIGURE_SMP_MAXIMUM_PROCESSORS to CONFIGURE_MAXIMUM_PROCESSORS - CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS to CONFIGURE_MAXIMUM_FILE_DESCRIPTORS - Removed configuration options: - CONFIGURE_SMP_APPLICATION - CONFIGURE_HAS_OWN_CONFIGURATION_TABLE - CONFIGURE_HAS_OWN_BDBUF_TABLE - CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE - CONFIGURE_HAS_OWN_FILESYSTEM_TABLE - CONFIGURE_HAS_OWN_INIT_TABLE - CONFIGURE_HAS_OWN_MOUNT_TABLE - CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE - CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE - CONFIGURE_DISABLE_SMP_CONFIGURATION - CONFIGURE_MAXIMUM_DEVICES - The helper macro for the clustered scheduler configuration RTEMS_SCHEDULER_EDF_SMP() has now only one parameter. RTEMS Shell Improvements The following improvements were made to the RTEMS Shell: - Telnet now supports joel script output. Running a joel script in a telnet session now sees the output. Nested joel scripts also output to the telnet session. General - The system initialization is now performed by system initialization handlers registered in a special linker set (similar to global constructors in C++). - API header files have been collected from the various locations in the RTEMS source tree and placed under cputkit/include and for BSPs under bsps/include. There is no header pre-install phase when building RTEMS. - Improved parallel build performance. Nested make calls now run in parallel. - Added support for the RISC-V 32-bit and 64-bit architecture. - Added support for the 64-bit PowerPC architecture using the ELFv2 ABI. - Synchronized support for Journalling Flash File System, Version 2 (JFFS2) with Linux 4.17. - Import of libfdt from device tree compiler project. - Added libdebugger, a thread aware GDB debug server with TCP transport support. Currently the supported architectures are i386 and ARM. The ARM support is experimental. - Most BSP use now function and data sections to support the linker garbage collection. - This is the last release of RTEMS with the autoconf/automake build system. RTEMS will be moving to a waf based build system driven from YAML specifications files. The effort is part of the on-going wotk in the RTEMS project to support qualification of the operating system. Architectures Removed obsolete architectures: - AVR - H8300 - M32C - M32R Obsoleted architectures: - Epiphany - PowerPC SPE BSPs and Device Drivers - General - BSP source code moved from c/src/lib/libbsp to bsps in the source tree. The configure and some other related pieces are still held in the original path. - New BSPs - BSPs for ARM - atsamv - Microchip (former Atmel) SAM V71 series - xilinx-zynqmp - Xilinx Zynq UltraScale+ MPSoC platform - BSPs for RISC-V - riscv - Family of generic BSPs - griscv - BSP based on the GRLIB - Significant updates to existing BSPs - powerpc/qoriq: 64-bit support - Removal of obsoleted BSPs - arm/gdbarmsim - arm/nds - arm/gp32 - arm/ep1a - arm/score603e - m68k/idp - Obsoleted BSPs - m68k/gen68302 - m68k/ods68302 - powerpc/brs5l - powerpc/brs6l - powerpc/dp2 - powerpc/mbx8xx - powerpc/mpc5566evb_spe - powerpc/mpc5643l_dpu - powerpc/mpc5643l_evb - powerpc/mpc5674f_ecu508_app - powerpc/mpc5674f_ecu508_boot - powerpc/mpc5674fevb_spe - powerpc/mpc5674f_rsm6 - Drivers - Drivers for getentropy() - New I2C device driver framework supporting the Linux user-space API - New SPI device driver framework supporting the Linux user-space API Newlib Changes - time_t is now 64-bit to adress the year 2038 problem. - General improvements in the feature test macros support. - Newlib internal locks are now supported, e.g. for FILE objects. - The standard input, output, and error FILE objects are now global and no longer thread-specific. - Added support for C++17 std::aligned_alloc Ecosystem - RSB support to build a BSP software stack of tools, kernel, libbsd, and supported 3rd party packages. - RTEMS Tester (rtems-test) support for DHCP/TFTP target hardware testing. - RTEMS Trace addition of a new trace record support for target tracing. - RTEMS Bootimage, a tool to portably create SD card images. Architectures and BSPs Architectures: 18 BSP Families: 85 BSPs: 199 arm families:21 bsps:57 ------------------------------ --------------------- altcycv_devkit altera-cyclone-v atsamv atsam bbxm beagle beagleboardorig beagle beagleboardxm beagle beagleboneblack beagle beaglebonewhite beagle csb336 csb336 csb337 csb337 csb637 csb337 kit637_v6 csb337 edb7312 edb7312 gumstix gumstix imx7 imx lm3s3749 lm3s69xx lm3s6965 lm3s69xx lm3s6965_qemu lm3s69xx lm4f120 lm3s69xx lpc1768_mbed lpc176x lpc1768_mbed_ahb_ram lpc176x lpc1768_mbed_ahb_ram_eth lpc176x lpc17xx_ea_ram lpc24xx lpc17xx_ea_rom_int lpc24xx lpc17xx_plx800_ram lpc24xx lpc17xx_plx800_rom_int lpc24xx lpc2362 lpc24xx lpc23xx_tli800 lpc24xx lpc24xx_ea lpc24xx lpc24xx_ncs_ram lpc24xx lpc24xx_ncs_rom_ext lpc24xx lpc24xx_ncs_rom_int lpc24xx lpc24xx_plx800_ram lpc24xx lpc24xx_plx800_rom_int lpc24xx lpc40xx_ea_ram lpc24xx lpc40xx_ea_rom_int lpc24xx lpc32xx_mzx lpc32xx lpc32xx_mzx_stage_1 lpc32xx lpc32xx_mzx_stage_2 lpc32xx lpc32xx_phycore lpc32xx raspberrypi raspberrypi raspberrypi2 raspberrypi realview_pbx_a9_qemu realview-pbx-a9 rtl22xx rtl22xx rtl22xx_t rtl22xx smdk2410 smdk2410 stm32f105rc stm32f4 stm32f4 stm32f4 tms570ls3137_hdk tms570 tms570ls3137_hdk_intram tms570 tms570ls3137_hdk_sdram tms570 tms570ls3137_hdk_with_loader tms570 xen_virtual xen xilinx_zynq_a9_qemu xilinx-zynq xilinx_zynq_zc702 xilinx-zynq xilinx_zynq_zc706 xilinx-zynq xilinx_zynq_zedboard xilinx-zynq xilinx_zynqmp_ultra96 xilinx-zynqmp bfin families:3 bsps:3 ------------ ------------------- TLL6527M TLL6527M bf537Stamp bf537Stamp eZKit533 eZKit533 epiphany families:1 bsps:1 -------------- ------------------- epiphany_sim epiphany_sim i386 families:1 bsps:6 ----------- ------------------- pc386 pc386 pc486 pc386 pc586 pc386 pc586-sse pc386 pc686 pc386 pcp4 pc386 lm32 families:2 bsps:3 ----------------- ------------------- lm32_evr lm32_evr lm32_evr_gdbsim lm32_evr milkymist milkymist m68k families:16 bsps:20 ----------------- --------------------- av5282 av5282 csb360 csb360 gen68340 gen68340 gen68360 gen68360 gen68360_040 gen68360 pgh360 gen68360 COBRA5475 genmcf548x m5484FireEngine genmcf548x mcf5206elite mcf5206elite mcf52235 mcf52235 mcf5225x mcf5225x mcf5235 mcf5235 mcf5329 mcf5329 mrm332 mrm332 mvme147 mvme147 mvme147s mvme147s mvme162 mvme162 mvme162lx mvme162 mvme167 mvme167 uC5282 uC5282 mips families:6 bsps:6 ----------- ------------------- csb350 csb350 hurricane hurricane jmr3904 jmr3904 malta malta rbtx4925 rbtx4925 rbtx4938 rbtx4938 moxie families:1 bsps:1 ---------- ------------------- moxiesim moxiesim nios2 families:1 bsps:1 ----------- ------------------- nios2_iss nios2_iss no_cpu families:1 bsps:1 -------- ------------------- no_bsp no_bsp or1k families:1 bsps:1 -------------- ------------------- generic_or1k generic_or1k powerpc families:18 bsps:48 ---------------------- --------------------- beatnik beatnik brs5l gen5200 brs6l gen5200 dp2 gen5200 icecube gen5200 pm520_cr825 gen5200 pm520_ze30 gen5200 br_uid gen83xx hsc_cm01 gen83xx mpc8309som gen83xx mpc8313erdb gen83xx mpc8349eamds gen83xx haleakala haleakala mcp750 motorola_powerpc mtx603e motorola_powerpc mvme2100 motorola_powerpc mvme2307 motorola_powerpc qemuprep motorola_powerpc qemuprep-altivec motorola_powerpc gwlcfm mpc55xxevb mpc5566evb mpc55xxevb mpc5566evb_spe mpc55xxevb mpc5643l_dpu mpc55xxevb mpc5643l_evb mpc55xxevb mpc5668g mpc55xxevb mpc5674f_ecu508_app mpc55xxevb mpc5674f_ecu508_boot mpc55xxevb mpc5674f_rsm6 mpc55xxevb mpc5674fevb mpc55xxevb mpc5674fevb_spe mpc55xxevb phycore_mpc5554 mpc55xxevb mpc8260ads mpc8260ads mvme3100 mvme3100 mvme5500 mvme5500 psim psim qemuppc qemuppc qoriq_core_0 qoriq qoriq_core_1 qoriq qoriq_e500 qoriq qoriq_e6500_32 qoriq qoriq_e6500_64 qoriq ss555 ss555 t32mppc t32mppc pghplus tqm8xx tqm8xx_stk8xx tqm8xx virtex virtex virtex4 virtex4 virtex5 virtex5 riscv families:2 bsps:27 ------------------- -------------------- griscv griscv grv32i griscv grv32im griscv grv32imac griscv grv32imafdc griscv frdme310arty riscv rv32i riscv rv32i_clang riscv rv32iac riscv rv32iac_clang riscv rv32im riscv rv32im_clang riscv rv32imac riscv rv32imac_clang riscv rv32imafc riscv rv32imafc_clang riscv rv32imafd riscv rv32imafd_clang riscv rv32imafdc riscv rv32imafdc_clang riscv rv64imac riscv rv64imac_medany riscv rv64imafd riscv rv64imafd_medany riscv rv64imafdc riscv rv64imafdc_clang riscv rv64imafdc_medany riscv sh families:4 bsps:7 --------- ------------------- gensh1 gensh1 gensh2 gensh2 gensh4 gensh4 simsh1 shsim simsh2 shsim simsh2e shsim simsh4 shsim sparc families:3 bsps:8 --------- ------------------- erc32 erc32 at697f leon2 leon2 leon2 gr712rc leon3 gr740 leon3 leon3 leon3 ut699 leon3 ut700 leon3 sparc64 families:2 bsps:2 --------- ------------------- niagara niagara usiii usiii v850 families:1 bsps:6 ------------- ------------------- v850e1sim gdbv850sim v850e2sim gdbv850sim v850e2v3sim gdbv850sim v850esim gdbv850sim v850essim gdbv850sim v850sim gdbv850sim x86_64 families:1 bsps:1 -------- ------------------- amd64 amd64