SPRACW5A April   2021  – December 2021 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DK-Q1

 

  1.   Trademarks
  2. 1Introduction
  3. 2ACI Motor Control Benchmark Application
    1. 2.1 Source Code
    2. 2.2 CCS Project for TMS320F28004x
    3. 2.3 CCS Project for TMS320F2837x
    4. 2.4 Validate Application Behavior
    5. 2.5 Benchmarking Methodology
      1. 2.5.1 Details of Benchmarking With Counters
    6. 2.6 ERAD Module for Profiling Application
  4. 3Real-time Benchmark Data Analysis
    1. 3.1 ADC Interrupt Response Latency
    2. 3.2 Peripheral Access
    3. 3.3 TMU (math enhancement) Impact
    4. 3.4 Flash Performance
    5. 3.5 Control Law Accelerator (CLA)
      1. 3.5.1 Full Signal Chain Execution on CLA
        1. 3.5.1.1 CLA ADC Interrupt Response Latency
        2. 3.5.1.2 CLA Peripheral Access
        3. 3.5.1.3 CLA Trigonometric Math Compute
      2. 3.5.2 Offloading Compute to CLA
  5. 4C2000 Value Proposition
    1. 4.1 Efficient Signal Chain Execution With Better Real-Time Response Than Higher Computational MIPS Devices
    2. 4.2 Excellent Real-Time Interrupt Response With Low Latency
    3. 4.3 Tight Peripheral Integration That Scales Applications With Large Number of Peripheral Accesses
    4. 4.4 Best in Class Trigonometric Math Engine
    5. 4.5 Versatile Performance Boosting Compute Engine (CLA)
    6. 4.6 Deterministic Execution due to Low Execution Variance
  6. 5Summary
  7. 6References
  8. 7Revision History

ERAD Module for Profiling Application

The F28004x devices have a hardware module called ERAD (Embedded Real-time Analysis and Diagnostics) which has comparators and counters that can be used for profiling applications. The 'f28004x' directory contains a script called 'aci_stats_using_erad.js' that demonstrates how the ERAD can be used non-intrusively and without modifying the application to measure and analyze application execution. The script can be used to verify the number of times the interrupt was taken (should be 1024) and also serves as an example of how ERAD can be used to measure execution cycles from ADC interrupt generation to ISR entry, and ISR user code execution. This script is only provided for ERAD demonstration and application validation purpose. Measurements generated by this script are not used in the real-time benchmarking analysis in this document.

Note: The script only works as is for the F28004x SignalChain_RAM_TMU configuration. The script needs to be modified to benchmark an application built for another configuration as the ISR addresses profiled in the script are hard coded for the "SignalChain_RAM_TMU" configuration build.

Follow these steps to use the script:

  1. Load the application compiled for 'SignalChain_RAM_TMU' configuration to the target.
  2. Open Scripting Console view in CCS.
  3. Start the script by typing the following command:

    loadJSFile "C:\TI\c2000\C2000Ware_3_04_00_00\examples\demos\benchmark\aci_motor_benchmark\f28004x\aci_stats_using_erad.js"

  4. The script will print out the initial measurement that is 0 for all.
  5. Run the target and once the test completes halt the target.
  6. Upon halting the target the script will output the captured measurements.

Figure 2-5 shows the output from the script.

GUID-20210205-CA0I-6LKH-0L4M-MLBBWGLDJDTX-low.png Figure 2-5 Script Output With Application Stats Profiled by ERAD
Note: The ERAD module measures the "INT to ISR cycle count" that cycles from ADC interrupt generation to ISR entry. This does not account for the ADC sampling and ADC trigger times that are included in the "INT response (trigger to ISR) cycle count" measured by the application code. Hence, the "INT to ISR cycle count" measured by ERAD script is less than the "INT response (trigger to ISR) cycle count" measured by the application code by ~10 cycles, which is equal to the ADC sampling and trigger duration.