Skip to content

Release notes

5.4.0

Tools

  • Incorporates Hexagon tools release 8.7.03
  • Updates Python version to 3.11.2
  • Adds support for android-ndk-r25c
  • Fixes memory leak issue in QAIC for auto-generated stub files
  • Enabling higher level of complexity for IDL complex argument
  • Adds domains support to getserial for Lanai and beyond targets
  • Incorporates QuRT release VU_CORE_KERNEL_QURT.04.03.09.01.02.07.01
  • Updates HexTA to 2023-06-29-15-43-8389b2e5-external with support for Python 3.11.2

Libraries

Examples

  • Introduces synxexample, that illustrates the use of synx APIs
  • Updates the API level of APKs to 33
  • Adds --dry_run support for all example walkthrough scripts
  • Adds multi-session tests to calculator example
  • Provides validation script for itrace_example
  • Adds custom example support for running HexTA with run_profiler.py script
  • Adds loadalgo as Secure PD example in the compute add-on
  • Adds support for System Unsigned PD for Lanai and beyond targets
  • Updates itrace example to demonstrate new library features from the walkthrough script

Target support

  • Introduces support for Lanai and Camano

Build system

  • Adds build support for OE Linux toolchain

Debugger

  • Introduces support for simultaneous debugging of multiple DSPs for Lanai on CLI

Documentation

Other

  • Introduces support for Powershell

5.3.0

Tools

  • Incorporates Hexagon tools release 8.6.06
  • Introduces remote debugger support on Clarence, Waipio LE and QCS8550 targets
  • Adds support to run qurt_error_info script from any directory
  • Supports wstring for complex arguments in QAIC
  • Introduces LWI (Light Weight Instrumentation) support in the Hexagon Tools

Libraries

  • Maintains include files separate from binary files
  • Updates itrace library to version 3.x

Examples

  • Adds ETM time based filter for profiling example
  • Adds support for Poll Mode in FastRPC QoS for profiling example
  • Illustrates new itrace features and turns compile-time options into run-time options
  • Adds support for qhl_hmx example on Kailua

Target support

  • Introduces support for Clarence, Waipio-LE and QCS8550

Build system

  • Adds support for -help option for CMake build system
  • Adds support for custom run-elf file
  • Enables c++ exception handling by removing -fno-exceptions flag from make.d build system's default compiler flags

5.2.0

Tools

  • Incorporates Hexagon tools release 8.6.05
  • Incorporates Halide tools release 2.5.2
  • Incorporates QuRT release VU_CORE_KERNEL_QURT.04.02.12.05.01
  • Fixes QAIC to have structure of dmahandle as an IDL parameter
  • Verifies that the stub on the APP side calls the correct version of the skel library on the DSP side. To know which targets support this feature, refer to the feature matrix. Refer to stub-skel mismatch check feature for more details
  • Adds itrace, a tracing library that monitors CPU and DSP events, including all PMU counters

Libraries

  • Adds Sparse convolution to QHL HVX libray

Examples

Target support

  • Introduces support for Netrani, Tofino, Kailua and other v73 architectures
  • Includes support for Enel 2.0 target

Build system

  • Fixes multi-user support for SDK
  • Adds Cmake build support for calculator_c++_apk example
  • Enhances cmake to reduce compile time
  • Adds Cmake Support for Multithreading build
  • Adds Ninja Support in Cmake and sets it as the default option
  • Adds Multi user SDK support using CMake
  • Enhances build_idl cmake helper function to support multiple cmake targets
  • Unifies cmake build system for Android, IDE and command line

Debugger

  • Adds support for Ctrl+C on Linux LLDB and process interrupt in Windows and Linux LLDB to pause a running process during LLDB debugging on Unsigned PD
  • Adds support for kill command when LLDB debugging user process running on Signed PD or Unsigned PD
  • Adds support for viewing names of user threads running on QuRT with thread list command when stopped at breakpoint

Documentation

Other

  • Enhances the Simulator Exception debugging to provide more info about the QuRT crash using debug_exception.py

5.1.0

Tools

  • Incorporates Hexagon tools release 8.5.13
  • Incorporates Halide tools release 2.5
  • Enhances mini-dm for connection with TCP-based devices
  • Adds error messages to stub files
  • Enables structures with data sequences as their members to be used as arguments in IDL files

Libraries

  • Adds Matrix Multiplication kernel using HMX to QHL Library
  • Adds sparse convolution and Hadamard product of matrices to QHL_HVX Library

Examples

  • Adds FASTRPC_REMOTE_PROCESS_TYPE API in hap_example to query the type of PD running on DSP
  • Improves hap_power usage in hap_example
  • Introduces examples/dsp_capabilities_utils.h to demonstrate how to query remotely the DSP about its supports for features such as HVX, HMX, asynchronous FastRPC, or DSP version
  • Updates Calculator C++ APK for Android 12

Build system

  • Adds add_external_project in CMake helper functions to build a custom library from source and link to the example or project by taking source location and target libname
  • Updates UbuntuARM build files to support Linaro 7.5.0 version tools

5.0.0

Tools

  • Incorporates Hexagon tools release 8.5.10
  • Incorporates Halide tools release 2.4.07
  • Upgrades CMake tools from 3.17.0 to 3.22.2
  • Moves CMake tools from HEXAGON_SDK_ROOT/tools/utils to HEXAGON_SDK_ROOT/tools directory
  • Introduces remote debugger support on Palima target
  • Adds a tool to display a float number in QF and float formats
  • Stability enhancements to mini-dm. Adds option to save messages to a file
  • Updates HexTA and adds Windows support for HexTA
  • Updates sysMonApp to 64-bit variant by default. Moves 32-bit variant to sysMonApp_32Bit

mini-dm

  • Disables logging of internal messages from sensors sub-systems
  • Enhances stability and error-handling capability of QUTS-based mini-dm
  • Notifies the users of device connection/disconnection
  • Adds option to store messages to a file
  • Renames mini-dm_2.0-beta to mini-dm

Note: The older version of mini-dm will be deprecated in future.

Target support

  • Introduces support for Palima and Fillmore

Libraries

  • Adds BLAS L3 function to QHL HVX
  • Adds crc32 function to QHL, to showcase the Hexagon polynomial instruction usage
  • Adds Unsigned PD offload using run_main_on_hexagon
  • Fixes run_main_on_hexagon to not send run_main_on_hexagon specific arguments to user main function

Examples

  • Refactors remote.h
  • Restructures walkthrough scripts.
  • Adds support in walkthrough scripts for building examples using CMake with different build configurations

Other

  • Makes CMake tools installation optional during Hexagon SDK installation
  • Modifies setup_sdk_env script to remove hexagon tools from PATH environment variable
  • Breaks backward compatibility for the walkthrough scripts

4.5.0

Tools

  • Incorporates Hexagon tools release 8.5.08
  • Incorporates Halide tools release 2.4.05
  • Incorporates QuRT release VU_CORE_KERNEL_QURT.04.02.03.07.02
  • Incorporates elfsigner based on sectools version 5.50
  • Introduces remote debugger support on Divar and Fillmore targets
  • Introduces beta version of QUTS-based mini-dm with limited functionality
  • Introduces build_cmake binary replacing the cmake_build scripts from examples
  • Adds a command line tool to display qfloat numbers as decimal numbers
  • Validates scalar before unmarshalling in skel
  • Updates Hexagon Trace Analyzer to 2021-08-27-22-37-5a097e87-external
  • Improvements made to the installer's reliability

Hexagon IDE

  • Adds support for v69 architecture

Target support

  • Introduces support for Waipio and Divar

Libraries

  • Adds lower and upper triangular solve(i.e. forward and back substitution) for qf32 in QHL HVX
  • Fixes accuracy problems in qhl_hvx_log_vhf function

Examples

  • Renames output binary names built with CMake to make them same as that of Make.d
  • Updates calculator_c++_apk to initialise DSP_LIBRARY_PATH for unrooted devices
  • Modifies config.py to config.json in profiling example
  • Modifies benchmark example to link worker_pool library statically
  • Enhances bilateral filter in benchmark example to account for VTCM bank width differences across chipsets
  • Modifies qprintf example to use DCVS V3 by default
  • Modifies qprintf example to support printing scalar registers on ADSP
  • Removes UBWCDMA_LEGACY_DRIVER from ubwcdma example
  • Modifies camera streaming and ubwcdma examples to support -d and -U options
  • Demonstrates FASTRPC_RELATIVE_THREAD_PRIORITY in multithreading example

Build system

  • Fixes interface-name bug in build_idl function
  • Introduces environment variables UBUNTUARM64_TOOLS_DIR and UBUNTUARM32_TOOLS_DIR to enable building both 64-bit and 32-bit UbuntuARM binaries simultaneously from same setup
  • Deprecates use of build tags from CMake build system

Documentation

  • Updates build document with CMake and make.d transition guidelines
  • Describes pros/cons of using static/dynamic linking for Hexagon libraries
  • Documents thread priority level recommendations

Other

  • Adds support for target debugging through command line when multiple devices are connected in ADB mode

Deprecation notice

  • Starting with Lahaina, users of HAP_vtcm_mgr are advised to move to HAP_compute_res API. The HAP_compute_res API provides a better resource sharing framework along with additional features. The legacy HAP_vtcm_mgr API will be deprecated in subsequent releases.

4.4.0

Tools

  • Incorporates Hexagon tools release 8.4.12
  • Incorporates Halide tools release 2.4
  • Incorporates QuRT release VU_CORE_KERNEL_QURT04.01.16.07.02

  • Resolves compilation error with QAIC compiler when /// is used at the end of an interface in IDL file

  • Fixes KW errors and known MISRA issues in QAIC compiler

  • Enables setup of multiple targets for Hexagon-Trace-Analyzer

  • Combines enable_trace.sh and one_time_setup.sh scripts into target_profile_setup.py for HexTA setup
  • Automates generation of HexTA configuration files in run_profilers.py script

  • Introduces Async mode support for target debugging

  • Introduces remote debugger support on Strait

  • Fixes the QHCG tool output Q-format issue in HVX code generation for exp2 function

  • Introduces HVX instruction visualization tool to utils

  • Improvements made to the installer's reliability

Hexagon IDE

  • Simplifies the IDE GUI for new project creation
  • Introduces CMake-based build support for new project creation
  • Adds import project support for CMake- and make.d-based projects

Target support

  • Introduces support for QCS605, ENEL and Strait targets

Libraries

  • Introduces static compilation in Worker pool library
  • Updates to QHL HVX library:
  • Adds BLAS operations for Cholesky decomposition and Matrix transpose for QF32
  • Adds math operations for square root and inverse for QF32
  • Adds benchmarks for modexp and clipping functions
  • Updates IPC header files remote_default.h and AEEStdErr.h
  • Removes FastCV libraries and recommends to use dynamic loading of FastCV library available on the device

Examples

  • Adds CMake-based build support for all examples and libraries with the exception of qfe_library
  • Runs compute examples by default on unsigned PD
  • Adds multi-domains support for QoS in profiling example
  • Updates to HAP example:
  • Replaces HAP power DCVS v2 with DCVS v3 APIs
  • Adds usage of HAP_compute_res_attr_set_release_callback API
  • Introduces support for non-NULL context
  • Fixes calculator_c++ example and adds usage of each function in the example walkthrough
  • Fixes known unsigned PD issue in asyncdspq_example
  • Updates CMakeLists.txt of calculator_c++_apk example
  • Enhances the “gtest” example to use “googletest” framework APIs from Hexagon too
  • Modifies asyncdspq_example, corner_detect and camera_chi to use FastCV APIs by dynamic loading of library on the device
  • Renames output binary names built with CMake to make them same as that of Make.d

Build system

  • Enhances CMake to link pre-built libraries if available
  • Enhances CMake build system to support APK building from Android Studio
  • Introduces ship folder with CMake to save the built binaries

Documentation

  • Documents Async FastRPC APIs
  • Updates remote header file and documentation
  • Updates the benchmark example documentation on the recommended approach to run C++ examples on DSP
  • Updates the corner_detect example documentation to demonstrate the recommended approach to use FastCV library APIs
  • Updates QHL and QHL_HVX documentation describing the naming convention used for APIs

Other

  • Moves Hexagon debugger utils from tools to utils/debugger
  • Moves debug scripts to utils/debugger

4.3.0

Tools

  • Incorporates Hexagon tools release 8.4.11
  • Incorporates Halide tools release 2.3.03
  • Incorporates QuRT release 04.01.09
  • Fixes the boundary error in QHCG tool and error reports generated by tool
  • Introduces new log filtering options to mini-dm
  • Introduces remote debugger support for Kodiak target
  • Fixes stability issue with assembly debugging
  • Enables the support for debugging PD dumps with FRAMEKEY-enabled builds
  • Resolves issues related to target variable command in lldb
  • Resolves the issue of not hitting breakpoint for callback functions
  • Adds -o image search-path add . when debugging examples on simulator
  • Adds googletest framework library for robust unit testing

Target support

  • Introduces support for Kodiak target

Libraries

  • Enhances run_main_on_hexagon to accept executable names other than "run_main_on_hexagon_sim"
  • Refactors remote.h to remote_default.h
  • Introduces getopt_custom library for custom implementation of getopt and getopt_long
  • Adds support for custom stack size of worker threads for worker pool library
  • QHL
    • Adds IEEE f32 <-> IEEE f16 conversion in HVX instructions
    • Updates the qhmath_hvx accuracy and performance reports with qhcg tool fixes
    • Adds support for Vector -> Vector operations for the remaining QHL_HVX math and trigonometric functions: "sqrt", "exp", "log", "pow", "fast_exp", "fast_log", "fast_inverse_sqrt", "floor", "ceil", "round", "trunc"
    • Adds “qhblas_hvx_matrix_matrix_mpy_aqf32”, “qhblas_hvx_matrix_vector_mpy_aqf32”, “qhblas_hvx_qf32_vector_dot_aqf32”, “qhblas_hvx_vector_add_aqf32”, “qhblas_hvx_vector_scaling_aqf32” library functions and their test cases

Examples

  • Runs examples by default on the Unsigned PD
  • Adds additional -U flag for supporting running on Unsigned PD or Signed PD
  • Creates new file rpcperf.h in profiling example
  • Adds support of older tools for runprofilers.py script
  • Fixes SSR/PDR handling code in calculator example
  • Enhances HAP_example to demonstrate the usage of "dmahandle” and “fastrpc mmap”
  • Enhances profiling example to demonstrate the usage of HAP_send_early_signal API
  • Adds gtest example to demonstrate the usage of “googletest” framework

Build system

  • Modularizes CMake build system for better user experience
  • Introduces CMake support for all base SDK and compute addon examples
  • Removes redundancies from example .min files with the introduction of cpu.min
  • Modifies build/cmake/cmake_configure.bash to use os-release instead of lsb_release
  • fixes bug of running simulator multiple times with make hexagonsim

Documentation

  • Updates the cmake documentation as per the new changes and additions
  • Adds the QHL library performance details for Lahaina
  • Adds QAIC user guide in the IDL documentation
  • Adds include directives and code generation information in the IDL documentation

Limitations

  • Unsigned PD for asyncdspq example is not supported for Kona, Saipan, Bitra, QRB5165 and SXR2130

Other

  • Introduces debug_exceptions.py for debugging PD exceptions
  • Introduces stubbed implementation of HAP_setFARFRuntimeLoggingParams for simulator
  • Updates profiling numbers for Lahaina in documentation
  • Adds cmake support to use any custom toolchain for cross compilation
  • Includes utility source files for memory and timing related APIs abstracting the OS-specific information from example source files
  • Enhances setup_sdk_env script to throw error if python, make and QAIC are not installed

4.2.0

Tools

  • Incorporates Hexagon tools release 8.4.09
  • Incorporates Halide tools release 2.3.01
  • Fixes bug with adding line breakpoint in Hexagon IDE
  • Adds IDE support to set breakpoints automatically on all the IDL functions of project being debugged
  • Adds versioning support to QAIC compiler
  • Removes unnecessary GUI options in IDE
  • Fixes bug with writing to a memory block in memory view of IDE
  • Removes SysmonParser (deprecated) and updates the HTML parser (sysmon_parser) with STID and Marker profiling support.
  • Enhances mini-dm to connect to device using usb bus number

Target support

  • Introduces support for Cedros, Mannar, QRB5165 (LE) and SXR2130 targets

Libraries

  • Removes the dspCV library, use worker pool library and HAP_power_APIs instead
  • Adds QFE (Qfloat emulation Library) for emulating qf16/32 formats on x86 using libnative
  • Extends qhl_hvx acos, atan and tanh input range by linear interpolation beyond the existing input range
  • Extends qhl_hvx sinh and cosh input range by exponential approximation for intervals beyond existing input range

Examples

  • Introduces UserDMA example in the compute addon
  • Adds DSP Packet Queue support in benchmark example
  • Adds simulator support for hap_example
  • Adds inlane_gather operation to benchmark example to compare HVX gather performance across targets
  • Adds self-minimum operation to benchmark example to get the minimum value and the index of its first occurrence over a 1D source signal
  • Modifies benchmark gather kernel VTCM size requirement

Build system

  • Adds support for custom build output folder using BUILD_OUTPUT_DIR option
  • Includes Qurt header files and libraries by default
    • Any new example created using 4.2.0 SDK will be a QuRT-based example by default unless the user sets NO_QURT_INC to 1 in the hexagon.min file
    • This change breaks the backward compatibility of audio addon 1.0.x with 4.2.0 SDK, so please use audio addon with version 1.1.x or later when using 4.2.0 SDK

Other

  • Adds new API (HAP_mem_available_stack()) to get the stack size (in bytes) available for current thread
  • Fixes simulator crash with compute_resource_acquire APIs on v65
  • Updates documentation contents

4.1.0

Tools

  • Incorporates Hexagon Tools release 8.4.05
  • Incorporates HALIDE Tools release 2.3
  • Updates mini-dm allowing all level logs from sensors subsystems
  • Introduces PD Dumps for debugging dynamic PDs on the DSP

Target support

  • Introduces support for Bitra and Agatti targets

Libraries

  • Incorporates QuRT release 04.00.18.07.01
  • Introduces Python version 3.7.8
  • Adds Asynchronous DSP Packet Queue (dspqueue) support to the Image DSPQ library
  • Updates Worker pool library to support Static worker pool
  • Removes the QFXP library
  • Adds V65 architecture support to QHL library
  • Updates to QHL HVX library:
    • Fixes overflow issues in floating point power and exponent functions
    • Adds conversion routines for {qf32, qf16} to {int8, uint8, int16, uint16, int32, uint32, qf16, qf32, float, __fp16}
    • Adds 1-D block FIR filter function for qf32, int16 and int32 data formats
    • Renames the library functions to follow the naming convention below:
      • Changes v to a for all QHL HVX functions processing arrays
      • Functions operating on HVX vectors will have v in the name
      • Functions operating on scalar data will not have any qualifier: v or `a’

Build system

  • Adds build support for Hexagon Tools version 8.2.x
    • Note: QuRT-based simulator tests are not supported with 8.2.x tools
  • Cleans the CMake helper function runHexagonSim to support run_main_on_hexagon and standard simulator examples
  • Adds new make.d commands support for dependent libraries in the base SDK and compute add-on
  • Adds support to load custom cosims onto the simulator
  • Removes wrapping of _stack_chk_fail symbol in the build system to avoid undefined PLT symbol _wrap__stack_chk_fail error on target during dynamic loading
  • Fixes parallel build issues with -jx option

Examples

  • Updates calculator_c++_apk allowing unsigned offload to the cDSP
  • Updates capi_v2_gain_cpp as a CPP-based on-target audio example
  • Updates corner_detect and image_dspq to use FastRPC domains
  • Updates benchmark:
    • Adds demonstration of the Compute resource manager API
    • Adds VTCM inlane gather, matrix transpose and vector float 1-D block FIR filter functions
  • Updates profiling:
    • Adds support for sleep latency
    • Enables option to run the example on ADSP
    • Adds runtime test for HVX support on devices
    • Uses run_main_on_hexagon to load and call the shared objects
  • Introduces dspqueue, a new example for Asynchronous DSP Packet Queue API
    • Adds new APIs for persistent FastRPC memory mapping

Documentation

  • Merges qprintf documentation into Hexagon SDK HTML documentation
  • Adds HAP_ps documentation
  • Fixes broken links in documentation
  • Documents approach for capturing the load address of a shared object when running on simulator
  • Adds optimization guidelines for making efficient HVX memory accesses
  • Documents new example for Asynchronous DSP Packet Queue ("dspqueue") API
  • Adds DCVS duty cycling policy under DCVS_v2/v3 DCVS policies

Other

  • Cleans up setup_sdk_env.source script to not throw a warning when 32-bit compatibility libraries are not installed on Ubuntu
  • Updates Compute resource manager API:
    • Register release callback, cached mode for VTCM allocation, application identifier for VTCM partition selection, minimum VTCM size selection
    • Adds HMX as a resource. HMX lock and unlock API
    • Adds VTCM query API with page layout information
    • Adds simulator support
  • Updates UI, command line sysMon profiler and HTML based parser with Lahaina support

4.0.0

Tools

  • Incorporates Hexagon Tools release 8.4.04
  • Incorporates HALIDE Tools release 2.2.06
  • Incorporates mini-dm version 3.2
  • Deprecates support of Hexagon Tools older than 8.3.x
  • Introduces QHCG, a tool generating optimized HVX code for polynomial approximations of arbitrary function
  • Renames testsig.py to signer.py enhancing functionality to sign shared objects and the device
  • Updates run_main_on_hexagon to handle the registered TLS destructors and Exit Handlers in the user module

Target support

  • Introduces support for Lahaina, Kamorta and QRB5165 targets

Libraries

  • Incorporates QuRT release 04.00.09.07
  • Removes support for machine learning and Hexagon NN
    • Refer to the QNN SDK for machine learning support
  • Introduces a new worker pool library and modifies all SDK examples using dspCV library to use the new worker pool library
  • Allows Hexagon SDK clients to directly use rpcmem APIs from FastRPC libraries available on target
  • Adds unit tests and scripts to test, profile all the functions of the QHL and QHL HVX

Build system

  • Introduces simplified make commands
  • Enhances CMake build support to enable target-based compilation and simplified usage
  • Ships prebuilt binaries along with source for SDK libraries to allow the same SDK to be used by multiple users
    • Ships prebuilt binaries only for one variant (ReleaseG or Release) depending on the library
  • Makes dynamic_ optional in the build command string and removes it from the generated folder names
    • All SDK examples are compiled for the dynamic variant by default

Examples

  • Cleans up and introduces new SDK examples
    • Adds profiling example illustrating all techniques available to profile code
    • Consolidates qurt_multithread, qurt_mutexes and qurt_thread_t1 into one example multithreading
    • Adds lpi_example to demonstrate how to build a shared object for LPI and non-LPI mode
    • Adds hap_example to show the usage of system libraries
    • Adds qhl_hvx example to showcase the usage of QHL HVX, which includes Math, DSP and Image processing libraries optimized for HVX.
    • Adds camera_chi example in the compute add-on. This example hooks up any DSP post processing algorithm into camera pipeline
    • Removes benchmark example and renames benchmark_v65 as benchmark in the compute add-on
    • Consolidates calculator_c++ and calculator_c++14 into calculator_c++
    • Consolidates calculator and calculator_multi_domains into calculator
    • Uses FastRPC domains for all base SDK examples
    • Renames cornerApp to corner_detect in the compute add-on
    • Consolidates histogram into benchmark example in the compute add-on
    • Renames calculator_c++_app as calculator_c++_apk and makes it compatible with Android R
    • Removes the examples below (most of which are included in the compute add-on benchmark example)
      • conv3x3a16_v60
      • conv3x3a32_v60
      • dilate3x3_v60
      • dilate5x5_v60
      • downscaleBy2
      • epsilon_v60
      • fast9
      • gaussian7x7
      • sigma3x3_v60
      • sobel3x3_v60
      • rpcperf
      • calculator_multi_legacy

Other

  • First release using Qualcomm Package Manager(QPM)
  • Introduces add-on support
    • Uses QPM's add-on feature to install user-selectable components (for example Audio add-on, Minimal Android-NDK, Full Android-NDK, Python, CMake)
    • Includes compute add-on by default
  • Introduces support for V68
  • Removes support for older architectures v55, v60 and v62
  • Updates SDK directory structure to reflect base SDK and add-on model
    • Moves Audio content to $(HEXAGON_SDK_ROOT)/addons/audio
    • Moves Compute content to $(HEXAGON_SDK_ROOT)/addons/compute
    • Moves QuRT libraries/headers to $(HEXAGON_SDK_ROOT)/rtos
    • Moves FastRPC-related content to $(HEXAGON_SDK_ROOT)/ipc/fastrpc
  • Fixes multiple bugs
  • Re-architects the Hexagon SDK documentation