Skip to content

qualcomm/qcom-embedded-power-measurement

Qualcomm Embedded Power Measurement (QEPM)

CMake Build

Table of Contents

Introduction

QEPM is a software suite that enables users to perform power measurement on Qualcomm devices. The device to be controlled must be attached to a Qualcomm approved debug board. The device to be tested is connected to a host using a USB cable.

What You Get

Application Description
Embedded Power Measurement (EPM) View power measurement channels, select channels for recording, save runtime configurations for automation
EPMConfigurationEditor Create configuration to perform power measurements on a Qualcomm platform
EPMScope View real-time current & voltage graphs for selected power measurement channels
EPMViewer View current & voltage graphs for power measurement channels from already acquired data
Command-line utilities EPMDump, SCLDump, EPMCLI, UDASCLI, PSOCProgrammer
BugWriter File bug reports with QEPM from within Qualcomm network

Hardware Requirements

Required Hardware:

  • Qualcomm approved debug board (FTDI or PSoC-based)
  • Qualcomm device to be controlled
  • USB Cables: Type B Micro-USB (Board to Host) & Type-C (Device to Host)

Setup: Connect the device to the debug board (directly or via cable strip) and both to the host.

Common Prerequisites

Development Tools

Category Software Minimum Version
OS Windows / Debian Windows 10+ / Ubuntu 22.04+
Compiler MSVC 2022 / GCC MSVC 2022 / GCC-11, G++-11, GLIBC-2.35
UI Framework Qt Open-source 6.10.0+

Note

Review license terms for Visual Studio and Qt. Qwt dependency is fetched and compiled automatically during the CMake configuration step when building from source.

Optional Software

QEPM allows you to view streaming device logs as you transition the device between different states. The debug logs are streamed over USB serial interface(s).

To view these logs, you may install Putty or similar terminal software. QEPM does not depend on or use this software.

Clone Repository

git clone https://github.com/qualcomm/qcom-embedded-power-measurement.git

Windows Guide

Configuration

  1. Visual Studio: Install Desktop development with C++ and .NET desktop development.
  2. Qt: Install Qt 6.10+ for MSVC 2022 64-bit and Qt Serial Port component.

Note

Installation using Qt Online Installer will require users to create a Qt account.

  1. Environment Variable:
    setx QTBIN C:\Qt\<version>\msvc2022_64\bin

Build & Usage

Execute CMake to configure and build the project:

cmake -B build
cmake --build build --config Release

Build output:

  • Debug: __Builds\x64\Debug
  • Release: __Builds\x64\Release

Usage:

__Builds\x64\Release\bin\EPM.exe

Linux Guide

Configuration

Important

  • Installation using Qt Online Installer will require users to create a Qt account.
  • If you're frequently working with Qt on Linux, consider adding the environment variables to .bashrc.
  1. Qt Installation (choose one):

    Option A: Qt Online Installer

    Option B: Quick Installation via apt

    sudo apt install qt6-base-dev qt6-serialport-dev
  2. Runtime Dependencies:

    sudo apt install libusb-dev libusb-1.0-0-dev libxcb-cursor0 libpcre2-16-0 libxkbcommon-x11-0 libxcb-xkb1 libxcb-icccm4 libxcb-shape0 libxcb-keysyms1 libgl1 libegl-dev libxcb-xinerama0 libpulse-dev
  3. Environment Variable:

    export QTBIN=/path/to/Qt/directory/<version>/gcc_64/bin

Build & Usage

Execute CMake to generate executables:

cmake -B build
cmake --build build --config Release

Build output:

  • Debug: __Builds/Linux/Debug
  • Release: __Builds/Linux/Release

Usage:

./__Builds/Linux/Release/bin/EPM

Repository Structure

Directory Content
.github CI/CD build pipelines
configurations Platform-specific configurations
docs Documentation and guides
examples C++ example applications
interfaces APIs for C++, Python
src Source files (Applications & Libraries)
third-party External dependency scripts

Application Dependency Architecture

Applications and libraries in QEPM have the following dependencies:

graph TD
    %% Base Libraries
    QCommonConsole[QCommonConsole]
    QCommon[QCommon] --> QCommonConsole
    LibExcel[LibExcel]
    EPMLib[EPMLib] --> QCommonConsole
    EPMLib --> QCommon
    EPMLib --> LibExcel
    
    %% Intermediate Libraries
    UILib[UILib] --> QCommon
    UILib --> QCommonConsole
    UILib --> EPMLib
    
    PowerChart[PowerChart] --> QCommon
    PowerChart --> QCommonConsole
    PowerChart --> EPMLib
    PowerChart --> UILib
    PowerChart --> Qwt[Qwt]
    
    %% Interfaces
    EPMDev[EPMDev] --> EPMLib
    EPMDev --> QCommonConsole
    
    UDASDev[UDASDev] --> EPMLib
    UDASDev --> QCommonConsole
    
    %% Applications
    BugWriter[BugWriter] --> QCommon
    BugWriter --> QCommonConsole
    
    EPM[EPM] --> EPMLib
    EPM --> PowerChart
    EPM --> QCommon
    EPM --> QCommonConsole
    EPM --> UILib
    
    EPMConfigurationEditor[EPMConfigurationEditor] --> EPMLib
    EPMConfigurationEditor --> QCommon
    EPMConfigurationEditor --> QCommonConsole
    EPMConfigurationEditor --> UILib
    
    EPMCLI[EPMCLI] --> EPMDev
    EPMCLI --> EPMLib
    EPMCLI --> QCommonConsole
    
    EPMDump[EPMDump] --> EPMDev
    EPMDump --> EPMLib
    EPMDump --> QCommonConsole
    
    EPMScope[EPMScope] --> EPMLib
    EPMScope --> PowerChart
    EPMScope --> QCommon
    EPMScope --> QCommonConsole
    EPMScope --> UILib
    
    EPMViewer[EPMViewer] --> EPMLib
    EPMViewer --> PowerChart
    EPMViewer --> QCommon
    EPMViewer --> QCommonConsole
    EPMViewer --> UILib
    
    PSOCProgrammer[PSOCProgrammer] --> EPMLib
    PSOCProgrammer --> QCommonConsole
    
    SCLDump[SCLDump] --> EPMLib
    SCLDump --> QCommonConsole
    
    UDASCLI[UDASCLI] --> UDASDev
    UDASCLI --> EPMLib
    UDASCLI --> QCommonConsole
Loading

Support & Contributing

About

Enables power measurement features that are available through debug board with PSOC chipset

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors