15 May 2017
Open-Q™ 410 Development Kit Android Release 1.4.2
Author: Brad Walker, Senior Software Engineer
As the project leader for the release 1.4.2 on the Open-Q™ 410 Development Kit, I’m very excited to talk about this release. We’ve worked very hard to get this release out the door with new features that our Clients will find beneficial. The main improvements are:
- We improved GPS software support. This feature is very useful for Clients building location aware applications.
- We further reduced the power consumption in low-power suspend mode. If your system ever runs off a battery, the system can now enter an improved low-power state.
- We now offer support for Open Computing Language (OpenCL). If your application is computationally intensive, it could benefit from hardware acceleration, so now you can use the Adreno GPU.
- We added support for additional LCD displays.
I’ll briefly cover each of these in more detail below.
The Snapdragon 410 processor (APQ8016) that powers the Open-Q™ 410 Development Kit has always had hardware support for GPS. Previously we did not provide exposure at the software layer for an application to take advantage of this. As part of the GPS improvements on the Open-Q 410 Development Kit, we now provide all the libraries needed by an Android app to use the GPS functionality. In addition, we also provide an application named garden_app that will allow a user to interact with GPS from the command line.
Below in are screenshots from two of the most commonly used Android apps.
The first app is from
Chartcross and is a very popular GPS testing application.The second app is GPS Test and can be found on the Google Play Store
Figure 1 Chartcross Application
Figure 2 GPS Test Application
We like to use this application in our engineering team because the source code is provided on GitHub (https://github.com/barbeau/gpstest). So if there is a problem with the GPS sub-system (or if you just need some great reference code) this makes debugging easier as the source code is available.
We now provide the application garden_app as part of the distribution. This is a GPS test application supplied by Qualcomm that is useful to interrogate the GPS sub-system from the CLI. A nice feature is the printing of NMEC 0183 strings. Let’s have a look at the output.
Low-power Suspend Mode
Changes have been made to the kernel source to better support low-power mode when the system is being powered via the battery interface. With these enhancements, the Open-Q 410 SOM will consume < 15 mW in low-power mode. When you see messages on the serial console log (debug UART) that looks like the following, the SoC is going into low-power mode.
PM: suspend entry 1970-01-01 00:55:26.929153979 UTC
PM: Syncing filesystems ...
PM: Preparing system for mem sleep
Freezing user space processes ...
Note that full battery support is not in this release (charger, fuel gauge, etc). Contact email@example.com for more information if you need full battery support in your Open-Q 410 solution.
New display types
We now offer support for OSD displays in additional to Truly displays.
In this release, we now provide the native OpenCL 1.1 libraries. These libraries provide all the functionality needed by an Android app to take advantage of the Adreno GPU.
The OpenCL-Z Android app is a commonly used to test for levels of OpenCL support. In addition, the app will also provide a baseline of performance benchmarks. Here is a screenshot from the OpenCL-Z app.
Figure 3 OpenCL-Z Android app.
The EMBEDDED_PROFILE means there will be some differences from the full OpenCL specification (as of OpenCL 1.1).
The main differences are enumerated below:
- 64-bit integer support is optional.
- Support for 3D images is optional.
- Support for 2D image array writes is optional.
- There are some limitations on the available channel data types for images and image arrays.
- There are limitations on the sampler addressing modes available to images and image arrays.
- There are some floating-point rounding changes that you may need to take into account.
- Floating-point addition, subtraction, and multiplication will always be correctly rounded, other operations such as division and square roots have varying accuracies. There are tons of other floating-point things to watch out for as well.
- Built-in atomic functions as defined in section 6.11.11 are optional.
- Conversions between integer data types and floating point integers are limited in precision (but there are exceptions).
In short, the main differences here are in floating-point accuracy. For additional details about these limitations please refer to the OpenCL 1.1 specification.
A few performance numbers are always helpful to get a basic baseline. The following screenshot from OpenCL-Z show some performance numbers for our Open-Q 410 Development Kit.
Figure 4 More Results
In summary, we hope our Clients find these new Open-Q™ 410 Development Kit features useful.
Stay tuned. We have more coming!
Author: Brad Walker is a Senior Software Engineer at Intrinsyc in Boulder, CO. He has over 10 years’ experience working on embedded computing problems using Linux using different processor families. He enjoys working on difficult problems that span the interface between software & hardware.