Skip to content

Release notes

6.2.0

Libraries

  • Updates itrace library to version 8.4 with the following new main features:
    • Adds LE support for GCC 11.3.
    • Adds safeguard to prevent sysMon from taking over control of PMU configurations.
    • Introduces support for naming software threads and identifying their parent thread ID.
    • Deprecates itrace_add_event_set API.
    • Changes default location for itrace reports.
    • Changes log messages alignment, which caused log wraparound to fail occasionally.
    • Introduces ITRACE_ALL_OUTPUT_TYPES macro to generate automatically all types of itrace reports.
    • Removes an extra comma in some entries of the JSON itrace reports.
  • Updates QHL_HVX library with the following enhancements:
    • Optimizes the float kernels to exploit the 40-bit extended qfloat architecture on hardware, for better output precision on v79 and beyond.
    • Enhances CMakeLists.txt to support compilation of kernels with the new extended QFLOAT feature for DSP_ARCH >= v79.
    • Removes support for half-float and kernels of type _qf16/_qf32 for DSP_ARCH >= v79 due to accuracy mismatches with legacy code.

Examples

  • Updates the itrace example:
    • Simplifies the itrace example structure by splitting it into basic and advanced sections.
    • Improves itrace example documentation by itemizing each itrace feature being illustrated.
    • Enhances the validation script and walkthrough to illustrate and validate more itrace features.
  • Adds LE support to itrace example for GCC 11.3.
  • Removes the test case for qhblas_hvx_vector_add_ahf() from the QHL_HVX example, as legacy half-float kernels are not supported for DSP_ARCH >= v79.
  • Adds HVX-based full IEEE FP32 compliant block FIR Filter to the benchmark example for DSP_ARCH >= v79.

Target support

  • Introduces support for Eliza and Bonito.

Build System

  • Adds the necessary compiler flags to support Extended QFLOAT feature for DSP_ARCH=v79.

Documentation

6.1.0

Tools

  • Incorporates Hexagon tools release 8.8.06.
  • Incorporates QuRT release VU_CORE_KERNEL_QURT.04.04.15.05.01.
  • Introduces .NET-based SDK Dependency Downloader.
  • Removes the libusb executables from the tools for windows. QUD is now available in QPM3 for installation.
  • Introduces bin_utils.py a utility script for binary analysis that ship with Hexagon DSP toolchain.
  • Introduces qmemcheck.py a memory debugging tool for NSP.

Libraries

  • Updates itrace library to version 7.6 with the following new main features:
    • Adds support for V79.
    • Adds slave mode allowing to monitor PMU events registered by another process.
    • Decreases minimum sampling periods.
    • Supports monitoring variables in C++.
    • Support numpy-like output type.
    • Reduces number of NSP binaries being shipped.
    • Adds static flavor of itrace.
    • Adds typedefs to each itrace API for use as function pointers.
    • Fixes remote support of itrace.
    • Enables user to override LWI behavior via itrace_lwi_with_events.h.
  • Updates QHL library with the following enhancements:
    • Adds support to run kernels of specific sub-group (qhmath, qhblas, qhcomplex and others) using the run_tests_dsp.py script.
    • Ensures proper error handling in the execution of kernels using run_tests_dsp.py script.
    • Fixes qhdsp_fir_af_asm_opt.S to have basic sanity checks and return proper values.
    • Updates QHL [documentation] (../doxygen/qhl/index.html){target=_blank}.
  • Updates QHL_HVX library with the following enhancements:
    • Adds support to run kernels of specific sub-group (qhmath_hvx, qhblas_hvx and others) using the run_tests_dsp_hvx.py script.
    • Ensures proper error handling in the execution of kernels using run_tests_dsp_hvx.py script.
    • Adds optimized implementation for complex FFT (~6-7x speedup) in qhdsp_hvx_c1dfft_af_opt.S.
    • Corrects qhblas_hvx_back_substitution_af() to not have explicit zero-initialization for output.
    • Updates QHL_HVX documentation.

Examples

  • Adds Kotlin support to Android app APK.
  • Adds dspqueue to profiling example.
  • Adds -T Custom and -AR option to the Walkthrough scripts to run examples with custom architecture on target.
  • Adds ubwc_d example with on-target support in the compute addon.
  • Removes async support in benchmark example for Pakala target.

Target support

  • Introduces support for Pakala, Niobe and other v79 architectures.

Build system

  • Adds support to treat QURT include paths as SYSTEM in CMake build system.

Documentation

6.0.0

Tools

  • Incorporates Hexagon tools release 8.7.08.
  • Upgrades CMake tools from 3.22.2 to 3.28.3.
  • Incorporates QuRT release VU_CORE_KERNEL_QURT.04.04.08.05.01.
  • Updates HexTA to 2024_02_24_03_26_a000cb98.
  • Unifies QAIC binary for different Ubuntu versions.

Libraries

  • Deprecates rpcmem library. Deprecates APIs rpcmem_init and rpcmem_deinit as well.
  • Removes asyncdspq library. DSP Packet Queue library serves as the replacement.
  • Removes qhl_hmx library.
  • Updates itrace library to version 6.0 with the following new main features:
    • itrace_monitor executable and script to monitor events from the command line.
    • remote control of itrace via UDP messages
    • support for multiple itrace instances to co-exist and/or work alongside sysMon

Examples

  • Removes support for asyncdspq_example.
  • Removes support for qhl_hmx example.
  • Removes usage of asyncdspq library in image_dspq example from the compute add-on.
  • Provides EXE_PATH environment variable to run command in walkthrough scripts.
  • Downloads FlameGraph (if not there already), as part of itrace_example flamegraph_post_process.py script.

Target support

  • Removes support for the following targets (DSP Arch < v68 and few other targets):
    • Divar
    • Lahaina
    • Cedros
    • Kodiak
    • Clarence
    • Bitra
    • Agatti
    • Strait
    • SXR2130P
    • QCS403
    • QCS405
    • QCS605
    • QCS610
    • QRB5165
    • ENEL
    • SW5100

Build system

  • Deprecates usage of link_options function in CMake build system. Provides alternate function set_common_compile_and_link_options which can be used to set up target compile definitions along with linker flags.
  • Adds support for Presets in CMake build system.
  • To build non QURT based projects in CMake build system, it is expected to explicitly pass NO_QURT_INC=1 flag through build commands.

Documentation

  • Updates build, load and run instructions for LE targets in calculator.
  • Merges system_libraries and hexagon_libraries documentation pages into libraries page.

Other

  • QPM3 now supports installation and uninstallation of Hexagon SDK.
  • Enhances dry run (-DR) option in common_walkthrough to display the commands to be executed even in the absence of a target.

5.5.0

Tools

  • Incorporates Hexagon tools release 8.7.06.
  • Improvises the signer script to error out when no device is connected.
  • Adds support to signer script for pushing testsig in custom HLOS directory.

Libraries

  • Updates itrace library to version 5.3.
  • Adds support to qhdsp_fir_af API in qhl Library for odd input size and any arbitary tap length.
  • Updates the datatypes for real FFT in QHL Library to take float input type and returns complex float type.
  • Adds subtraction function to QHL HVX library for float, half float, int32, int8, int16, and QFloat32 data types.

Examples

  • Introduces support for QURT based compilation of calculator example using cmake.
  • Reorganizes folder structure for itrace_results based on the different outputs, i.e., json, csv, gprof and flamegraph.
  • Fixes itrace_example cmake compilation on windows.

Target support

  • Introduces support for Palawan and QCM6490.

Build system

  • Adds _DEBUG macro as part of compilation for Debug flavor in cmake.
  • Adds build flag to not wrap the allocate APIs.

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