NDK Support Package for TCI6484

Version 2.00.00 Release (Revision History)


This software package contains NDK support package files for TCI6484 platform.  It contains NDK required drivers, and examples.

NDK Support Package Overview

The TMS320C6000 NDK is a platform for development and demonstration of network enabled applications on the TMS320C6000 DSP family.  The NDK core package consists of the platform independent libraries, source files, and drivers. The platform specific portion of the stack is delivered as a separate package per platform basis.

The NDK Support Package includes demonstration software showcasing TCI6484 DSP 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 DSP 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.

System Requirements

To install the NDK Support Package, a desktop or laptop PC is needed with the following requirements:

Minimum

  • 1Ghz PentiumTM-compatible CPU
  • 600MB of free hard disk space
  • 1GB of RAM
  • Internet ExplorerTM (6.0 or later) or Netscape NavigatorTM (6.0 or later)
  • Local CD-ROM Drive

Recommended

  • 2Ghz PentiumTM-compatible CPU
  • 2GB of RAM
  • 16-bit color

Supported Operating Systems

  • WindowsTM 2000 Service Pack 1 or higher
  • WindowsTM XP

Required Hardware

The NDK Support Package is supported on the following platforms:

  • TCI6484

In addition to this hardware, a compatible emulator connection to CCS is required.

Required Software

  • Code Composer Studio Version 3.3 or higher
  • DSP/BIOS 5.33.04 or higher.
  • Obtain the Board Support Library (BSL) package from the EVM vendor, Lyrtech's CD/website and extract it to a convenient place on your PC.
  • The BSL installation comes with a defualt Chip Support Library (CSL) software package. By default the CSL installs to C:\Lyrtech\evmc6484\csl_c6484. To use a different version of the software, obtain the Chip Support Library (CSL) package and extract it to a suitable location.
  • Add the gel file from Lyrtech BSL installation in your CCS configuration to initialize the boards, prior to running any example applications.
  • NDK V2.00.00.

NDK Support Package Software Components

  • The NDK Support Package libraries are built by using DSP/BIOS 5.33.04, and NDK 2.00.00 libraries and CodeGen Tool V6.1.5. It contains the following software components:
    • HAL libraries and source files for TCI6484 platform (eth_c6484).

    Important Note:

    Please note that the Ethernet drivers provided in this release are built using NIMU architecture only. LL packet drivers are not packaged in this release. The NDK 2.0.0 release is not compatible with any of the older releases.

 

  • Demonstration Software
    • “Hello World” network example which contains the minimum setup necessary for a networking application with DSP/BIOS. It can serve as a skeleton project, ready for the application programmer to start adding code.
    • Network client demonstration shows DHCP client, HTTP server, Telnet client, and multiple data servers for benchmarking.It now demonstrates the use of Raw ethernet sockets also.
    • Configuration demo illustrates how a "network appliance" can be installed and configured on the home network without using DHCP.

Software Installation

Follow the steps below for NDK Support Package software installation:

  1. If not installed yet, install the Code Composer Studio (CCS) using the CCS CD. It must be installed before the NDK Support Package software.

 

  1. If not installed yet, install the NDK v2.0.0 software. NDK by default installs to the active CCS installation directory, for example as : <CCS_INSTALL_DIR\ndk_2_0_0\packages>. If choosing an alternative custom location for the NDK installation, the user needs to bear in mind that the NDK applications expect NDK to be always rooted at "packages" directory in the custom location. For example, if the custom location chosen by the user is <Custom_NDK_Install_Dir>, then for all the NDK applications to work properly, the destination location to choose during installation must be <Custom_NDK_Install_Dir>\packages.

 

  1. Obtain the Board Support Library (BSL) package from the EVM vendor, Lyrtech's CD/website and extract it to a convenient place on your PC. By default the BSL installs to C:\Lyrtech\evmc6484. Setup an environment variable EVMC6484LOC on your PC to point to this root installation folder of EVM software. .

    The BSL installation comes with a defualt Chip Support Library (CSL) software package. By default the CSL installs to C:\Lyrtech\evmc6484\csl_c6484. To use a different version of the software, obtain the Chip Support Library (CSL) package and extract it to a suitable location. Setup an environment variable C6484_CSL_DIR on your PC to point to the CSL installation folder.

    By default, BSL for TCI6484 is located under the directory C:\Lyrtech\evmc6484, then the CSL for the EVM could be placed under the directory C:\Lyrtech\evmc6484\csl_c6484. Thus configure the environment variable C6484_CSL_DIR to point to C:\Lyrtech\evmc6484\csl_c6484.

    The CSL header files and library are used by the ethernet driver in configuring the EMAC peripheral.
  1. Set environment variable NDK_INSTALL_DIR to the root folder of NDK package installation, for example: <CCS_INSTALL_DIR\ndk_2_0_0>
  1. Copy the “ti.ndk.platforms.tci6484_2_0_0.tar” under NDK_INSTALL_DIR\packages directory, and untar it. A new folder tci6484 can be seen now. Copy over the directory and contents of NDK_INSTALL_DIR\packages\tci6484\ti to NDK_INSTALL_DIR\packages directory.
  1. After installation, all NDK Support Package related files are located under NDK_INSTALL_DIR\packages\ti\ndk directory, and organized in subdirectories. These subdirectories can be summarized as follows:

    [\example]
    The EXAMPLE directory contains sample source code for a variety of applications. Included here are demos that work on Ethernet port. These include initialization examples, HTTP and Telnet servers,and configuration examples.

     

    [\example\network\<example_name>\tci6484]
    Examples using an Ethernet network.

     [\example\tools\tci6484]
    TCI6484 platform initialization files which are used by all TCI6484 example programs.

     

     [\lib]

     

    [\lib\hal\tci6484]
    This directory contains the NDK Support Package for TCI6484 HAL library files.

     

     

    [\src]
    The SRC directory is the location of the source code to the sample drivers included with the TCP/IP Stack.

     

    [\src\hal\tci6484\eth_c6484]
    This directory contains the TCI6484 EMAC ethernet driver source files.

    [\doc\tci6484]
    The DOC directory contains a copy of the NDK Support Package for TCI6484 documents and the doxygen output of APIs and data structures in the ethernet driver.

  1. Several builds of the libraries are provided with NIMU architecture for Big and Little Endian architectures under [\lib\hal\tci6484]. The libraries are named as <lib_name>.lib for little endian and <lib_name>e.lib for big endian.

    The user needs to choose the most appropriate version of the library based on the endianness and copy over the library to just <lib_name>.lib before using it with any example projects.

    For example: If an application requires NIMU big endian HAL ethernet driver, copy over [lib\hal\tci6484\hal_eth_c6484e.lib] to [lib\hal\tci6484\hal_eth_c6484.lib] and recompile the example project.


    Important Note:

    Please note that this version of NSP does not include ethernet drivers with LL packet architecture.

 

  1. To build applications for Big Endian, please ensure that the following compilation flag is defined: BIGENDIAN
  1. All the examples for this platform are compiled with IPv6 support enabled. To do so, the projects have been compiled with the following compilation flag defined: _INCLUDE_IPv6_CODE. If IPv6 support is not desired, please ensure that this compilation flag is undefined for all the example projects, NSP libraries and NDK core libraries and recompile them to reflect the same.
  1. To enable Jumbo Frame Support, the application/driver needs to be recmompiled with the following flag defined: _INCLUDE_JUMBOFRAME_SUPPORT. The "Jumbo Frame Support" enabled version of the NetControl (netctrl_jumbo.lib), NetTools (nettool_jumbo.lib), OS (os_jumbo.lib)and stack (stk6_jumbo.lib) libraries must be linked in to the application in place of the default ones used by the application additionally. Also, ensure that appropriate MTU is configured on the interface as per the PHY's Jumbo frame size restriction in the Ethernet driver code. If jumbo frame support is not desired, please ensure that this compilation flag is undefined for all the example projects, NSP libraries and NDK core libraries and recompile them to reflect the same.
    Important Note: The number of Receive Buffer Descriptors to use (PKT_MAX variable in the driver code), and the jumbo buffer allocation code itself needs to be adjusted according to the customer's application needs, memory and performance constraints. The code provided here is a mere illustration of the Jumbo Frame Feature in the EMAC.
  1. The ethernet driver code by default configures the PHYs on the EVM in autonegotiation mode. The ethernet driver has been tested for both 100Mbps and 1000Mbps link speeds.

 

Important First Steps

New users should familiarize themselves with the contents of the NDK User's Guide, test their hardware, and try out some of the example applications described within.

The individual NSP User Guides have been replaced with a generic NSP Ethernet Driver Design Guide from this release onwards. This document describes the ethernet driver design packaged in this release. Furthermore, all the APIs and data structures in the Ethernet driver are documented using "doxygen" style commenting and default doxygen output is provided for API and data structure referencing sake.

 

Additional Information

NDK Benchmarking for TCI6484

Performance benchmarks are at the same time an objective and subjective measurement for performance. They are objective in the sense that the performance is measured using benchmark tools that yield reproducible results, but they are subjective in that there are so many variables involved that any one performance measurement is only a guideline to overall performance in a diverse set of operating environments.

The following factors can have a significant influence on performance:

  • Socket API: The NDK includes support for classical buffer based sockets (for transactions involving small payloads like Telnet), packet queue based sockets (non-copy), enhancements to the sockets API to allow the application to directly receive non-copy TCP data, and Raw ethernet socket APIs to send / receive data using custom L3 types and by bypassing IP stack processing. Performance varies depending on what features are used.

 

  • Socket Buffers: The socket buffer size affects the TCP send and receive window size, and determines how much data can be sent in one burst. This can have a dramatic effect on performance.

 

  • CPU(DSP) Speed: Given sufficient cache is present, the networking performance has an approximately linear relation to CPU speed.

 

  • CPU(DSP) Cache: The amount of CPU cache used can have a dramatic influence on overall performance.

 

  • Network Hardware: The design of the Ethernet hardware and how it interfaces to the DSP has a large impact on performance.

 

  • EMIF speed: For designs where the Ethernet interface is connected to the EMIF, the EMIF speed as well as the external decode logic has an additional affect on speed.

For detailed information, please see the benchmark results..