Some additional information: Using the Android NDK, it is actually very easy to compile binaries suitable for the various Android variants: Create a file "CMakeLists.txt" inside the BSEC source code directory. Assuming that the BSEC source code is located in some files "bsec1.c bsec2.c", add the following contents to the "CMakeLists.txt": add_library(bsec STATIC bsec1.c bsec2.c) Then, call CMake to generate a makefile: cmake -DCMAKE_TOOLCHAIN_FILE=~/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=19 -DCMAKE_BUILD_TYPE=Release "~/Android/Sdk/ndk-bundle" should be replaced by the NDK installation path. Then, compile by calling "make". Afterwards, the file "libbsec.a" contains an Android-compatible library for armeabi-v7a. As documented by Android, adding the flags "-DANDROID_ARM_MODE=arm" and/or "-DANDROID_ARM_NEON=TRUE" will use the higher-performance "ARM" instruction set, and the NEON FPU instructions, respectively, as mentioned in the previous post. We would like to evaluate using the BME680 and BSEC on an Android-based product, and would be grateful if you could provide Android-compatible binaries. The BSEC Website also advertises Android compatibility.
... View more
Dear Bosch support, I would like to integrate the BSEC library for using an BME680 sensor on an Android platform that uses the "armeabi-v7a" ABI on a Cortex-A7. Apparantly, none of the library binaries (".a" files) included in the download archive are suitable for this platform. Android mandates that all code for this ABI is compiled... By the Clang compiler from the Android NDK package with the "-march=armv7-a" flag to target ARMv7-A processors with the "-mfloat-abi=softfp" flag to pass floating-point data in core registers instead of FPU registers with the "-fPIC" flag to generate position-independant code Additionally, the following alternatives are available: FPU: The "-mfpu=vfpv3-d16" flag to use the VFPv3-D16 floating point unit instructions without NEON (highest compatibility) Alternatively, "-mfpu=neon-vfpv3" to use VFPv3-D32 plus NEON SIMD extensions (highest performance) ARM/Thumb mode: With the "-target thumbv7-none-linux-androideabi -mthumb" flags to generate compact Thumb-2 code Alternatively, with the "-target armv7-none-linux-androideabi -marm" flags to create high-performance ARM code So, the 4 possible variants are: -fpic -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -target thumbv7-none-linux-androideabi -mthumb -fpic -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -target armv7-none-linux-androideabi -marm -fpic -march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv3 -target thumbv7-none-linux-androideabi -mthumb -fpic -march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv3 -target armv7-none-linux-androideabi -marm Ideally, there would be libraries for all four variants, but at least for the first one for maximum compatibility. The "RaspberryPI/PiZero_ArmV6-32bits" variant inside the download archive is almost suitable for Android, but uses "-mfpu=hard" ABI and is therefore incompatible with Android binaries. The Cortex-A7 variant does not support PIC code and isn't compatible either. Could you provide binaries compiled with the mentioned flags? Thank you very much!
... View more