SPRACT8 September   2020 66AK2H06 , 66AK2H12 , 66AK2H14

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
    1. 1.1 TI Processor SDK RTOS
    2. 1.2 TI NDK
    3. 1.3 66AK2H Device
    4. 1.4 FTP Offering in TI Processor SDK RTOS
  4. 2Hardware and Software
  5. 3Develop the FTP Server on K2H
    1. 3.1 Reference FTP Server Example
    2. 3.2 Create K2H FTP Server Example
    3. 3.3 Test K2H FTP Server Example
  6. 4Performance Tuning
    1. 4.1 Quick Code Check
      1. 4.1.1 FTP Transmitting Code Check
      2. 4.1.2 FTP Receiving Code Check
      3. 4.1.3 CCS Project Optimization
    2. 4.2 Increase the TCP Buffer Sizes
    3. 4.3 UIA CPU Load Instrumentation
    4. 4.4 What Can We Do on the PC Side?
      1. 4.4.1 TCP Window Scaling Check
      2. 4.4.2 Receive Interrupt Coalescing Check
    5. 4.5 What Else Can We Do on the K2H Side?
      1. 4.5.1 TCP/IP Checksum Offloading Check
      2. 4.5.2 NIMU Driver Efficiency Profiling
      3. 4.5.3 Receive Interrupt Coalescing
    6. 4.6 Final FTP Throughput Results
  7. 5Summary
  8. 6References

Summary

This application report explains how to create the FTP server application on TI K2H device, using TI processor SDK and NDK software offerings with RTOS. The example runs on an Arm A15 core and its network throughput performance is measured. The steps creating the Arm CCS project also apply to DSP CCS project. The same can be extended to other TI devices supported by Processor SDK RTOS, which share the same NIMU driver and NDK stack architecture. In addition, the document illustrates how to measure CPU load using TI UIA tool, to understand if the CPU processing power a limitation factor.

The document largely explores the network performance tuning by various approaches. At first, application level code check and project build optimization are tried for simple throughput boost. Next, the NDK driver is updated with larger TCP buffer sizes. A typical memory allocation issue arises and it is dealt with. Moreover, PC side improvement is studied by analyzing the packet traffic and implementing interrupt coalescing from TCP ACK packet generation perspective. Finally, the K2H NIMU driver is optimized and adjusted for receiving packet interrupt coalescing as an advanced topic.

While the K2H NIMU driver and NDK are TI devices specific, the topics such as TCP window scaling, checksum offloading and interrupt coalescing are not limited to this and they are applicable to generic TCP/IP network performance tuning. Collectively with all the changes, significant throughput improvement is achieved. Certainly there can be more works, like implementing jumbo packets, ensuring the TCP window size is scaled up, offloading checksum calculation to hardware by redesigning the NDK, NIMU interfaces and so forth. Those may be investigated in the future.