前言:

  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");

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



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

该博客将停止更新

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

请到 liwen01 博客首页信息查询

liwen01 2022.08.28 日更新

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

君正Zeratul开发(5)——快速启动优化相关推荐

  1. 君正Zeratul开发(2)——uboot启动分析

    前言    boot启动一般分为两个阶段,君正设备的第一阶段uboot spl 程序没有开源,用户编译的是第二阶段的boot,最后将两个阶段的boot合并到一起,写入到boot分区中去,boot分区如 ...

  2. 君正Zeratul开发(4)——图像效果调试

    前言   目前而言,君正设备的isp 图像效果还是君正的工程师在负责开发调试,如果需要添加一款新的摄像头,一般也是将新摄像头的驱动,从ISVP 版本移植到Zeratul平台.这里主要介绍:(1)摄像头 ...

  3. 君正Zeratul开发(6)——为什么禁止使用system

    (一)前言  在君正Zeratul_T31_开发指南中明确规范,禁止在主程序中使用system 等系统调用接口函数,需要在另外的一个守护进程中去实现system函数的功能.这里有两个问题:1.syst ...

  4. 君正4750开发板使用日记2-Linux环境搭建与内核编译

    为什么80%的码农都做不了架构师?>>>    Linux环境搭建与内核编译 上一篇中把4750开发板与PC的硬件连通了,这一篇记录的是基本的Linux环境的搭建.其实官方文档已经比 ...

  5. 君正x2000开发板usb口读取文件

    ## 标题君正x2000开发板USB口读取文件 (由于word文档无法上传,只复制了文字,操作过程中的图片就不做展示) 开发要求 1.外设的tf卡存储录像抓图文件需要通过USB口在电脑上进行查看.拷贝 ...

  6. Alibaba Cloud Linux 2 LTS 快速启动优化实践

    作者:阿里云操作系统:张世乐   概述/Overview Alibaba Cloud Linux 2(原Aliyun Linux 2,简称Alinux 2)是阿里云操作系统团队基于开源Linux内核4 ...

  7. 嵌入式linux系统快速启动优化的方法

    1.嵌入式设备的启动过程 (1)上电首先执行芯片内部固化的代码,这段代码会将BootLoader读取到芯片的iRAM中执行,初始化内存,并将BootLoader代码搬运到内存中继续运行: (2)Boo ...

  8. 摘自【北京迅为】itop-3568开发板快速启动手册 第一章 硬件连接

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  9. 摘自【北京迅为】itop-3568开发板快速启动手册 第二章 Windows安装串口终端

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

最新文章

  1. GitLab [Webhooks] 实现自动化服务器部署
  2. Expert Shell Scripting
  3. failed to launch: nice -n 0 $HADOOP_HOME/bin/spark-class org.apache.spark.deploy.worker.Worker
  4. Java Spring ClassPathXmlApplicationContext是如何判断容器内包含某个Bean的
  5. JQuery 对表单进行初始化操作
  6. 歌谣致学习编程的你们
  7. java中字符 的含义 有什么作用_Java中字符串常见题之String相关讲解
  8. 大结局:GitHub正式归于微软旗下,新CEO下周一上任“三把火”
  9. 八大编程语言之父:爸爸们节日快乐!
  10. 十六进制转十进制_跟运维组学Python之秒懂十六进制
  11. 【5】线性反馈移位寄存器
  12. c语言编程题作弊技巧,全国计算机二级C语言上机编程题详细分析(1)
  13. struct用法(C语言)
  14. 千兆宽带网接入电脑电脑却只有百兆
  15. Linux利用终端执行命令,linux – 通过/ dev / pts在另一个终端中执行命令
  16. ad9854matlab仿真,AD9854 | 直接数字频率合成器 | 亚德诺(ADI)半导体
  17. 让linux脚本输出声音,即使在linux中没有麦克风,声音输出也会出现在声音输入中...
  18. 教师招聘计算机面试技能测试,教师招聘面试中技能测试指什么
  19. 看完这篇操作系统,和面试官扯皮就没问题了
  20. Verilog流水线CPU设计(超详细)

热门文章

  1. 傻瓜聊天机器人和傻瓜翻译机器人!!
  2. SCLS封面:水稻微生物组时间序列分析(作者解读)
  3. AUTOCAD(三)基础知识
  4. libIconv库实现中文中字符串与GBK、Unicode、UTF-8三种编码互转
  5. UI:实现ScrollView能够下拉刷新效果
  6. 在网页中嵌入mp3的代码
  7. 图片上传经过jwt_如何实现图片上传API
  8. fgo日服封科技_FGO国服B站阴兵刷活动?鬼王血条急速消失,他们才是罪魁祸首...
  9. 解决picgo图片上传失败
  10. Android 系统文件限制小探