NDK 2.21.00.32 GA Release Notes
March 24, 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.32.03.43 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 or Cortex-M3 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.
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 website.
New Features
- DSP/BIOS 5.x is no longer supported in this version of the NDK (it is still supported in the NDK 2.20x stream)
- Added new graphical configuration support to ti.ndk.config package.
- PBM and memory manager buffer sizes are now configurable at the application build level.
- Fixed race condition in the task delete code.
- NDK now takes advantage of the SYS/BIOS feature to automatically delete terminated tasks.
- Note: it may be necessary to update your application configuration (*.cfg) file for this.
- Please refer to the Known Issues section, as well as section 5.2.2 of the NDK User's
Guide for more information.
- Now shipping pure IPv4 libraries
- Network
control library now has 3 possible choices - "minimal", "normal" and
"full", in order to allow user to eliminate unwanted stack features.
- Added support for the A8Fnv target.
- Added support for the C674 ELF target.
- NDK heartbeat tick period is now adjustable via the configuration
parameter Global.ndkTickPeriod
- It's default value is 100 ticks.
This default value was chosen because the default SYS/BIOS Timer
object, which drives the SYS/BIOS Clock, is configured so that 1 tick
= = 1 millisecond. However, it is possible for the user to
configure a new Timer and use that to drive the Clock module. If
this is done, and the new Timer is not configured such that 1 tick = = 1
millisecond, then the user is repsonsible for adjusting the NDK tick
period (via ti.ndk.config.Global.ndkTickPeriod) accordingly.
Bug Fixes in NDK 2.21.00.32
- SDOCM00076157 need to make size of buffers in pbm.c configurable
- SDOCM00078591 need to scale NDK heartbeat to be 100 ms for all hardware platforms
- SDOCM00076026 NDK 2.20 documents link in the eclipse plugin is broken
- SDOCM00085962 clock object needs to be created at run time for multi core (as well as single core scenario)
- SDOCM00081792 TaskExit has a potential race condition
- SDOCM00083333 NDK Task clean conflicts with SYS/BIOS' Task.deleteTerminatedTasks
- SDOCM00078780 NDK config pkg getLibs should fail if building for unsupported target
- SDOCM00076155 cannot build pure NDK IPv4 lib due to IPv4 code containing references to IPv6 functions
- SDOCM00076156 need to remove references to telnet and http from netsrv.c
- SDOCM00086804 NDK product needs to be signed so that CCS does not complain when starting after new NDK installed
- SDOCM00079178 update and run NDK benchmark programs for BIOS 6
- SDOCM00075001 Client example crashes upon stack reboot for BIOS 6 - cannot delete Task in BLOCKED or RUNNING state
- SDOCM00085966 NDK boot task stack size needs to be configurable
- SDOCM00088559 winapps broken in NDK 2.21 due to new compiler used to rebuild them
- SDOCM00077024 NDK API guide (spru524) - update send() to inform user of reason for -1 return value
- SDOCM00082348 NDK documentation needs improved description of fdShare() API
- SDOCM00046203 NDK 1.94 Programmer's guide should warn the IGMPJoinHostGroup and IGMPLeaveHostGroup APIs will be deprecated.
Bug Fixes in NDK 2.20.06.35
- SDOCM00087781 clock create code should only be generated for processors that the user chooses
in Global.multiCoreStackRunMode
- SDOCM00087768 NDK heartbeat Clock period incorrectly computed in NDK 2.20.05.33 release
Bug Fixes in NDK 2.20.05.33
- SDOCM00082467 Add C674x ELF support to NDK
- SDOCM00083225 add Cortex-A8 vector floating point (A8Fnv) library support for NDK libraries
- SDOCM00084419 update NDK 2.20 plugins to work with CCSv5.1
- SDOCM00076026 NDK 2.20 documents link in the eclipse plugin is broken
- SDOCM00086022 (Child) Ndk clock object needs to be created at run time for multi core (as well as single core scenario)
- SDOCM00086028 (Child) need to scale NDK heartbeat to be 100 ms for all hardware platforms
Bug Fixes in NDK 2.20.04.26
- SDOCM00080990 - NDK big endian library support is broken
Bug Fixes in NDK 2.20.03.24
- SDOCM00076153 - NDK getLibs() function is broken for non-default stack choice
- SDOCM00076236 - NDK getLibs() should not return binsrc library
- SDOCM00077029 - SEQ_GT macro problem (Arm 4.6.x compiler generates incorrect code) in tcpif.h
- SDOCM00076026 - NDK 2.20 documents link in the eclipse plugin is broken
- This
bug was thought to have been fixed in 2.20.02.22, but in fact the
problem was still present in that release. It is now fixed and
verified to be fixed in this ndk_2_21_00_32 release.
Bug Fixes in NDK 2.20.02.22
- SDOCM00075747 - ti.ndk.config getlibs() does not support C66
Bug Fixes in NDK 2.20.00.19
- SDOCM00072247 - DaemonNew() function takes task pri and stacksize but doesn't use them when creating a new task.
- SDOCM00071793 - NDK must handle support for ipc.Semaphore vs. knl.Semaphore to support B6.30 as well as earlier B6.x versions
- SDOCM00071791 - ndk.config pkg should useModule on all mods required by OSAL
- SDOCM00072132 - NDK core libs must be rebuildable by the customer
- SDOCM00072131 - NDK needs to build with a CCS project
- SDOCM00072865 - need configuration param for NDK config package to allow user to select which core(s) to run the stack on
- SDOCM00072871 - some NDK config params are type "Int" when they should be type "CisFlags"
- SDOCM00074294 - NDK apps get errors due to undefined symbols when Global.enableCodeGeneration = false
- SDOCM00072134 - NDK build fails if BIOS5 is not installed
- SDOCM00074864 - ndk examples get errors if Global.enableCodeGeneration = false and other config modules are used
- SDOCM00074815 - setting socket option to TCP_NOPUSH in httpClientProcess() causes slow web page bring up
- SDOCM00074294 - NDK apps get errors due to undefined symbols when Global.enableCodeGeneration = false
- SDOCM00072872 - NDK example utilities e.g. cgi, servers, console, etc. - build these into a library
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.32.03.43 (or
greater) and is meant to be used with CCSv5.1. 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.1
- XDCtools 3.22.03.41
- 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 4.9.1
- Cortex-A8: Code Generation Tools 4.9.1
This release supports the following devices:
- 64xx+: big and little endian
- 66xx: big and little endian
- 674x+: little endian
- Arm9: elf format only
- Cortex-A8: elf format only
- Cortex-M3: elf format only
This release was built and validated against using the following software
components:
- SYS/BIOS 6.32.03.43
- NSP 1.10.00.03
- CCS 5.1
- XDCtools 3.22.03.41
- Pre-built binaries were built with the following toolchains:
- 64xx+: Code Generation Tools 7.0.0
- 66xx: Code Generation Tools 7.2.0
- 674x+: Code Generation Tools 7.0.0
- 674x+ ELF: Code Generation Tools 7.2.0
- Arm9: Code Generation Tools 4.9.0
- Cortex-A8: Code Generation Tools 4.9.0
- Cortex-M3: Code Generation Tools 4.9.0
This release was validated using the following hardware platforms:
- OMAP-L138 LCDK
- LM3S9B92
- 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
- SDOCM00090372 - running ping to a host name within client telnet session does not work due to
incorrectly resolved host name to IP address
- 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 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.21x libraries
(for NIMU architecture only).
The benchmarks were run using the IPv6 enabled libraries (stk6_nat_ppp_pppoe.a64P and libraries built with _INCLUDE_IPv6_CODE defined), as well as the pure IPv4 only libraries (stk_nat_ppp_pppoe.a64P and *_ipv4.a64P libraries), which most closely resemble the previously published benchmark results for NDK 1.94 (linked above).
During benchmarking, it was found that the IPv6 enabled stack libraries caused increased CPU load when compared to the pure IPv4 case. This issue is currently under investigation.
Please find updated Excel spreadsheets for benchmark results here.
You may compare them to the spreadsheets found in the zip file attached
to the aforementioned benchmark document:
NDK Performance and CPU Load Benchmarks (pure IPv4 libraries)
NDK Performance and CPU Load Benchmarks (IPv6 enabled)
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_21_00_32.
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: March 24, 2012 Build Ver: ndk_2_21_00_32 Rev: b32