NDK 3.20.00.10 Release Notes
Table of Contents
Introduction
The Network Developer’s Kit (NDK) is a platform for development and demonstration of network enabled applications on TI embedded processors.
Depending on your platform and distribution, you may need to separately obtain an appropriate NDK Support Package (NSP).
Documentation
The following documentation is provided with this release.
What’s New
3.20.00.10
- NDK threads are no longer required to be POSIX threads (pthreads).
The following Defects were resolved
ID | Summary |
---|---|
NDK-208 | Change incorrect use of pthread_self() API in example code of documentation |
NDK-71 | NDK BSD fd_set type overridden by sys/types.h shipped with BIOS |
The following Enhancements were resolved
ID | Summary |
---|---|
NDK-216 | Handle big endian detection properly for new tool chains |
NDK-190 | NDK documentation updates |
NDK-184 | Support SlNetIfNDK_getConnectionStatus() |
NDK-175 | Make NDK callable from any thread |
NDK-171 | Update NIMU IOCTL to support query of driver/interface link status |
NDK-55 | Convert NDK Users Guides from pdf to html (via markdown) |
Upgrade and Compatibility Information
Specific compatibility notes for NDK 3.20:
- NDK + SYS/BIOS applications must define a BIOS Task hook set and register function
- The NDK requires the following function to be registered in the SYS/BIOS *.cfg file:
- NDK_hookInit
This can be done using the following configuration code in the *.cfg file:
var Task = xdc.useModule('ti.sysbios.knl.Task'); var ndkHooks = new Task.HookSet(); ndkHooks.registerFxn = '&NDK_hookInit'; Task.addHookSet(ndkHooks);
This Task hook set and registration is handled automatically for application configurations that use the ti.ndk.config.Global module
- The NDK requires the following function to be registered in the SYS/BIOS *.cfg file:
- A special note to SimpleLink SDK users building non-NDK applications with SYS/BIOS:
- If your application is using the default kernel configuration file, it will already have the previously mentioned configuration code to register the NDK_hookInit function. This will result in undefined symbol errors for non-NDK applications.
- There are three ways to work around this problem in a non-NDK SYS/BIOS application:
- Use a different SYS/BIOS kernel configuration (*.cfg) file
- By default, the kernel configuration used in the examples contains the above code. You can create a new kernel configuration file which does not register the NDK_hookInit function (hence removing the unwanted dependency) and build your application against it.
- Link the appropriate NDK OSAL library (which contains the NDK_hookInit function definition) into your application.
- Although your application doesn’t need the NDK, this will resolve the undefined symbol error.
Provide an empty NDK_hookInit() stub. This could be done using a weak symbol as follows:
/* * The following function is only used in applications that use the NDK TCP/IP * stack */ #if defined(__IAR_SYSTEMS_ICC__) __weak void NDK_hookInit(int32_t id) {} #elif defined(__GNUC__) && !defined(__ti__) void __attribute__((weak)) NDK_hookInit(int32_t id) {} #else #pragma WEAK (NDK_hookInit) void NDK_hookInit(int32_t id) {} #endif
- Use a different SYS/BIOS kernel configuration (*.cfg) file
Specific compatibility notes for NDK 3.10:
- To address NDK-196, any code intending to use the NDK-provided “network byte order macros” (e.g.
htonl()
) will need to add theNDK_
prefix to those macros (e.g.NDK_htonl()
). In most cases, users intend to use the BSD/POSIX-defined macros (rather than those in the NDK), and should 1) continue using the BSD/POSIX-defined macros (e.g.htonl()
), and obtain those definitions from the BSD/POSIX headers (e.g.#include <arpa/inet.h>
), found along the BSD/POSIX include path (i.e. source/ti/net/bsd).
Note also that NDK 3.x has undergone significant changes from NDK 2.x, and as such, anyone upgrading from a previous NDK 2.x release will require user changes. A brief summary of these changes include:
- Moving content from a packages/ directory to a source/ directory (to align with the SimpleLink SDK ecosystem).
- Restructuring of the OSAL to use abstracted (DPL) APIs
- Alignment on common C99 data types
Host Support
- Windows
- Linux
- Mac
Dependencies
This release requires the following software components and tools versions to successfully function:
- SYS/BIOS 6.55.00.07
- Network Services 2.20.00.11
Note that compiler versions are noted in a following section.
Device Support
This release supports the following devices:
- MSP432E
Validation Information
This release was validated using the following software components. Please use the versions below, or compatible:
- SYS/BIOS 6.55.00.07
Network Services 2.20.00.11
- Pre-built binaries were built with the following toolchains:
- CCS (C6x) 8.1.2
- CCS (ARM) 18.1.0.LTS
- GNU (ARM) gcc-arm-none-eabi-7-2017-q4-major
- IAR (ARM) 8.20.2.58
Known Issues
N/A
Benchmarks
Versioning
All releases have 4 digits (M.mm.pp.bb). This includes GA and pre-releases. Pre-releases are denoted with a suffix (e.g. 3.00.00.00_eng).
This product’s version follows a version format, M.mm.pp.bb, where M is a single digit Major number, mm is 2 digit minor number, pp is a 2 digit patch number, and bb is an unrestricted set of digits used as an incrementing build counter.
Subsequent releases of patch upgrades will be identified by the patch number. Typically, these patches only include critical bug fixes.
Technical Support
Last updated: 2018-02-21