当前位置:   article > 正文

君正Zeratul开发(5)——快速启动优化_快启动 快速出图

快启动 快速出图

前言:

  Camera 需要快速启动, 以第一时间抓拍到图像,君正官方给的第一帧图像是200ms,实际应用中时间会长不少。

1.尽快运行主程序

 主程序应该放置在 rootfs 中并第一时间加载运行。 例如在 rcS 中, 在环境变量设置完成之后即可运行主程序
 主程序依赖的动态库要放在 rootfs 中, 例如 libimp.so
 主程序启动后首先初始化视频, 之后可以并行处理其他的业务(比如 P2P、 认证鉴权等等)
 如果对某些配置文件有依赖, 例如 config 分区下的配置文件, 可以使用如下的方式探测等待

2.缩短 rootfs 的加载时间

 缩短加载时间的方式就是尽量优化 rootfs 的大小。 有以下几个方面:
  非启动必须的资源, 尽量放置在 system 分区中, 例如配网音频, 字库文件等
  主程序依赖的动态库, 如果不是启动依赖, 可以放到 system 分区中, 但是要用过dl_open 的方式加载。 例如 libcrypto, 这个库的大小比较大, 只有个别时候才用得到,可以把要的接口简单封装, 然后通过 dl_open 的方式动态调用这些接口。

3.快速启动分辨率和 nrvbs 设置方法

 由于上层与驱动层需要密切配合, 所以, 有些配置信息需要提前配置, 如 sensor
的宽高信息和所配置的 video buffer 个数。

 在实际使用过程中,分辨率越高,启动的时间就会越慢

4.帧率的修改

&emsp由于 T31 中有 riscv, riscv 推荐使用高帧率, 但是实际产品帧率通常为 15fps, 那实际的降帧是怎么操作的呢?
 Riscv 中的帧率由 Sensor 初始化序列决定, 也就是tools/make_tag/sensor_init_setting 文件夹中对应的 Sensor 初始化序列决定。
 在内核期间, ISP 驱动中, 我们提供了一些回调以及 API, 如tx_isp_frame_done_int_hander 回调函数, 该回调函数是硬件产生 frame done 中断之后, 每产生一个中断, 则会回调该函数, count 为 1 开始计数。
 我们可以在该回调函数中来切换帧率, 由于 Sensor 一般配置都是隔帧生效, 所以通常在第一帧的时候设置帧率, 实际在第 3 帧的时候生效。 这样做的目的是前两帧还是高帧率出图, 第 3 帧切到 15fps, 如果存在前两帧图像效果较差的话, 我们可以将其丢弃, 从而提高第一帧图像出图速度。

5.出图时间优化

 内核时间打印可以通过 DEBUG_TTFF();来打印对应的时间, 该时间从上电开始计时。
 部分 sensor 由于帧率达不到很高, risc-v 中统计的帧数不是很多, 在内核默认是等 6 帧, 有可能会出现等的时间较长, 这个时候, 可以将tx-isp-fast.c 文件中的frame_count 值降低

247         timeout = 1000;
248         while(timeout--) {
249             ret = tx_isp_get_riscv_framecount(&frame_count);
250             if(ret < 0) {
251                 printk("Error: %s tx_isp_get_riscv_framecount failed ret:%d\n", __func__, ret);
252                 return ret;
253             }
254 
255             if((frame_count >= 6) && (frame_count != -1))
256                 break;
257 
258             mdelay(1);                                                                                                                                                                
259         }
260 
261         DEBUG_TTFF("wait 8 frame done");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

 内核默认丢帧参数配置的是两帧, 要求是至少丢一帧, 所以在优化出图时间的时候, 可以将丢帧参数改为一帧, 只要图像没有明显异常即可。 这样可以优化一帧的时间。 另外, 上面提到的帧率切换, 帧率切换配合丢帧来操作, 丢弃的帧跑较高帧率,这样可以节省一定时间。



######################2022.08.28######################

该博客将停止更新

新的文章内容和附件工程文件

请到 liwen01 博客首页信息查询

liwen01 2022.08.28 日更新

######################2022.08.28######################

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/485162
推荐阅读
相关标签
  

闽ICP备14008679号