|
| 1 | +RIOT-2017.01 - Release Notes |
| 2 | +============================ |
| 3 | +RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with |
| 4 | +support for a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers, |
| 5 | +16-bit microcontrollers and light-weight 32-bit processors. |
| 6 | + |
| 7 | +RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities, |
| 8 | +small memory footprint, modularity, and uniform API access, independent of the underlying hardware |
| 9 | +(with partial POSIX compliance). |
| 10 | + |
| 11 | +RIOT is developed by an international open-source community which is independent of specific vendors |
| 12 | +(e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), |
| 13 | +which allows indirect business models around the free open-source software platform provided by RIOT. |
| 14 | + |
| 15 | +About this release: |
| 16 | +=================== |
| 17 | +This release provides a lot of new features, fixes and enhancements. Among others these features |
| 18 | +contain an initial - still experimental - TCP implementation based on the GNRC network stack, support |
| 19 | +for reading from and writing to SD cards, a new power management architecture as well additional third |
| 20 | +party packages such as TweetNaCl, a cryptographic library, and Heatshrink a data compression library |
| 21 | +optimized for embedded real-time systems. |
| 22 | +We added support for new platforms including the Calliope mini, Maple mini, and a couple of STMs |
| 23 | +Nucleo boards. Device support was extended by several new drivers, e.g., for NXP PN532 NFC, Microchip |
| 24 | +MRF24J40 802.15.4 radio (experimental), or Bosch BME280 pressure/humidity/temperature sensor. |
| 25 | +We completely refactored the SPI interface, allowing for internally handled hardware or software chip |
| 26 | +select lines and shared bus usage for multiple devices with different SPI configurations. |
| 27 | + |
| 28 | +About 278 pull requests with about 606 commits have been merged since the last release and about 84 |
| 29 | +issues have been solved. 44 people contributed with code in 87 days. 2230 files have been touched with |
| 30 | +220275 insertions and 159840 deletions. |
| 31 | + |
| 32 | + |
| 33 | +Notations used below: |
| 34 | +===================== |
| 35 | ++ means new feature/item |
| 36 | +* means modified feature/item |
| 37 | +- means removed feature/item |
| 38 | + |
| 39 | +New features and changes |
| 40 | +======================== |
| 41 | +General |
| 42 | +------- |
| 43 | ++ New power management architecture |
| 44 | + |
| 45 | +Core |
| 46 | +---- |
| 47 | ++ Initial (experimental) OpenOCD/GDB thread support |
| 48 | +* Make Semaphore implementation IPC independent |
| 49 | + |
| 50 | +API changes |
| 51 | +----------- |
| 52 | +* SPI driver interface (rework) |
| 53 | +* Add Mutex lock with timeout parameter |
| 54 | +* Xtimer allow for arbitrary frequency & additional convenience functions |
| 55 | +* HDC1000 driver remodeling |
| 56 | +* MMA8652 driver remodeling (MMA8x5x now) |
| 57 | + |
| 58 | +System libraries |
| 59 | +---------------- |
| 60 | ++ Lightweight CRC16 implementation |
| 61 | +- Remove Twofish and RC5 implementation |
| 62 | + |
| 63 | +Networking |
| 64 | +---------- |
| 65 | ++ Initial (experimental) GNRC TCP implementation |
| 66 | +* Provide sock-port for POSIX SOCKETS |
| 67 | +* Provide sock-port for GCOAP |
| 68 | +* Provide sock-port for UHCPC |
| 69 | +* Provide sock_ip wrapper for LWIP |
| 70 | +* Native: allow for multiple netdev2_tap devices |
| 71 | + |
| 72 | +Packages |
| 73 | +-------- |
| 74 | ++ TweetNaCl: cryptographic library |
| 75 | ++ Heatshrink: compression/decompression library |
| 76 | +- Removed: OpenWSN |
| 77 | + |
| 78 | +Platforms |
| 79 | +--------- |
| 80 | ++ Support for Maple mini board |
| 81 | ++ Support for ST Nucleo-32 F303 board |
| 82 | ++ Support for ST Nucleo-32 F042 board |
| 83 | ++ Support for Calliope mini board |
| 84 | +- Drop support for PTTU platform |
| 85 | + |
| 86 | +Drivers |
| 87 | +------- |
| 88 | +* Rework SPI driver interface |
| 89 | ++ Peripheral flashrom driver interface |
| 90 | ++ SD Card driver (SPI) |
| 91 | ++ NXP PN532 NFC driver |
| 92 | ++ Initial (experimental) Microchip MRF24J40 radio driver |
| 93 | ++ JEDEC JC42.4 temperatur sensors |
| 94 | ++ Bosch BME280 pressure, humidity and temperature sensor |
| 95 | +* NXP MMA8x5x accelerometer (previously MMA8652) |
| 96 | +* Unified STM32 RTC driver |
| 97 | +* Unified STM32 UART driver |
| 98 | +* Unified STM32 PWM driver |
| 99 | +* Unified STM32 timer driver |
| 100 | +* Unified NRF5x low power modes |
| 101 | ++ Low power modes for the STM32F1 family |
| 102 | +* Unified Kinetis low power modes |
| 103 | +* Xbee port to netdev2 API |
| 104 | +* W5100 port to netdev2 API |
| 105 | +* NRF5x/'nrfmin' port to netdev2 API (w/o 6LoWPAN support currently) |
| 106 | +* Refactor synchronous UART by new 'isrpipe' module |
| 107 | + |
| 108 | +Build System |
| 109 | +------------ |
| 110 | ++ Experimental Jenkins CI |
| 111 | +* Python3 support for compile script (compile_test.py) |
| 112 | + |
| 113 | +Other |
| 114 | +----- |
| 115 | ++ UUID module for central ID/address generation |
| 116 | + |
| 117 | +Fixed Issues from the last release |
| 118 | +================================== |
| 119 | +#4388: POSIX sockets: open socket is bound to a specific thread |
| 120 | +#4737: cortex-m: Hard fault after a thread exits |
| 121 | +#4874: Using single RSSI_BASE_VALUE for all Atmel radios |
| 122 | +#5034: gnrc_networking: offers txtsnd, does not print received packets |
| 123 | +#5083: AVR8: Reboots after `return 0;` |
| 124 | +#5719: cc2538: rf driver doesn't handle large packets |
| 125 | +#5954: nRF52 uart_write gets stuck |
| 126 | +#6036: tinydtls: DTLS randomly missing functions |
| 127 | +#6037: pkg/nanocoap: native build fails on macOS |
| 128 | +#6358: arduino uno : xtimer accuracy problem |
| 129 | + |
| 130 | +Known Issues |
| 131 | +============ |
| 132 | +Networking related issues |
| 133 | +------------------------- |
| 134 | +#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision |
| 135 | + which is not required. Changing to lower precision would save some memory. |
| 136 | +#4048: potential racey memory leak: According to the packet buffer stats, flood-pinging a multicast |
| 137 | + destination may lead to a memory leak due to a race condition. However, it seems to be a rare |
| 138 | + case and a completely filled up packet buffer was not observed. |
| 139 | +#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing |
| 140 | +#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers |
| 141 | +#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the |
| 142 | + network interfaces need to get unlocked in the current implementation to not get deadlocked. |
| 143 | + Recursive mutexes as provided in #5731 might help to solve this problem. |
| 144 | +#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead |
| 145 | + to crashes. The issue describes this for several hundret nodes, but agressive flooding with |
| 146 | + just two nodes was also shown to lead to this problem. |
| 147 | +#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly |
| 148 | + state machine might get out of sync |
| 149 | +#6123: gnrc: crash with (excessive) traffic |
| 150 | + |
| 151 | +NDP is not working properly |
| 152 | +--------------------------- |
| 153 | +#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead |
| 154 | + to invalid zero-length link-layer addresses in neighbor cache. |
| 155 | +#5005: ndp: router advertisement sent with global address: Under some circumstances a router might |
| 156 | + send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have |
| 157 | + link-local addresses and not even be send out this way. |
| 158 | +#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues |
| 159 | + (also see #5760) lead to a global unicast address effectively being banned from the network |
| 160 | + (disappears from neighbor cache, is not added again) |
| 161 | +#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router |
| 162 | +#5539: Border Router: packet not forwarded from ethos to interface 6 |
| 163 | +#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR |
| 164 | + |
| 165 | +Timer related issues |
| 166 | +-------------------- |
| 167 | +#4841: xtimer: timer already in the list: Under some conditions an xtimer can end up twice in the |
| 168 | + internal list of the xtimer module |
| 169 | +#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well |
| 170 | +#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms. |
| 171 | +#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init() |
| 172 | + function. The xtimer is however first initialized in the auto_init module which is executed |
| 173 | + after board_init() |
| 174 | +#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds |
| 175 | +#6331: RTC alarm triggered with 1s delay |
| 176 | +#6419: cpu/cc2538: timer broken |
| 177 | +#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout |
| 178 | +#6502: cpu/stm32l1: RTC broken |
| 179 | +#6542: boards/nucle-f0xx: misconfigured timer configuration (fix in #6494) |
| 180 | + |
| 181 | +native related issues |
| 182 | +--------------------- |
| 183 | +#495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either |
| 184 | + the stack gets corrupted or a floating point exception occurs. |
| 185 | +#2175: ubjson: valgind registers "Invalid write of size 4" in unittests |
| 186 | +#4590: pkg: building relic with clang fails. |
| 187 | +#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is |
| 188 | + currently expected to be done in an application). If a malloc is needed before an application's |
| 189 | + main started (e.g. driver initialization) the node can crash, since no pool is allocated yet. |
| 190 | +#6145: native: system reboots on SIGTRAP |
| 191 | +#6442: cpu/native: timer interrupt does not yield thread |
| 192 | + |
| 193 | +other platform related issues |
| 194 | +----------------------------- |
| 195 | +#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64, |
| 196 | + PRI[uxdi]8 and float are not parsed in newlib-nano |
| 197 | +#2006: cpu/nrf51822: timer callback may be fired too early |
| 198 | +#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the |
| 199 | + unittests which are not available with msp430-gcc |
| 200 | +#2300: qemu unittest fails because of a page fault |
| 201 | +#4512: pkg: tests: RELIC unittests fail on iotlab-m3 |
| 202 | +#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593) |
| 203 | +#4694: drivers/lm75a: does not build |
| 204 | +#4822: kw2xrf: packet loss when packets get fragmented |
| 205 | +#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported |
| 206 | +#4954: chronos: compiling with -O0 breaks |
| 207 | +#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers |
| 208 | + some pin configurations might get lost. |
| 209 | +#5009: RIOT is saw-toothing in energy consumption (even when idling) |
| 210 | +#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52 |
| 211 | +#5361: cpu/cc26x0: timer broken |
| 212 | +#5405: Eratic timings on iotlab-m3 with compression context activated |
| 213 | +#5460: cpu/samd21: i2c timing with compiler optimization |
| 214 | +#5486: at86rf2xx: lost interrupts |
| 215 | +#5489: cpu/lpc11u34: ADC broken |
| 216 | +#5678: at86rf2xx: failed assertion in _isr |
| 217 | +#5799: kw2x: 15.4 duplicate transmits |
| 218 | +#5944: msp430: ipv6_hdr unittests fail |
| 219 | +#5848: arduino: Race condition in sys/arduino/Makefile.include |
| 220 | +#6018: nRF52 gnrc 6lowpan ble memory leak |
| 221 | +#6261: SAMD21 TC3 & TC4 issue when using TCC2 |
| 222 | +#6379: nrf52dk/nordic_soft_device: not working anymore |
| 223 | +#6437: periph/spi: Leftovers from SPI rework |
| 224 | +#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0) |
| 225 | +#6526: atmega based boards freeze when main thread is over |
| 226 | + |
| 227 | +other issues |
| 228 | +------------ |
| 229 | +#1263: TLSF implementation contains (a) read-before-write error(s). |
| 230 | +#3256: make: Setting constants on compile time doesn't really set them everywhere |
| 231 | +#3366: periph/i2c: handle NACK |
| 232 | +#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs |
| 233 | + for DMA enabled uart drivers. |
| 234 | +#4866: periph: GPIO drivers are not thread safe |
| 235 | +#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var |
| 236 | +#5207: make: buildest fails with board dependent application Makefiles |
| 237 | +#5561: C++11 extensions in header files |
| 238 | +#5776: make: Predefining CFLAGS are parsed weirdly |
| 239 | +#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars |
| 240 | +#5962: Makefile: UNDEF variable is not working as documented |
| 241 | +#6022: pkg: build order issue |
| 242 | +#6451: Wrong value in SRF08 driver |
| 243 | +#6519: driver/mrf24j40: broken on stm32f4discovery |
| 244 | + |
| 245 | +Special Thanks |
| 246 | +============== |
| 247 | +We like to give our special thanks to all the companies that provided us with their hardware for |
| 248 | +porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination |
| 249 | +Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly |
| 250 | +sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec. |
| 251 | + |
| 252 | +More information |
| 253 | +================ |
| 254 | +http://www.riot-os.org |
| 255 | + |
| 256 | +Mailing lists |
| 257 | +------------- |
| 258 | +* RIOT OS kernel developers list |
| 259 | + [email protected] (http://lists.riot-os.org/mailman/listinfo/devel) |
| 260 | +* RIOT OS users list |
| 261 | + [email protected] (http://lists.riot-os.org/mailman/listinfo/users) |
| 262 | +* RIOT commits |
| 263 | + [email protected] (http://lists.riot-os.org/mailman/listinfo/commits) |
| 264 | +* Github notifications |
| 265 | + [email protected] (http://lists.riot-os.org/mailman/listinfo/notifications) |
| 266 | + |
| 267 | +IRC |
| 268 | +--- |
| 269 | +* Join the RIOT IRC channel at: irc.freenode.net, #riot-os |
| 270 | + |
| 271 | +License |
| 272 | +======= |
| 273 | +* Most of the code developed by the RIOT community is licensed under the GNU Lesser General Public |
| 274 | + License (LGPL) version 2.1 as published by the Free Software Foundation. |
| 275 | +* Some external sources are published under a separate, LGPL compatible license |
| 276 | + (e.g. some files developedby SICS). |
| 277 | + |
| 278 | +All code files contain licensing information. |
| 279 | + |
| 280 | + |
| 281 | + |
| 282 | + |
| 283 | + |
| 284 | + |
1 | 285 | RIOT-2016.10 - Release Notes
|
2 | 286 | ============================
|
3 | 287 | RIOT is a real-time multi-threading operating system that supports a range of
|
|
0 commit comments