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 forPython 3.11.2
Libraries
- Updates itrace library to version 4.7
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
andCamano
Build system
- Adds build support for OE Linux toolchain
Debugger
- Introduces support for simultaneous debugging of multiple DSPs for Lanai on CLI
Documentation
- Adds a reference page for acronyms across SDK documentation
- Updates Qurt User Guide
Other
- Introduces support for Powershell
5.3.0
Tools
- Incorporates Hexagon tools release
8.6.06
- Introduces remote debugger support on
Clarence
,Waipio LE
andQCS8550
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
andQCS8550
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
- Illustrates stub-skel mismatch check feature in
calculator
example - Adds Android_app, itrace and oemconfig examples
- Enhances QHL_HVX example to demonstrate sparse convolution test
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 andprocess 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
- Adds v73 Hexagon Programmer's Reference Manuals
- Documents stub-skel mismatch check feature added in QAIC
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 from3.17.0
to3.22.2
- Moves
CMake
tools fromHEXAGON_SDK_ROOT/tools/utils
toHEXAGON_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 forHexTA
- 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
andFillmore
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 sendrun_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
andFillmore
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
andDivar
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 initialiseDSP_LIBRARY_PATH
for unrooted devices - Modifies
config.py
toconfig.json
inprofiling
example - Modifies
benchmark
example to linkworker_pool
library statically - Enhances bilateral filter in
benchmark
example to account for VTCM bank width differences across chipsets - Modifies
qprintf
example to useDCVS V3
by default - Modifies
qprintf
example to support printing scalar registers on ADSP - Removes
UBWCDMA_LEGACY_DRIVER
fromubwcdma
example - Modifies
camera streaming
andubwcdma
examples to support -d and -U options - Demonstrates
FASTRPC_RELATIVE_THREAD_PRIORITY
inmultithreading
example
Build system
- Fixes interface-name bug in
build_idl
function
- Introduces environment variables
UBUNTUARM64_TOOLS_DIR
andUBUNTUARM32_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 ofHAP_vtcm_mgr
are advised to move toHAP_compute_res
API. TheHAP_compute_res
API provides a better resource sharing framework along with additional features. The legacyHAP_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
andone_time_setup.sh
scripts intotarget_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
andStrait
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
andclipping
functions - Updates IPC header files
remote_default.h
andAEEStdErr.h
- Removes
FastCV
libraries and recommends to use dynamic loading ofFastCV
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
ofcalculator_c++_apk
example - Enhances the “gtest” example to use “googletest” framework APIs from Hexagon too
- Modifies
asyncdspq_example
,corner_detect
andcamera_chi
to useFastCV
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
andQHL_HVX
documentation describing the naming convention used for APIs
Other
- Moves Hexagon debugger utils from
tools
toutils/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
toremote_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 oflsb_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
toa
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’
- Changes
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
andimage_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
orRelease
) depending on the library
- Ships prebuilt binaries only for one variant (
- 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