Vision Apps User Guide
Power Measurement Using XDS110 Debug Probe

Power measurement is a critical step in evaluating the efficiency, thermal characteristics, and overall performance of embedded systems. The J722S EVM, equipped with an integrated XDS110 debug probe and TIVA automation firmware, provides a convenient and accurate way to measure power consumption across various rails during different operational states (idle, active, etc.). This guide provides a step-by-step process, from setup to data analysis, for measuring power on the J722S EVM using the XDS110 debug probe.

  • J722S EVM: Evaluation module for the J722S SoC.
  • XDS110 Debug Probe: Integrated on the EVM, used for communication and power measurement.
  • Host PC: Linux or Windows machine for running CCS and terminal emulator.
  • TI Code Composer Studio (CCS): IDE for flashing firmware and interacting with the EVM.
  • TIVA Automation Firmware: Enables automated power measurement via XDS110.
  • Terminal Emulator: Minicom (Linux), PuTTY (Windows), or similar.
  • Python 3: For running analysis scripts.
  • TIVA Automation firmware is available at "vision_apps/toos/tiva_firmware/firmware_3.0.0.35_8ec5a5449193936d09c973354d1bb172.bin".
  • Connect the J722S EVM debug/jtag port to your PC via USB.
  • Check the xdsdfu tool is installed with CCS. It is usually located in the CCS installation directory under /home/$USER/ti/ccs<ccs_version>/ccs/ccs_base/common/uscif/xds110/xdsdfu.
  • Open a terminal and navigate to the directory containing xdsdfu.
    cd /home/$USER/ti/ccs<ccs_version>/ccs/ccs_base/common/uscif/xds110/xdsdfu
  • Put the device into DFU mode:
    • Ensure only the XDS110 device is connected to your PC.
    • If flashing the firmware for the first time:
      ./xdsdfu -m
    • If already using the Test Automation Interface:
      • Connect to the Test Automation Interface UART terminal (COM[X] on Windows or ttyUSB/ACM[X] on Linux).
      • Enter the command:
        dfu
      • The XDS110 will enter DFU mode.
    • Verify DFU mode:
      ./xdsdfu -e
      You should see the DFU device appear.
  • Set the device configuration value:
    • Use the xdsdfu tool to set the configuration value for the Test Automation Interface:
      ./xdsdfu -c 5 -r
    • To view all configuration options:
      ./xdsdfu -c ?
  • Flash the firmware:
    • After setting the configuration value, put the device back into DFU mode (see above).
    • Flash the firmware using:
      ./xdsdfu -f -v firmware_3.0.0.35_8ec5a5449193936d09c973354d1bb172.bin -r
    • Wait for the process to complete. You should see a success message.
  • Reconnect to the Test Automation Interface UART terminal to verify the firmware is running. You should see the TIVA automation interface prompt.
    Test Automation Interface - 3.0.0.35_71173da2364c309abf00941b6c4d4d4e-1-g805e1b5253
    auto reset :Warm reset DUT
    auto por :Power on reset DUT
    auto hold_por :Hold Power on reset DUT
    auto release_por :Release Power on reset DUT
    auto power <on|off> :Power on|off DUT
    auto sysboot <setting> :e.g. 110000
    auto boot list :List supported boot modes for device
    auto dut list :List supported devices
    auto set dut <DUT type> :Initialize i2c for DUT
    auto scan i2c :Scan i2c bus for devices
    auto probe i2c :Probe i2c bus for addr
    auto ina help :Print help menu for INA interface
    auto measure temperature :Read temperature sensors
    auto measure power <samples(<=150)> <delay(ms)>:Measure DUT power
    dfu :Put the Test Automation Interface device into DFU mode
    version :Show SW version
    help :Print this menu
    =>
  • Launch Minicom, PuTTY, or your preferred terminal emulator. (COM[X] on Windows or ttyUSB/ACM[X] on Linux).
  • Connect to the XDS110 serial port (baud rate: 115200, 8N1).
  • On connection, you should see the TIVA automation interface prompt.
  • Type help to list all supported commands. Here is the command Output:
    Test Automation Interface - 3.0.0.35_71173da2364c309abf00941b6c4d4d4e-1-g805e1b5253
    auto reset :Warm reset DUT
    auto por :Power on reset DUT
    auto hold_por :Hold Power on reset DUT
    auto release_por :Release Power on reset DUT
    auto power <on|off> :Power on|off DUT
    auto sysboot <setting> :e.g. 110000
    auto boot list :List supported boot modes for device
    auto dut list :List supported devices
    auto set dut <DUT type> :Initialize i2c for DUT
    auto scan i2c :Scan i2c bus for devices
    auto probe i2c :Probe i2c bus for addr
    auto ina help :Print help menu for INA interface
    auto measure temperature :Read temperature sensors
    auto measure power <samples(<=150)> <delay(ms)>:Measure DUT power
    dfu :Put the Test Automation Interface device into DFU mode
    version :Show SW version
    help :Print this menu
    =>
  • Key commands for power measurement:
    • auto set dut <DUT type>: Initialize the device under test (DUT).
    • auto measure power <samples> <delay>: Measure power consumption.
  • Set DUT:
    auto set dut j722s-evm
    This initializes the I2C interface for the J722S EVM.
  • Measure Power:
    auto measure power <samples(<=150)> <delay(ms)>
    • <samples>: Number of samples to average (max 150).
    • <delay>: Delay in milliseconds between samples.
      - Example To take 10 samples with 10ms delay:
      auto measure power 10 10
  • Perform measurements in both idle and active states:
    • Idle: No application running, minimal system activity.
    • Active: Application running, system under load.
  • Save the output for each state in a text file, separating the readings with "=>".
  • Here is the sample data format.
    auto measure power 33 10
    Measuring power
    Samples: 33, Delay: 10ms
    Average Data Start
    AVG(Samples=33, Interval=10 ms)
    | Index | Rail Name | Shunt voltage(uV) | Rail voltage(V) | Current(mA) | Power(mW) |
    | 0 | vdd_core | 9579.6210937500 | 0.8614772558 | 1915.9241943359 | 1650.5257568359 |
    | 1 | vdd_ram_0v85 | 762.8787841797 | 0.8506818414 | 76.2878799438 | 64.8967742920 |
    | 2 | vda_phy_1v8 | 208.7121276855 | 1.7976515293 | 20.8712100983 | 37.5191879272 |
    | 3 | vdd_ioret_core | 9.2424240112 | 0.7492423654 | 0.9242424369 | 0.6924809813 |
    | 4 | vdd_sd_dv | 94.0909118652 | 1.7988259792 | 9.4090890884 | 16.9253520966 |
    | 5 | vdd_io_1v8 | 101.5909118652 | 1.7979168892 | 10.1590909958 | 18.2652301788 |
    | 6 | vsys_3v3 | 3212.1970214844 | 3.2965147495 | 1606.0985107422 | 5294.5278320312 |
    | 7 | vdd_ddr_1v1 | 1401.7424316406 | 1.0980302095 | 140.1742401123 | 153.9155883789 |
    | 8 | vdd_io_3v3 | 223.7878723145 | 3.2907567024 | 22.3787879944 | 73.6431732178 |
    | 9 | vda_pll_1v8 | 467.8787841797 | 1.8013632298 | 46.7878799438 | 84.2819747925 |
    | 10 | vdd1_ddr_1v8 | 41.7424201965 | 3.2956051826 | 4.1742424965 | 13.7566680908 |
    | --- | --- | --- | --- | --- | --- |
    | Total | END | END | END | END | 7408.95 |
    =>
    auto measure power 33 10
    Measuring power
    Samples: 33, Delay: 10ms
    Average Data Start
    AVG(Samples=33, Interval=10 ms)
    | Index | Rail Name | Shunt voltage(uV) | Rail voltage(V) | Current(mA) | Power(mW) |
    | 0 | vdd_core | 13370.0000000000 | 0.8612121344 | 2674.0000000000 | 2302.7890625000 |
    | 1 | vdd_ram_0v85 | 841.5151367188 | 0.8510227203 | 84.1515197754 | 71.6149139404 |
    | 2 | vda_phy_1v8 | 250.0000000000 | 1.7976512909 | 25.0000000000 | 44.9412765503 |
    | 3 | vdd_ioret_core | 9.3939390182 | 0.7493561506 | 0.9393939376 | 0.7039487958 |
    | 4 | vdd_sd_dv | 94.6969680786 | 1.7987124920 | 9.4696960449 | 17.0332374573 |
    | 5 | vdd_io_1v8 | 101.5151519775 | 1.7978409529 | 10.1515159607 | 18.2508316040 |
    | 6 | vsys_3v3 | 5033.2578125000 | 3.2941296101 | 2516.6289062500 | 8290.0898437500 |
    | 7 | vdd_ddr_1v1 | 2969.2424316406 | 1.0978789330 | 296.9242553711 | 326.0120544434 |
    | 8 | vdd_io_3v3 | 416.8181762695 | 3.2870078087 | 41.6818237305 | 137.0006408691 |
    | 9 | vda_pll_1v8 | 469.9242553711 | 1.8011739254 | 46.9924240112 | 84.6415786743 |
    | 10 | vdd1_ddr_1v8 | 40.9090919495 | 3.2919685841 | 4.0909094810 | 13.4671697617 |
    | --- | --- | --- | --- | --- | --- |
    | Total | END | END | END | END | 11306.54 |
  • Create a text file containing both idle and active readings, separated by "`=>`".
  • Ensure the format matches the sample above for compatibility with analysis scripts.
  • Use generateExcel.py script available under "vision_apps/tools/tiva_firmware" for analyzing the power consumption data.
  • Install required dependencies:
    pip install openpyxl
  • Run the script to generate an Excel file with the power consumption analysis:
    python3 generateExcel.py --soc <soc_name> --input_txt_file <input_txt_file> --output_excel_file <output_excel_file>
    • Replace <soc_name> with the name of the system-on-chip (SoC) you are using (e.g., "j722s").
    • Replace <input_txt_file> with the path to your txt file containing the power data.
    • Replace <output_excel_file> with the desired path for the output Excel file.
  • After running the script, you should find the generated Excel file at the specified output path.
  • The Excel file will contain detailed analysis of power consumption across all measured rails, for both idle and active states.
  • vsys_3v3 and vdd1_ddr_1v8 are ignored as we are only interested in SOC power rails.
power_excel.png
  • Always ensure the EVM and XDS110 debug probe are properly connected before starting measurements.
  • Use consistent sample counts and delays for comparable results.
  • Record environmental conditions (temperature, supply voltage) for more accurate analysis.
  • For advanced analysis, modify the Python script to include custom charts or summaries.