summaryrefslogtreecommitdiffstats
path: root/rtems-notes-5.txt
blob: ddc25977c37308f695447ea8736aa02849350005 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
## 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

* 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
* Support for thread pinning (enables support for Epoch Based Reclamation; used
  by libbsd)
* 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`

#### API Implementation Improvements

* TBD

#### API Deprecations

* `rtems_iterate_over_all_threads()`.  Use `rtems_task_iterate()` instead.

#### API Removals

* `rtems_clock_get()`

### Configuration Changes

* All configuration options are now documented.
* Most resources are now statically allocated and no longer use the workspace.
* New configuration options:
 * `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`
* Removed configuration options:
 * `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`
* 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

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

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

## BSPs and Device Drivers

* General
  * BSP source code moved from `c/src/lib/libbsd` 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
  * `gdbsim`
* Drivers
  * Drivers for `getentropy()`

## 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 portability create SD card images.