Skip to content

Commit 158463e

Browse files
RELEASE 2017.01
1 parent 669a2b9 commit 158463e

File tree

1 file changed

+284
-0
lines changed

1 file changed

+284
-0
lines changed

release-notes.txt

+284
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,287 @@
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+
1285
RIOT-2016.10 - Release Notes
2286
============================
3287
RIOT is a real-time multi-threading operating system that supports a range of

0 commit comments

Comments
 (0)