CN / EN
CN / EN

提问

设计支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

算法库耗时问题 GH3020

624****com

2026-06-08 10:50

您好,咨询如下问题:

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文件

image.png

log如下:


十分感谢回复。

0收藏

0赞成

158***837

汇顶员工
2026-06-12 14:45

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相关的文件。

0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

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