Hexagon DSP系列记录(三)——DSP工作模式设置

Remote file system

The Remote File System is used by the loader on the Hexagon DSP to read shared object files. The shared object files are stored on the HLOS’s file system.
通过编译生成的DSP动态库有两种动态加载方式

  1. within a FastRPC invocation
    即使用rpcmem_xxx接口的方式,该方式底层依赖libadsprpc.so,默认查找路径 /vendor/lib/rfsa/dsp;/vendor/dsp,可以使用DSP_LIBRARY_PATH人为指定查找路径。
  2. outside of a FastRPC invocation
    For non-rpc started threads (calling dlopen from static DSP code), a daemon (/vendor/bin/adsprpcd) will provide the context for requests back to the Android environment. Audio modules are loaded this way.(说是在Audio modules里头有用到,但我没找到怎么用的)

DSP DCVS(dynamic clock voltage scaling)

看这几个单词就感觉是性能功耗相关
sm8150支持DCVS v2,sm8250支持DCVS v3,
接口对应HAP_power_xxxx
支持performance/owersave mode等模式,或不指定。
具体设置方法参考:
file:///E:/Qualcomm/Hexagon_SDK/3.5.2/docs/Hap_power_set_dcvs_2.html
PERFORMANCE_MODE:

//Vote

/* Populate request structure */
int retVal;
HAP_power_request_t request;
memset(&request, 0, sizeof(HAP_power_request_t)); //Important to clear the structure if only selected fields are updated.
request.type = HAP_power_set_DCVS_v2;
request.dcvs_v2.dcvs_enable = TRUE;
request.dcvs_v2.dcvs_option = HAP_DCVS_V2_PERFORMANCE_MODE;
request.dcvs_v2.set_latency = TRUE;
request.dcvs_v2.latency = 1000;
request.dcvs_v2.set_dcvs_params = TRUE;
request.dcvs_v2.dcvs_params.min_corner = HAP_DCVS_VCORNER_SVS;
request.dcvs_v2.dcvs_params.max_corner = HAP_DCVS_VCORNER_TURBO;
request.dcvs_v2.dcvs_params.target_corner = HAP_DCVS_VCORNER_NOM;
/* Call HAP_power_set API with the updated request structure */
retVal = HAP_power_set(NULL, &request);
...
/* 
 * Processing block 
 */
...
//To remove the vote keeping DCVS enabled.
memset(&request, 0, sizeof(HAP_power_request_t)); //Remove all votes.
request.type = HAP_power_set_DCVS_v2;
request.dcvs_v2.dcvs_enable = TRUE;
request.dcvs_v2.dcvs_option = HAP_DCVS_V2_PERFORMANCE_MODE; //Enable DCVS
retVal = HAP_power_set(NULL, &request);

POWER_SAVER_MODE:

//Vote

/* Populate request structure with dcvs_v2 request*/
int retVal;
HAP_power_request_t request;
memset(&request, 0, sizeof(HAP_power_request_t)); //Important to clear the structure if only selected fields are updated.
request.type = HAP_power_set_DCVS_v2;
request.dcvs_v2.dcvs_enable = TRUE;
request.dcvs_v2.dcvs_option = HAP_DCVS_V2_POWER_SAVER_MODE;
request.dcvs_v2.set_dcvs_params = TRUE;
request.dcvs_v2.dcvs_params.min_corner = HAP_DCVS_VCORNER_SVS;
request.dcvs_v2.dcvs_params.max_corner = HAP_DCVS_VCORNER_TURBO;
request.dcvs_v2.dcvs_params.target_corner = HAP_DCVS_VCORNER_DISABLE; //no vote
/* Call HAP_power_set API with the updated request structure */
retVal = HAP_power_set(NULL, &request);
...
/* 
 * Processing block 
 */
...
//To remove the dcvs_v2 vote keeping DCVS enabled.
memset(&request, 0, sizeof(HAP_power_request_t)); //Remove all votes.
request.type = HAP_power_set_DCVS_v2;
request.dcvs_v2.dcvs_enable = TRUE;
request.dcvs_v2.dcvs_option = HAP_DCVS_V2_POWER_SAVER_MODE; //Enable DCVS
retVal = HAP_power_set(NULL, &request);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值