Texas Instruments Technology for Innovators(tm)

NDK 2.24.01.18 GA Release Notes

October 30, 2014

This GA release of the NDK contains documentation updates, support for graphical configuration pages, and major bug fixes.  This release is intended to support SYS/BIOS 6.37.02.27 or greater.

Introduction, Documentation, What's New, Upgrade Info, Compatibility Information, Device Support, Validation Info, Known Issues, Benchmarks, Examples, Rebuilding The NDK Core Libraries, Version Information, Technical Support.


Introduction

The Network Developer's Kit (NDK) is a platform for development and demonstration of network enabled applications on TI embedded processors, currently limited to the TMS320C6000 family and ARM processors. The code included in this NDK release is generic C code which runs on any C64P, C66, C674, ARM9, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-M3, or Cortex-M4 device. Users can obtain an appropriate NDK Support Package (NSP) for the various supported platforms separately. The NDK Support Packages include demonstration software showcasing capabilities across a range of network enabled applications. In addition, the stack serves as a rapid prototype platform for the development of network and packet processing applications, or to add network connectivity to existing applications for communications, configuration, and control. Using the components provided in the NDK, developers can quickly move from development concepts to working implementations attached to the network. Please check the release website for previous release notes and NDK Support Packages.


Documentation

The following documents provide an overview of the NDK, the networking programming API, and how to port the software to other platforms:

In addition, users are encouraged to monitor (and contribute to!) the TI Embedded Processors Wiki.

Release notes from previous releases are also available in the release notes archive directory and the release website.


What's New

New Features

Bug Fixes in NDK 2.24.01.18

Upgrade Information

All the libraries in this release support either IPv4 or IPv6 (or both) and NIMU. The low-level (LL) packet driver architecture has been deprecated since NDK v2.0.0 release.

The NDK stack in this release supports SYS/BIOS 6.37.02.27 (or greater) and is meant to be used with CCSv5.4 and up. The OS Abstraction Layer (OSAL) and HAL libraries have been provided for SYS/BIOS 6.x only.  DSP/BIOS 5.x support can be found in previous versions of the NDK.

Network Support Packages (NSPs), which contain Ethernet drivers, are released independently of this product and are usually shipped as part of a sofware development kit (SDK). The NSPs for evmOMAPL138 and evm6748 platforms can be obtained from the NDK website. Ethernet drivers for MCU devices can be found in the TI-RTOS product (see the TI-RTOS download website). For other devices, please contact your FAE for where to obtain the appropriate SDK.

Removal of sa_len, sin_len and sin6_len socket address struct members

Starting in NDK 2.24, the socket address structures have been redefined to remove the following fields:

Applications which contain references to these fields must be updated due to this change!

This was done in order to make the NDK conform to industry standards, which recommend that these length fields not be implemented, nor used. Removal of these length fields also increases compatiblity between network stacks interoperating with the NDK.

The NDK's socket address structures are now defined as follows:


struct sockaddr {
    UINT8    sa_family;         /* address family */
    char     sa_data[14];       /* socket data */
};

struct sockaddr_in {
    UINT8   sin_family;         /* address family */
    UINT16  sin_port;           /* port */
    struct  in_addr sin_addr;
    INT8    sin_zero[8];        /* fixed length address value */
};

struct sockaddr_in6 {
    UINT8   sin6_family;            /* address family */
    UINT16  sin6_port;              /* port */
    UINT32  sin6_flowinfo;          /* IPv6 flow information */
    struct  in6_addr sin6_addr;     /* IPv6 address */
    UINT32  sin6_scope_id;          /* scope id */
};


Compatibility Information

This release must be used with following component versions (or higher):


Device Support

This release supports the following devices:


Validation

This release was built and validated against using the following software components:

This release was validated using the following hardware platforms:


Known Issues

GNU Applications Must Define _POSIX_SOURCE:

Both the NDK and GNU define the fd_set structure. Since SYS/BIOS ships GNU header files, this conflict may arise when building NDK applications using GCC. In order to avoid such conflicts, GCC apps need to throw -D_POSIX_SOURCE in the application's compiler options in order to take the NDK's definition of fd_set.

Terminated Tasks Must Be Automatically Deleted:

The NDK has been updated to take advantage of the new SYS/BIOS feature which automatically deletes dynamically created Task objects which have reached the terminated state.  If your application configuration is loading the package 'ti.ndk.config' and/or using the 'ti.ndk.config.Global.xdc' module, then Task clean up will be set up correctly for you.

However, if your application configuration is not loading the 'ti.ndk.config' package or the 'ti.ndk.config.Global.xdc' module, then you must add the following lines of code to your application configuration (*.cfg) file:

var Task = xdc.useModule('ti.sysbios.knl.Task');
Task.deleteTerminatedTasks = true;

If not, you may experience out of memory issues due to improper Task clean up.  Please refer to section 5.2.2 TaskCreate(), TaskExit(), and TaskDestroy() of the NDK User's Guide for more information.

Known Bugs:

Benchmarks

NDK throughput benchmarks (described here: Network Developer's Kit (NDK) Benchmark and Sizing) were re-built and run using the TCI6482/DSK6455 platform in order to obtain throughput and CPU load information against NDK 2.22 libraries (for NIMU architecture only).

The benchmarks were run using with both IPv6 enabled and disabled (for pure IPv4). Some minor differences between CPU load between these two scenarios is attributed to cache thrashing due to the extra IPv6 code.

Sizing benchmarks were obtained from applications that, although basic, demonstrate "real world" usage of the TCP/IP stack.  The following summarizes the size benchmark applications:

Please find the bench mark results here:

  • Timing and Size Benchmarks

  • Examples

    NDK examples are no longer included as part of the NDK core release. All examples are now located in a seperate Network Support Package (NSP).

    This NDK release was validated using the latest NSP 1.10.02.09 product for the evmOMAPL138 and evm6748 and so works best with the examples found in that product. Users who have the evmOMAPL138 or evm6748 hardware platforms should make sure to use the latest NSP product with this NDK release.

    The latest NSP product may be downloaded from the NDK website

    For all other hardware platforms, the corresponding NSP products and examples may be found in the previous NDK 2.00 and NDK 2.01.00 products, which are also found at the NDK website.


    Rebuilding The NDK Core Libraries

    The NDK product includes source files and build scripts that allow the user to modify its sources and rebuild its libraries. You can do this in order to modify, update, or add functionality. If you
    edit the NDK source code and/or corresponding build scripts, you must also rebuild the NDK in order to create new libraries containing these modifications.

    The NDK ships with a make file which may be used to rebuild the NDK libraries after sources have been modified.

    Please refer to the following web page for instructions on how to rebuild the NDK: Rebuilding The NDK Core With Gmake


    Version Information

    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 b is an unrestricted set of digits used as an incrementing build counter.

    To support multiple side-by-side installations of the product, the product version is encoded in the top level directory, ex. ndk_2_24_01_18.

    Subsequent releases of patch upgrades will be identified by the patch number, ex. NDK 2.20.01 with directory ndk_2_20_01. Typically, these patches only include critical bug fixes.


    Technical Support

    Check the NDK website for updates.


    Last updated: October 30, 2014 Build Ver: ndk_2_24_01_18 Rev: e18