tcpbm: TCP/IP Benchmark Application

This application is used to test and verify TCP/IP performance on the
NET+OS development board.

Note that the local network conditions can adversely effect the
results of this benchmark.  For consistency, it is recommended that
these tests be run on either an isolated network or a very lightly
loaded network (e.g., a segment isolated by a switch).

The application comes with a UDP and a TCP server, on port 7777.
These services are designed to talk to the client code, which can be
found under the utility tree.  These executables were built from the
source file, found next to the utility, using Visual C++, along with
the winsock (wsock32.lib) library.  Note, when running the debugger
version of this application, the client code should be run on an
independent machine.  Also, the quality of this machine will have
a significant impact on performance.

Using these utilities, the standard set of tests include the
following:

    1. TCPsend 5000000 <ip address>
    2. TCPrecv 5000000 <ip address>
    3. UDPrecv 10000 1518 <ip address>
    4. UDPrecv 50000 64 <ip address>

Tests 1 through 3 measure data throughput (i.e. K-Bytes-per-second)
and test 4 measures packet throughput (i.e. Packets-per-second).

Finally, the configuration of the development board will greatly
effect performance.  For instance, selecting between 32-bit or 16-bit,
cache enabled or not, running from ROM or RAM (debugger), will all
make a difference.  Note: The ROM version has enabled cache (linked at
0xA000000).

The following files are provided in this application:

appconf.h           sets application configuration settings
readme              this file
root.c              contains applicationStart() function
xmtdgrms.c          code for sending datagrams
recvtcp.c           code for receiving TCP data
senddata.c          global data structures
sendtcp.c           code for sending TCP data
tcpsvrd.c           front end TCP server code
udpsvrd.c           front end UDP server code
rcvdgrms.c          code for receiving datagrams
server.h            application header file
makefile          Make file for the GNU toolset.


The following Utility Files are located under the .\utilities tree:

TCPrecv\TCPrecv.c     client source file to check NET+ARM TCP send
TCPrecv\TCPrecv.exe   TCPrecv Executable
TCPsend\TCPsend.c     client source file to check NET+ARM TCP receive
TCPsend\TCPsend.exe   TCPsend Executable
UDPrecv\UDPrecv.c     client source file to check NET+ARM UDP send
UDPrecv\UDPrecv.exe   UDPrecv Executable

In addition, the following files in the BSP directory are compiled
as part of this application:

reset.s         contains the reset code
appconf_api.c   contains run time access to the application configuration

The application build file links in the following libraries:

libbsp.a           		contains the BSP code
libtcpip.a         		contains the Net+Works TCP/IP stack
libtx.a            		contains the ThreadX kernel
libfilesys.a       		contains the file system libraries
libposix.a         		contains the POSIX layer libraries
libflash.a         		contains the Flash driver API library
libftpsvr.a        		contains the FTP server library
libtelnsvr.a       		contains the Telnet server library
libaddp.a		   		contains the ADDP Library
libssh.a		   		contains the SSH Library
libdnsclnt.a            contains the DNS Client library

The application uses the following files located in the
netos\src\linkerScripts directory.  These files are generated
when the BSP is built.

bootldr.dat     bootloader configuration file used to generate the
                file image.bin.  It controls the information placed
                in the bootloader header of the image.

image.ldr       GNU linker script used to build an image that can
                be debugged and used with the bootloader.
                
customize.ldr   Customizable GNU linker script

