NDK 3.75.00.20 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.75.00.20
Defects
The following Defects were resolved
ID | Summary |
---|---|
NDK-527 | Improve SysConfig error checking of user-supplied C functions |
NDK-521 | Fix NIMU Interface ID at build time |
NDK-513 | Fix some broken links in documentation |
NDK-512 | IP & TCP Rx SW checksum validation is skipped if HW checksums are disabled |
NDK-505 | SysConfig build warnings for some IP options |
NDK-504 | Issues when configuring NDK ServiceReport functions using SysConfig |
NDK-495 | Module name for EMAC in SysConfig display should be “EMAC” not “emac” |
NDK-494 | User supplied function for Service Report in SysConfig fails to compile |
NDK-492 | NDK_EALREADY error is not being translated in slnetif layer |
NDK-486 | SlNetIfNDK_bind and SlNetIfNDK_listen do not properly return error codes |
NDK-478 | Telnet's EchoTcp() EchoUdp() should use a more complete test pattern |
NDK-469 | Incorrect assert fires if SlNetIfNDK_recvFrom() is passed MSG_DONTWAIT |
NDK-463 | Sockets ROV view has incorrect calculation for amount of buffer used |
NDK-415 | Missing setsockopt options in NDK's SlNetIf |
NDK-413 | NDK_setsockopt() should ensure valid optval ranges are supplied |
NDK-394 | Fix check for duplicate wildcard sockets in Sock6PcbBind |
NDK-356 | TCP server sockets do not transition to listen state after call to listen() |
NDK-89 | UDP client socket doesn't “auto bind” its port |
Enhancements
The following Enhancements were resolved
ID | Summary |
---|---|
NDK-525 | Improve support for devices with partial checksum offload |
NDK-524 | Remove deprecated winapps directory |
NDK-518 | Introduce debug stat to track TCP packets dropped due to no open port |
NDK-517 | Add GenLibs support to contribute libraries via SysConfig |
NDK-511 | Update docs to position XDC-based NDK config as deprecated |
NDK-498 | Remove unnecessary TCP software checksums |
NDK-482 | Add TCP debug logging |
NDK-481 | Add a free count to NDK's ROV memory view |
NDK-477 | Introduce protocol specific hardware checksum offload flags |
NDK-475 | Add M4F (TICLANG) library support |
NDK-473 | Remove legacy eclipse plugin |
NDK-462 | Remove deprecated HTTP Server |
NDK-431 | Add NDK Interface (NIMU) module to NDK sysconfig |
NDK-379 | Add PBMQ_enqHead() capability |
NDK-62 | ROV should show IPv4/IPv6 address info |
Upgrade and Compatibility Information
NDK 3.75 is not binary compatible with NDK 3.71, though it is generally source compatible. The following changes are notable when considering compatibility:
- To address NDK-504, the SysConfig support for handling service report functions has changed.
- Previously (NDK 3.70 and 3.71):
- SysConfig would always generate a service report function, named
serviceReport()
, in ti_ndk_config.c. By default,serviceReport()
did nothing (except when an external DNS server was registered, more on that later). If users configuredGeneral.serviceReportHook
, the generatedserviceReport()
would call that user-supplied service report hook from the generatedserviceReport()
. - If the user (via SysConfig) 1) configured the “Local IP Address Configuration” (
General.localIPAddrConfig
) to “Use DHCP to Obtain IP Address”, and 2) enabled an external DNS server (General.enableExtDNS
), the generatedserviceReport()
would automatically detect when the DHCP Client service added or renewed an IP address, and register the external DNS Server with the stack.
- The default service report function configured for services like DHCP Clients, Telnet, DHCP Servers, NAT and DNS Servers was the always-generated
serviceReport()
.
- SysConfig would always generate a service report function, named
- Currently (NDK 3.75+):
- SysConfig will no longer generate any service report functions. Users can still configure their own service report functions, but in all cases the application must implement that service report. As a result, the
General.serviceReportHook
config param has been removed. - If using 1) DHCP Client and 2) an external DNS Server, the user must handle the registration of the external DNS Server with the stack when the DHCP Client adds/renews its IP address.
- The default service report functions for services are now
NULL
.
- SysConfig will no longer generate any service report functions. Users can still configure their own service report functions, but in all cases the application must implement that service report. As a result, the
- To address NDK-431, the NDK SysConfig settings have slightly changed. Please refer to the examples provided in your SDK for new usage.
- To address NDK-462, the NDK’s HTTP/1.0 Server, as well as related scripts/tools (e.g. ti/ndk/tools/binsrc), have been removed. These have been documented as deprecated for over a year. The Network Services Component is now providing a much more fully featured HTTP/1.1 Server, which is recommended.
- To address NDK-524, the host executables previously provided in ti/ndk/winapps have been removed. These have been documented as deprecated for over a year.
- To address NDK-356, the internal state of a socket will now change to LISTEN while listening rather than previously being in CLOSED. Most users will not be affected by this! However, there are some
setsockopt()
options which must be set when a socket is CLOSED, for example the TCP Selective Acknowledgment (SACK) feature. If you are using the SACK feature, you must now be sure to enable SACK (usingsetsockopt()
) before callinglisten()
. Previously, although this was still the recommended approach, users could have enabled SACK afterlisten()
and beforeaccept()
. That is no longer possible, and attempts to enable SACK on a non-CLOSED socket will fail. - To address NDK-525, support for hardware offloading of checksum calculation has been extended. To enable new types of hardware, several new fields have been added to the internal PBM packet descriptor (
PBM_Pkt
). Most users will not be affected by this, but this change does require that the device-specific NIMU drivers be rebuilt against this NDK version in order to ensure alignment on this structure change. - To address NDK-518, a new field was added to the internal
NDK_tcps
global variable. This should not affect users, however if you have any tooling or debug techniques that utilize this variable, you may need to make changes.
If updating from a previous version of NDK, see the changelog for potential upgrade and compatibility information.
Host Support
- Windows
- Linux
- Mac
Dependencies
This release requires the following software components and tools versions to successfully function:
- SYS/BIOS 6.82.00.16
- Network Services 2.75.00.17
Toolchain Support
The NDK supports building libraries for the following ISA/toolchain combinations, your SDK may provide a subset of these libraries:
ISA | TI/CCS | IAR | GCC |
---|---|---|---|
C674x | 8.3.2 | N/A | N/A |
C66 | 8.3.2 | N/A | N/A |
Arm9 | 20.2.0.LTS | N/A | N/A |
A8F | N/A | N/A | gcc-arm-9.2-2019.12-x86_64-arm-none-eabi |
A9F | N/A | N/A | gcc-arm-9.2-2019.12-x86_64-arm-none-eabi |
A15F | N/A | N/A | gcc-arm-9.2-2019.12-x86_64-arm-none-eabi |
A53F | N/A | N/A | gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf |
M4 | 20.2.0.LTS | N/A | N/A |
M4F | 20.2.0.LTS | 8.50.1 | gcc-arm-none-eabi-9-2019-q4-major |
R5F | 20.2.0.LTS | N/A | N/A |
Device Support
Please refer to the SDK Release Notes for device support.
Known Issues
- Stack shut down and or reboot is not supported on F2838X
- Code to handle shut down and/or restarting of the EMAC DMA engine is not currently implemented and will be added in a future release.
- The following Jira has been filed to track this issue:
- NDK-405: Update F2838X NIMU driver to support stack reboot/shutdown
Versioning
All releases have 4 segment versions (M.mm.pp.bb). This includes GA and pre-releases (engineering, alpha/EA, beta, etc.). Pre-releases are denoted with a suffix (e.g. 3.40.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: 2020-02-21