Qualcomm Symphony System Manager SDK使用举例

来源:互联网 发布:java ftp下载文件夹 编辑:程序博客网 时间:2024/06/10 18:44

Qualcomm Symphony System Manager SDK使用举例

        Symphony System Manager是Qualcomm的产品,提供整体的CPU、GPU和DSP功率与性能管理,让程序能够在低功耗、低散热的严格要求下,以稳定的帧数率运行。此SDK为应用程序提供可调用的接口和相应的动态库文件。

        下载和安装

        https://developer.qualcomm.com/download/software

        把下载后的文件libsymphony-1.1.0.deb放在任意目录下,解压:

        #dpkg -x libsymphony-1.1.0.deb symphony-1.1.0

        目录symphony-1.1.0即是我们需要的文件,其主要内容如下:

      

       本文之讲解android环境上的使用,我们只关注arm-linux-androideabi目录。

        使用举例

        1.搭建工程环境

               # mkdir project_symphony

           # cd project_symphony

           # mkdir jni

           # cd jni

           # cp -r <symphony_dir>/opt/Qualcomm/Symphony/1.1.0/arm-linux-androideabi/include ./

           # cp -r <symphony_dir>/opt/Qualcomm/Symphony/1.1.0/arm-linux-androideabi/lib ./

           # vim Application.mk

           内容如下:

APP_STL := gnustl_staticAPP_ABI := armeabi-v7aNDK_TOOLCHAIN_VERSION := 4.9#set the APP_PLATFORM to match your platform version.APP_PLATFORM := android-18
         # vim Android.mk

         内容如下:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)SYMPHONY_VERSION := 1.1.0SYMPHONY_LIB_TYPE := release-cpuinclude $(LOCAL_PATH)/lib/SYMPHONY.mk

       工程目录下的目录文件包括: Android.mk、Application.mk、include和lib;

       2.验证环境

        执行ndk交叉编译(请安装crystax-ndk并配置环境变量)

        # ndk-build

        如下,则环境配置成功:


        3.举例代码

             # vim pfor_helloworld.cc

             源码如下:

<span style="font-size:18px;">#include <vector>#include <symphony/symphony.h>int main(){    // initialize the input vector    std::vector<size_t> vin(1024, 0);    // in-place update of the input vector    // equivalent to the following code    // for (size_t i = 0; i < vin.size(); ++i) {    //   vin[i] = 2 * i;    // }    symphony::pfor_each(size_t(0), vin.size(), [&vin](size_t i) {                        vin[i] = 2 * i;    });    return 0;}</span>
        # vim Android.mk

       添加后的代码如下:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)SYMPHONY_VERSION := 1.1.0SYMPHONY_LIB_TYPE := release-cpuinclude $(LOCAL_PATH)/lib/SYMPHONY.mk################################################include $(CLEAR_VARS)LOCAL_ARM_MODE         := armifeq ($(TARGET_ARCH_ABI), armeabi-v7a)  LOCAL_ARM_NEON       := trueendifLOCAL_MODULE           := pfor_helloworldLOCAL_CPP_FEATURES     := exceptionsLOCAL_SHARED_LIBRARIES := libsymphonyLOCAL_SRC_FILES        := pfor_helloworld.ccinclude $(BUILD_EXECUTABLE)

        4. 编译代码

         # ndk-build

         输出如下,则编译成功:



0 0