March 22, 2017 (Final)
March 20, 2017 (Planned)
Enhancement/Fixes to existing features
NimBLE stack enhancements
Bluetooth LE Connection Oriented Channels in BLE 4.2
Support for Connection-Oriented Channels (including Dedicated Channels) in the Logical Link Control and Adaptation Protocol (L2CAP) has been added. This feature is a prerequisite for supporting the IP Support Profile which can turn devices into IPv6 nodes that can consume or originate IPv6 packets and be discovered by IPv6 routers. It has been tested at UPF56 and with PTS testing.
Newt Tool enhancements
"new" and "copy" subcommands added to "newt pkg" for making custom packages
The additional subcommands make it easier to create new packages in your local repository without having to manually copy them. The "newt pkg new" has templates for package types: pkg, bsp, sdk. For more on the subcommands, see documentation. https://mynewt.apache.org/latest/newt/command_list/newt_pkg/
newt correctly restricts size of loader image in the split image case
newt able to fetch packages from private github servers
It is now possible to point to specify a private github server by setting the "server" value in project.yml. Without this override, the default repository location is github.com.
newt accepts build machine OS dependent overrides in bsp.yml
This allows the developer to specify platform-specific scripts. It allows the newt tool user to run bsp scripts (command wrappers) on Windows and run `newt load` and `newt debug`.
"newt target dep" and "newt target revdep" indicates whether package dependency is explicit or via API
These commands previously only indicated package names in the dependency graph. This change enhances the output of these commands to show what created the dependency in the first place.
Specifically, they now show whether the dependency is "hard" (package explicitly depends on another) or "soft" (package requires an API; other package happens to implement that API). This is useful when trying to
completely remove a package from a build.
Newt Manager (newtmgr) fixes
Single newtmgr reset no longer causes two reboot log entries
The first log entry was being written during processing of the incoming reset command and the second entry was being written at init time during the subsequent reboot. The reboot log code now correctly checks if the most recent reboot was "soft" and avoids duplicate log entries.
Floating Point operations in hardware can be enabled in Cortex-M4
A sysconfig setting HARDFLOAT has been added to enable hardware Floating Point Unit. Note that hardware based floating point operations are faster but uses more power and stack space.
Issues with newtmgr protocol (NMP) operations over OIC fixed
Parts of NMP header were missing from OMP responses causing problems when multiplexing OMP (NMP over OIC) among many target devices. This has been changed. Errors encountered during processing of NMP requests are now reported identically to other NMP responses (embedded NMP response) instead of a generic OIC error response (bad request, internal server error).
Image Management and Bootloader enhancements
Bootloader with serial uploade now less than 16KB
Code was optimized by minimizing console and decoding incoming cbor using tinycbor instead of cborattr.
Image manifest includes image size information
Image and package size information is now included in the manifest file.
Additional Board Support Packages
- BBC Micro:bit with Nordic nRF51822 with 16K RAM, 256K Flash
- Adafruit Feather board with Nordic nRF52 (Cortex-M4)
Known Issues and Limitations
HAL support for nRF52840 is not complete
While basic support for the board and peripherals has been added for this board including the NimBLE stack, the HAL interfaces are still underway.
HAL support for MK64F12 is not complete
HAL is still missing for I2C and SPI and other miscellaneous things.
HAL support for danube is not complete
Context switching is working, but most of the HAL is not implemented yet.
HAL support for mkw41z is not complete
nrf52 ADC will not work if VDD4 reference is used
NFFS cannot delete a file or directory when completely full
Deleting a file or directory requires writing an inode to the disk. If the disk is completely full, there is not room for the deletion record, and the delete attempt fails with an FS_EFULL error.
NimBLE PHY driver for the nRF52 occasionally indicating decryption errors and/or MIC failures
Full support for TCP/IP
The following is planned but yet to be added:
- ethernet driver(s) which can be included as packages like our other drivers
- sample app(s) utilizing the above driver(s). One of the sample apps is likely to use the winc1500_wifi app in arduino-zero repository which uses sockets and allows you to start the default inet services. A second sample app that runs OIC over IPv6 is also planned.
- locking to lwip socket adaptation
- abstraction for DNS
- updated documentation
NFFS does not work on STM32F3 or NXP MK64F12
The Newtron Flash File System should take into account alignment restrictions in the underlying storage. For example, STM32F3 flash writes are done 2 bytes at a time and MK64F12 flash alignment is 8.
"newt target set" allows random, invalid variable to be set
BLE Host with Secure Connections on but legacy support off never responds to pairing response from a device with opposite settings
"newt debug" on Windows platforms is not fully functional
Depending on the way Windows development environment was set up, "newt debug" will treat Ctrl^C differently. It might either be ignored, or it will terminate the JTAG adapter software.
Closing TTY connected to board serial port on MacOS might reset the board
This appears to happen when the serial port is coming through same USB chip where JTAG lives. Closing the TTY (either from terminal program or when using newtmgr over serial) causes the MCU on the board to halt, and drops gdb into debugger (if attached).