Release Date
November 6, 2018 (Final)
October 23, 2018 (Planned)
Important Notes
BLE samples removed from Apache Mynewt release
Those can now be found in Apache NimBLE repository. Transient packages in core repository are provided for backward compatibility with existing targets.
Nordic nRF52xxx MCU package has been refactored
Previous version of package is available as hw/mcu/nordic/nrf52xxx-compat
, however all users are strongly encouraged to migrate custom BSPs to new package as the old code will no longer be maintained and will be eventually removed.
For more information see below.
New Features
Logs storage usage tracking and watermarking
Two new APIs were added to the log subsystem. They can be enabled by setting sysconfig variables LOG_STORAGE_INFO and LOG_STORAGE_WATERMARK, respectively, to 1.
- storage_info which allows querying the log storage for total storage size and currently used storage
set_watermark which allows setting the watermark on log (by index). This information is used to calculate the size of entries logged after the watermark, thus allowing the marking of last read item and unread items .
The watermark for each log is persisted in config and restored on reboot.
Per-log statistics
The option to keep statistics for the number of log entries written, logs filtered out because of log level settings, log entries dropped due to log collection not fetching (clearing) them on time, and errors while writing has been added. The sysconfig setting to enable this option is LOG_STATS.
Support for new Cortex-M3 and Cortex M-7 MCUs
- stm32l152discovery - Discovery kit with STM32L152RC Cortex-M3 MCU
- STM32F767xx and STM32F746xx devices - Arm Cortex-M7 MCUs
Drivers
- TSL2591 light to digital sensor
- LPS33HW pressure sensor
Encrypted flash support
Support has been added for encrypted flash (e.g. external SPI flash). The implementation allows you to encrypt by partitions. The hal_flash API exposes encrypt/decrypt operations on a pseudo flash device which is split into a common part and architecture-specific part. The first architecture-specific part supported is the Nordic nRFf51 and nRF52 platforms. Such a split allows the developer to leverage cryptographic hardware acceleration, if available in the platforms.
Support for STM32L4 Cube and STM32L0 Cube libraries
- STM32Cube L0 v1.10.0 - MCU Package for STM32L0 Series with HAL, low-layer drivers and dedicated middleware
- STM32Cube L4 v1.12.0 - MCU Package for STM32L4 Series and STM32L4+ Series with HAL, low-layer drivers and dedicated middleware
I2C retries
A common set of error codes for the I2C HAL and a new hw/util/i2cn
library (as in I2C-n logic for n retries) has been added. The dev-list discussion can be found here: https://lists.apache.org/thread.html/bd2b854cbf7d6e0811fff33177c85fa1435dff7f1fb3c8baab6061e0@%3Cdev.mynewt.apache.org%3E
API to use FCB as generic key-value storage
The API enables the use of config_fcb engine as a generic key-value storage without the need to use config module. It makes it possible to read and write any key at any time and they are immediately persisted and loaded directly from FCB so there is no need to store them in RAM.
Reporting of sensor read errors
"Sensor error listeners" can be registered with a sensor. When a read from a sensor fails, all error listeners that match the read attempt are notified of the error.
Enhancement/Fixes to existing features
Mbed TLS updated to version 2.13.0
Mbed TLS 2.13.0 introduces several new features improving DTLS support over low-bandwidth, high latency networks with high packet loss. It also has a security fix and other features.
https://tls.mbed.org/tech-updates/releases/mbedtls-2.13.0-2.7.6-and-2.1.15-released
Better RTT integration
SEGGER Real-Time Transfer (RTT) support was updated to provide better integration with Apache Mynewy. Changes include:
- upgrade code to rev 11303 (was rev 4351)
- rewrite configuration file for easier updates (replace generic one with new one tailored to Apache Mynewt features)
- automatic configuration of RTT buffers used depending on enabled features; additional buffers for application can be enabled if necessary
- RTT control block is placed in separate section so it can be locked to specific location in memory
- fix issues with proper RTT locking which caused SystemView to show corrupted packets or sometimes crash (especially when both RADIO and UART were used at the same time)
- fix RTT console code which could cause data corruption in RTT buffer
Improved concurrent access to I2C/SPI interfaces for LEDs and Sensors
An interface lock has been added for the sensor_itf
, led_itf
. It can be used for the interface structure for any driver e.g. the battery. If a BSP shares an interface particularly I2C, it can initialize and set a mutex for shared interface access.
Nordic nRF52xxx MCU support refactor
The hw/mcu/nordic/nrf52xxx
package was refactored to cleanup the peripherals code in BSPs. Changes include:
- create common code to create and initialize peripherals in MCU package which then should be used by BSP packages
- move all peripherals syscfg settings from BSP to MCU package
- add package-level restrictions to make sure everything is configured properly
All existing BSPs for nRF52xxx boards are converted to use new package.
Travis CI integration
Travis Continuous Integration (CI) can now be used to build and test Apache Mynewt on both Linux and OSX systems. The following can be performed:
newt test all -e net/oic/test,net/ip/mn_socket/test
- Build blinky app on every BSP supported by Mynewt. The list is hardcoded in a script.
newt build all
on simple targets prepared for all apps inmynewt-core
andmynewt-nimble
repositories. Most of these targets use nrf52840pdk BSPs and a few use other BSPs. Thebletest
app is excluded as it is very outdated.
HAL watchdog monitor
A HAL watchdog monitor has been added which tries to dump system state before HAL watchdog fires. A check has been added to check that the watchdog timeout is at least 4 seconds when this monitor is enabled.
Tickless min/max idle times made configurable
The relevant syscfgs are OS_IDLE_TICKLESS_MS_MIN
and OS_IDLE_TICKLESS_MS_MAX
(in milliseconds).
test/runtest library replaces testbench app
A generic task-allocation mechanism has been added to the test/runtest
library. When a unit test needs a new task, it requests one from runtest. When a test completes, runtest suspends all the allocated tasks. The number of generic tasks are no longer limited to four and adding new unit tests is simpler.
Tracing user-defined events using SysView
SysView can now be used to trace/profile any user-defined events. Event identifier is any number selected by user - SysView client will match start/stop traces for each identifier and display execution time as well as run count.
Flow control in console
Console handles queue of available line events and triggers flow control on UART automatically.
Newt Tool enhancements
Transient packages
A transient package is an empty package that simply links to another package. It enables easier, backwards-compatible upgrade path when moving or renaming packages. Every time transient package is included in build, newt
will emit a warning which encourages to change configuration to use linked package instead. Transient package can be defined as follows:
pkg.name: old-package pkg.type: transient pkg.link: @repo/target-package
Multiple concurrent debug sessions with two boards
It is now possible to have two debug sessions open from the same machine. "newt debug" can now have a session with JLink as well as openocd simultaneously open. One example of its use is for debugging a BLE session between a central and a peripheral.
newt debug slinky_nrf52 --extrajtagcmd "-port 5431 -select usb=682148664"
Compatibility check
Newt now warns/returns an error if you use any repository that is incompatible with the current newt version.
>newt info Error: This version of newt (1.3.0) is incompatible with your version of the apache-mynewt-core repo (1.4.1); Please upgrade your newt tool to version 1.4.0
It will also warn/return error when you try to install/upgrade a repository to a version that is not compatible with current newt.
Support for encrypted images
create-image
command to allow generation of encrypted images. RSA-OAEP encryption scheme is used to encrypt the AES-128 encryption key.-e <rsa-pub-key.pem>
Newt Manager (newtmgr)
Support for specifying connection timeout
Upload progress bar improvements
Support for boolean values in resource key-value pair
Support for selecting used BLE controller (Linux only)
Additional Board Support Packages
B-L072Z-LRWAN1 BSP
Fanstel EV-BT840E
Nucleo-L476RG BSP
Known Issues and Limitations