If you’re interested in DSP customization, then you’ve already convinced yourself of the advantages that heterogeneous computing can bring to your application. A few days ago I posted about three new features in Hexagon SDK 2.0: Qualcomm® Snapdragon™ 810 support, mDSP offload and dynamic tuning. In this post I’ll focus on a few more features that will help take you to where we think heterogeneous computing and software development are headed:
- LLVM compiler
- Code signing
1. LLVM Compiler
Hexagon is one of the first digital signal processors to support code generation using a low-level virtual machine (LLVM) compiler, and in this release of the SDK we’re expanding its accessibility beyond OEMs to developers.
The LLVM compiler is part of the effort by Qualcomm Technologies, Inc. to develop a simpler but more powerful code development approach for mobile, with more integrated tools to program the heterogeneous Snapdragon platform. Supporting a common, advanced compiler technology across our CPU, GPU and DSPs in Snapdragon is part of a strong roadmap for performance, code size and features. LLVM is supported by mobile software leaders in the iOS and Android environments.
Our Hexagon LLVM compiler converts high-level-language code into Hexagon assembly code when the back end takes the intermediate language and generates Hexagon-specific assembly code.
The result is more flexible than a monolithic compiler because it decouples the compiler‘s front-end language support from the processor-specific, back-end target code generation. That way, the front-end compiler work can benefit all processors for that language, while the back-end, processor-specific code generator team can incorporate processor-specific optimizations.
The LLVM compiler doesn’t change functionality in the SDK or introduce new features. In fact, if you’re already developing on Hexagon DSP, it will likely not have much impact other than options and settings. In the Hexagon SDK, we’re incorporating the LLVM-based C compiler we’ve been perfecting for the last decade as we move all code environments to a common tool set. We’ve used the same LLVM compiler on Hexagon for years in our production LTE modems. It’s the next planned step in our roadmap to extend the compiler to the application programming environment.
Audio developers, take note: Hexagon SDK 2.0 introduces a unified audio API called CAPI_V2 to the Hexagon SDK, simplifying audio feature development while adding core capabilities and control.
The SDK provides a common audio processing interface for wrapping the encoders, decoders and audio processing modules you want to run on the DSP. Here are some of the CAPI_V2 improvements you’ll find in Hexagon SDK 2.0:
CAPI_V2 modules can raise events to the client to inform the client of updates to the internal state, such as a change in parameters that results in a module change. This way, the service code no longer needs to poll for changes with every call to set parameters.
CAPI_V2 allows modules to dynamically disable themselves while processing data, instead of only after a parameter change. Modules can now smoothly ramp down their effect, for example, and then disable themselves.
CAPI_V2 has removed the need to implement a function in order to get its input requirements, which simplifies the logic and the buffering model.
We expect that this API will be extended to voice uses cases in the future, further streamlining the development process.
3. Code Signing
Finally, code signing is the feature to authenticate the execution of dynamic code modules on commercial platforms. It paves the way to a simple integration process with the OEM's assurance of the validity of the dynamic code modules that could be deployed on a mobile product.
Before loading your code module into a commercial build, the device manufacturer must authorize the module for execution on their product. Integration is simpler, with a secure and reliable feature deployment strategy.
In Hexagon SDK 2.0 – commercial tools release only – a manufacturer has the option of obtaining a Code Authentication Signing Service Key for authenticating code modules.
Keep in mind that this capability is part of the commercial tools release. The evaluation version of Hexagon SDK 2.0 lets you generate a test signature that you can use on a specific DragonBoard™ or Mobile Development Platform (MDP) platforms, check with the manufacturer for support.
We’ve kept the development path the same while streamlining the commercialization path.
If you’re not yet a Hexagon developer, find out more about the Hexagon SDK. Get in touch with us to learn more about building new revenue streams through DSP customization.