NDK 3.30.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.30.00.10
Fixed race conditions that could result in an application crash during stack shut down when lingering sockets are present.
The getaddinfo function has been migrated to the Network Services product. It is no longer available in the NDK.
NDK statistics variables and the macro BIGENDIAN have been updated to have an
NDK_
prefix, in order to avoid potential namespace collisions.Client authentication now supported in server mode.
The following Defects were resolved
ID | Summary |
---|---|
NDK-244 | Translate address family in SlNetIfNDK |
NDK-243 | Allow servers to request client authentication |
NDK-237 | TLS handshake fails when the server requests a local certificate but none is provided |
NDK-234 | inet_ntop() does not null terminate strings correctly for IPv6 |
NDK-232 | Call Sock6CleanPcb() when an IPv6 address is removed and/or IPv6 is deinitialized |
NDK-230 | Potential crash if client on a closed, lingering socket sends TCP_RST |
NDK-225 | Potential crash when sockets linger and the stack is shut down |
NDK-221 | Broken links in Users and API Guides |
NDK-205 | Add NDK_ prefix to BIGENDIAN macro |
NDK-200 | Add NDK_ prefix to global stats variables |
NDK-36 | add llEnter/llExit around calls to SockCleanPcb() |
The following Enhancements were resolved
ID | Summary |
---|---|
NDK-206 | Update preprocessor big endian detection for all supported compilers |
NDK-127 | Move getaddrinfo and freeaddrinfo into NS |
Upgrade and Compatibility Information
Specific compatibility notes for NDK 3.30:
This release contains the following binary compatibility breaks:
- getaddrinfo and freeaddrinfo have been migrated to the Network Services product
- As part of this migration, the values of the associated error code macros have changed (e.g.
EAI_FAMILY
,EAI_NONAME
, etc.) - Therefore, any user application code that’s referencing the
EAI_*
macros must be rebuilt. - The signatures of these functions remain unchanged, so there is no break in compatibiity regarding the APIs themselves.
- As part of this migration, the values of the associated error code macros have changed (e.g.
- Some NDK global variables and macros have been renamed to have a namespace prefix
- Any code that’s referencing the NDK global statistics variables (e.g.
tcps
,udps
, etc.) will need to be updated ito add theNDK_
prefix to those macros (e.g.NDK_tcps
,NDK_udps
) and rebuilt. - Similarly, any code that references the NDK macro
BIGENDIAN
will need to be updated to have the prefix (NDK_BIGENDIAN
) and rebuilt.
- Any code that’s referencing the NDK global statistics variables (e.g.
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.30.00.09
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.30.00.09
- 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-05-18