624****com
您好,咨询如下问题:
V4300版本,使用GH3020。MCU:CORTEX-M33 120Mhz,FIFO water line配置的是350,使用iic 400k通信
Q1: 使用EXCLUSIVE算法库,只计算心率,测量Gh3x2xDemoInterruptProcess耗时,有254ms和315ms交替出现,与驱动库资源统计耗时差距较大,可能是什么原因?
其他库使用如下:

common dsp使用:dsp_pv_v1.3.0
common dl使用:dlCom_pre2exc_pv_v1.3.0
libgh3x2x使用:1-drv_lib\M33_gcc_hard\_build\M33_gcc_hard\libgh3x2x_drv_cortexM33_band_gcc_hard_common.a
按照接口Gh3x2xDemoInterruptProcess里的每个step计时,根据log看,每个step循环两次,信息如下:

Q2: 想要效率与准确性兼顾,4个版本的算法库,应该如何选择?
Q3:路径\GH3X2X_V41xx版本算法驱动以及移植文档\V4300版本驱动库以及移植指南\1-drv_lib-4300.7z\1-drv_lib\M33_gcc_10.2.1_hard\_build\M33_gcc_10.2.1_hard,对应的库文件不是hard编译选项,导致链接失败。是否与版本不对应导致的耗时较久问题?
Q4:更改成PREMIUM算法库,出现初始化失败的情况。
修改如下:
dsp库和hr库使用对应版本,修改算法config文件


log如下:

十分感谢回复。
158***837

Q1: 使用EXCLUSIVE算法库,只计算心率,测量Gh3x2xDemoInterruptProcess耗时,有254ms和315ms交替出现,与驱动库资源统计耗时差距较大,可能是什么原因?
你这里设置的水线是350,满足水线后产生水线中断,那么FIFO中的数据个数超过350,默认SDK的宏设置是单次读取不超过200个数据,如果超过200个数据,则会分多次读取,你这里350会分成2次读取。
若把gh_demo_config.h中以下宏设置大一点,可以一次性读取出所有数据:
#define __GH3X2X_RAWDATA_BUFFER_SIZE__ (200 * 4) /**< rawdata buffer size in byte */
Gh3x2xDemoInterruptProcess这里接口是包含了驱动读数据以及算法运算的接口,算法统计耗时只是看算法接口执行的时长如:
/* call algorithm, update result */
goodix_hba_ret ret = goodix_hba_calc(&stRawdata, &stResult);
另外,算法是每25帧数(1s)才会执行一次比较大的计算,故每次中断的耗时会有差异。
Q2: 想要效率与准确性兼顾,4个版本的算法库,应该如何选择?
性能与耗时排序如下:exclusive > premium > medium > basic
Q3:路径\GH3X2X_V41xx版本算法驱动以及移植文档\V4300版本驱动库以及移植指南\1-drv_lib-4300.7z\1-drv_lib\M33_gcc_10.2.1_hard\_build\M33_gcc_10.2.1_hard,对应的库文件不是hard编译选项,导致链接失败。是否与版本不对应导致的耗时较久问题?
如果使用是软硬浮点不一致,软浮点会耗时长一点。
Q4:更改成PREMIUM算法库,出现初始化失败的情况。
注意对于的宏也需要设置成PREMIUM,以及对于PREMIUM相关的文件。


打开微信,使用“扫一扫”即可关注