NDK 2.22.00.06 GA Release Notes
October 11, 2012
This major 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.34.01.14 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.
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-M3 (supports both GCC
and TI compilers), Cortex-M4 or Cortex-A15 (GCC only) device (for C6000
processors,
both big endian and little endian modes are supported). 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.
The following documents provide an overview of the NDK, the networking
programming API, and how to port the software to other platforms:
-
NDK User's
Guide: Documents the NDK basics, and describes how to develop or
port a network-enabled application. It also describes how to customize
the network environment to fit your embedded environment.
- NDK Programmer's
Reference Guide: Describes the NDK library API calls in detail.
It also includes a description of the stack's internal object based
API functions.
- NDK Support
Package Ethernet Driver Design Guide:
Describes the NIMU based architecture of the Ethernet Drivers
packaged in the NSPs.
-
C6000 NDK Getting Started Guide: A somewhat older document, but still
provides a good overview as well as a lot of useful information that is
still applicable.
-
Static Analysis Reports
- Analysis reports were run for the C674x target only, since NDK stack
code is common to all processors, these reports also apply to other
cores (such as M3 and A8).
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.
New Features
- Added GCC support on M3 and A15
- Updated code for Misra and Coverity compliance
- Updated benchmarks to include sizing and throughput for M3
- NDK
override of RTS CIO functions (miniPrintf) has been removed. All
output is now routed through the XDC tools System print APIs.
- Removed
calls to mmCheck() at stack shutdown which print out memory usage
information. This was essentially dead code with little benefiit.
Users must now call this function themselves if they wish to see
memory stats upon stack shut down.
- Code generated by ti.ndk.config package now uses System_printf instead of the RTS printf function.
Bug Fixes in NDK 2.22.00.06
- SDOCM00082199 - NDK needs to make miniPrintf option
- SDOCM00094619 - Change printf() calls in Global.xdt template to be System_printf() calls
- SDOCM00095033 - M4F support needed
- SDOCM00094898 - M4 support needed for NDK
- SDOCM00094157 - NDK config family package causes app build to fail if app's h/w platform has not been added to Settings.xs
- SDOCM00094034 - add gcc M3 support to NDK
- SDOCM00093695 - add gcc/A15 support to the NDK
- SDOCM00092361 - NDK Grace block diagram needs EMAC in physical layer
- SDOCM00091453 - NDK benchmarks CPU load is ~10% higher when IPv6 support is present
- SDOCM00091450 - NDK size and timing benchmarks needed for M3 and M4
- SDOCM00090764 - add Coverity and MISRA static checker report to the NDK
- SDOCM00090372
- running ping to a host name within client telnet session does not
work due to incorrectly resolved host name to IP address
- SDOCM00089337 - no way to pass callback function args to hooks defined in NDK config
- SDOCM00095765 - DHCP option size should be reduced back to 312 as size of 512 causes discover packet to be dropped on some routers
- SDOCM00086184 - NDK tasks are unable to receive broadcast packets (while daemon tasks can)
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.34.01.14 (or
greater) and is meant to be used with CCSv5.2. 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.
The latest Network Support Packages (NSPs) are now released independently of
this product and can be obtained from
the NDK website.
This release must be used with following component versions (or higher):
- CCS 5.2
- XDCtools 3.24.02.30
- Code Generation Tools Versions
- 64xx+: Code Generation Tools 7.3.1
- 66xx: Code Generation Tools 7.3.1
- 674x+: Code Generation Tools 7.3.1
- Arm9: Code Generation Tools 5.0.1
- Cortex-A8: Code Generation Tools 5.0.1
This release supports the following devices:
- 64xx+: COFF big and little endian
- 66xx: COFF big and little endian
- 674x+: COFF little endian
- Arm9: ELF format only
- Cortex-A8: ELF format only
- Cortex-M3: ELF format and GCC
- Cortex-M4: ELF format only
- Cortex-A15: GCC only
This release was built and validated against using the following software
components:
- SYS/BIOS 6.34.01.14
- NSP 1.10.00.03
- CCS 5.2
- XDCtools 3.24.02.30
- Code Generation Tools 5.0.1 (Application Build)
- Code Generation Tools 7.3.1 (Application Build)
- Pre-built binaries were built with the following toolchains:
- 64xx+ COFF: Code Generation Tools 7.0.0
- 66xx ELF: Code Generation Tools 7.2.0
- 674x+ COFF: Code Generation Tools 7.0.0
- 674x+ ELF: Code Generation Tools 7.2.0
- Arm9 ELF: Code Generation Tools 4.9.0
- Cortex-A8 ELF: Code Generation Tools 4.9.0
- Cortex-M3 ELF: Code Generation Tools 4.9.0
This release was validated using the following hardware platforms:
- OMAP-L138 LCDK
- OMAP-L138 Logic Board
- LM3S9D96
- F28M35H52C1
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:
- SDOCM00090817 - IPv6 init command fails sporadically
- SDOCM00075040 - running ping command within a telnet session on the ndk causes the terminal and telnet session to hang
- SDSCM00025064 - DSP crash on Reboot with a PPPoE server on NDK.
Workaround: Ensure that the PPPoE server of the NDK stack is closed
before rebooting the stack.
- SDSCM00024506 - PPPoE client connection handle is not removed after
PPPoE session timeout. Workaround: Ensure that the session timeout on the
PPPoE server is configured to be a large value to avoid this issue.
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,
deomstrate "real world" usage of the TCP/IP stack. The following
summarizes the size benchmark applications:
- basic - The base application; a bare minimum, ping-able NDK application. Contains no sockets, uses DHCP to obtain IP address.
- tcpSocket
- Minimized configuration for the MCUSDK tcpEcho example that
contains a single TCP socket running in a single task. The TCP
send/receive buffers have been lowered to a value of 512 bytes. Uses
DHCP to obtain IP address.
- tcpEchoServer
- Minimal configuration for application that creates a TCP echo daemon
for the NDK library function "dtask_tcp_echo" (from
ti/ndk/tools/servers). The program echoes data received back to
its sender. Uses DHCP to obtain IP address.
- udpEchoServer
- Minimal configuration for application that creates a UDP echo daemon
for the NDK library function "dtask_udp_echo" (from
ti/ndk/tools/servers). The program echoes data received back to
its sender. Uses DHCP to obtain IP address.
- httpServer - Minimal configuration for an HTTP server with a very basic web page and CGI script. Uses DHCP to obtain IP address.
Please find the bench mark results here:
Timing and Size Benchmarks
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.00.03 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.
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
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_22_00_06.
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.
Check
the NDK
website for updates.
Last updated: October 11, 2012 Build Ver: ndk_2_22_00_06 Rev: c06