展锐平台的手机camera 系统开发过程

news2024/9/20 6:24:31

展锐公司有自己的isp 图像处理引擎,从2012 年底就开始在智能手机上部署应用。最初的时候就几个人做一款isp的从hal 到kernel 驱动的完整软件系统,分工不是很明确,基本是谁擅长哪些就搞哪些,除了架构和编码实现之外,另外还要解决各种客户问题,验证芯片等等,工作量非常之大。

后续随着分工的精细,部门的扩展,各种模块分层迭代和维护越来越明确和专业。本人最后在展锐的时候,基本上分成内核驱动,hal驱动,sensor 和mipi 驱动,tuning效果,3A 算法,效果算法,功耗带宽,isp工具,总体架构这样的团组划分。每一款手机芯片都是按照这样的分类来集体参与完成了。

每一款芯片从评估定案到最终的平台开发完成,都是一个比较耗时的过程。下面详细介绍下一款芯片项目camera系统的周期和阶段内容。

评估定案

评估定案基本上需要半年的时间,这期间asic 和总体架构部门会综合市场各家的手机特点需求,行业对isp的预期需求,camera团组内部基于前几款芯片使用实现上的痛点和优改需求,逐步迭代出一款比较准确的芯片规格出来。
芯片规格在定案后期,需要各个团队来参与讨论,设计是否满足需求,验证case需要哪些,工期如何安排,进行一系列的交流和宣导。这期间开发人员都能拿到最初的规格书,同步开始学习,预先安排后期的验证和集成了。

芯片验证

项目首先开展的是芯片的验证,asic 会在整体的芯片基础上,保留最基本的AP的CPU 子系统,加上最新的isp 子系统,扣出生成早期是在FPGA 44b0,后来是在稳定的HAPS 系统上来验证camera 的除了功耗,带宽性能的各项基本功能的bitfile出来。
验证的软件 是在没有os的小系统上展开,使用纯粹的小code,接入帧率降的足够低的sensor配置,验证各通路和各个通路模块依次打开,不同组合,在典型配置的情形下的图像输出状况。一般来说,首先是offline的验证,也就是从DDR 输入到DDR 输出,这个最容易比较和确认。然后是senor没打通情形下 使用test pattern 这类内部预定的格式图样进行验证,最后是真实的sensor 接入的online 验证。
小code 也有专门的分支管理,基本上沿用之前芯片项目上的小code,芯片变化部分做额外的修改处理,框架保持不变,而且寄存器操作的code 可以复制到安卓等的内核驱动中去,减少了后续额外的工作量,这样对后续的项目和人员的稳定非常友好,验证过一款芯片以后,基本上后续的芯片项目都能迅速上手。
完整的验证过程需要和sensor 厂商和asic 部门经常做交互沟通,在摄像头出帧和isp 输出不达预期的各种情形下反复的交互。这个小code 验证在早期的芯片项目上需要花费2人2个多月的时间,最新的项目上应该有3~4人,至少3月的投入,这部分工作由内核驱动驱动组来承担完成。

集成到安卓

芯片验证完成,这时候asic 这边在送样到台积电,中芯国际这些厂商之前,还有其他的工作量,基本上有2~3月这样的时间,这期间平台部门在综合可运行安卓大系统bit的FPGA或者HAPS 上跑安卓系统,在安卓系统起来之后各个部门可以运行自己的模块,比如camera 系统,也是在这时候完整的搭建起来。
在安卓系统在FPGA或者HAPS 上平台部门运行起来之后,camera 这边需要在以前最接近的芯片安卓项目的基础上做个移植,将完整的从HAL到kernel的code porting到安卓分支上,去除电源管理和clk等,这样才能在安卓系统上适配,但是安卓系统过于庞大,在FPGA或者HAPS 运行效率过于低下,一次开机运行到安卓界面至少需要2个小时,中间如果修改没有致命的宕机问题,可以使用adb 来反复装载调试,但是一旦宕机,这重启运行的时间成本比较高昂。
展锐在2013年后开始了minicamera 这种简易化开发,就是仅需要linux 在FPGA或者HAPS起来,在输出log的串口和关联sensor的i2c 驱动可用的情形下,就可以通过剪裁后的安卓camera系统,也就是minicamer 这种,来进行高效的大系统camera 集成,等到这种调试完毕,在安卓上只要切换下被开关屏蔽的部分,就能转入完整安卓系统的运行。这样minicamera 完成的同时,安卓系统也宣告基本搭建完成。
minicamera的构建原理起初是在HAL 层之上,增加一个main.c 文件,模仿cameraserver 调用HAL的打开关闭sensor后预览拍照录像流程,生成单独的elf 文件,来实现这些基本流程的运行,从而在简单的linux上来实现调式。后续是做在了sprd_oem之上,撇开了HAL的模块。具体可以参考 展锐平台手机camera 软硬件架构 这个框架图。
这里需要串口来输出kernel 和 hal 驱动运行中的log,有时还需要另外一个串口来建立gdb 链接来调试HAL 层这部分的流程code,还需要调试器等技能配合来查看isp 硬件系统的寄存器和iommu 页表等。
minicamera的搭建和集成一般花费kernel 驱动组 1个人1个多月的时间,基本上在安卓大系统上验证了整体的预览拍照录像,还有tuning需要的raw 拍照流程,这样搭建好了关于此款芯片安卓上实现架构。和小code验证一样,唯一没有用到的就是供电,clk 这类。这样验证完毕后,安卓大系统上asic 关于芯片的设计是完全基本可用,没有大的方向上的问题了。

芯片bringup

第一批芯片回来之后,在大系统上配置好clk,供电部分code,或者搞成clk 或者eb全开方式,使用上节**“ 集成到安卓”**同样的流程,一般花费不到1周,就能在安卓上去点亮sensor,预览到实时图像。证明完整的系统是能初步工作了,这个还是kernel 驱动组单个人能完成的事情。

芯片回片的同时,也会另外安排小code 验证的人员,加上最高的频率,正常的sensor帧率,可配置的供电,重新对在FPGA或则和HAPS 的验证case 进行验证。有时还需要对各种额外发现的case 进行验证,这部分在芯片上非常快,不会像在**“芯片验证”**这么拖沓冗长了。

基本功能走通

第一步告成之后,kernel 驱动组会增加投入人力,依次把基本的预览,拍照,录像,raw 拍照等基本功能快速都走通。这样后续的HAL,tuning效果,isp工具等也能参与进来,进行后续的全面展开。
一般这些HAL,tuning效果,isp工具的基本框架在** 集成到安卓**阶段都已经完成,在当前阶段都能快速的完成。
这个过程在内部被称为TR0 的过程。

芯片全部camera功能展开

内核驱动组只对基本功能的流程比较专业,对于各种新增或者修改的效果算法,支持流程等的模块需要其他的团队来一起配合展开实现了。把所有的功能和特征都完成需要涉及到的全部团队抽人来完成,这个阶段是整个camera 软件部门开始繁忙的时候,一般要花费整个camera 部门至少3个多月的时间。
这个过程在内部被称为TR1 的过程。

稳定

最后一步就是整个系统的功能稳定,达到量产交付的标准了,要过相应的各项认证等等。这些问题又要花费整个camera 部门至少有半年多的时间。
这个过程在内部被称为TR2 的过程。

在这里插入图片描述

一款芯片,总的这样算下来,至少需要1年8个多月的时间,如果加上中间的流片等待,比如芯片验证和集成到安卓之间的安卓bringup,集成到安卓到回片这段时间的等待, 一般是2年这样的周期,才能走完从预研评估到稳定量产这样的过程。这是一项非常耗人耗时的高技术高成本投入,非常考验研发公司整体的智慧决策和执行能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2148246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flask项目入门和视图

1、第一个项目的结构 以示例代码中的入口文件app.py为例子 (1)引入Flask以及创建Flask对象 from flask import Flask app Flask(__name__)(2) 路由route 视图函数 app.route(/index/) def hello_world():# 响应:…

超详细PS2019安装教程与安装步骤图文解析!保姆级教程!(附赠PS下载地址)

步骤1:下载Adobe Photoshop PS CC 2023下载链接:https://pan.quark.cn/s/f997e116f327 下载完成后,解压文件到当前文件夹(随便用什么解压软件都行,现在解压软件都是免费的,没有的到360官网下载360压缩&am…

开源RK3588 AI Module7,并与Jetson Nano生态兼容的低功耗AI模块

RK3588 AI Module7 搭载瑞芯微 RK3588,提供强大的 64 位八核处理器,最高时钟速度为 2.4 GHz,6 TOPS NPU,并支持高达 32 GB 的内存。它与 Nvidia 的 Jetson Nano 接口兼容,具有升级和改进的 PCIe 连接。由于该模块的多功…

Photoshop 2020安装教程

软件介绍 Adobe Photoshop,简称“PS”,是美国Adobe公司旗下最为出名的图像处理软件系列之一。ps 2021新增一键换天空,AI只能滤镜,新增内置的画笔工具极为丰富,成千上万的精致像素、动态和矢量画笔可以满足你的各种绘图…

【Qt | QAction】Qt 的 QAction 类介绍

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

基于深度学习的手势识别算法(论文复现)

基于深度学习的手势识别算法(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 基于深度学习的手势识别算法(论文复现)概述算法原理核心逻辑效果演示使用方式 概述 本文基于论文 Simple Baselines for Human Pose Es…

在WPF中自定义控件时如何选择基类

在WPF中需要自定义控件,首要要选择需要继承的基类 FrameworkElement 这是常用的最低级的基类。通常,只有当希望重写OnRender()方法并使用DrawingContext从头绘制内容时,才会继承该类。 Control 当从头开始创建控件时,这是最常用…

茴香豆:企业级知识问答工具实践闯关任务

基础任务 在 InternStudio 中利用 Internlm2-7b 搭建标准版茴香豆知识助手,并使用 Gradio 界面完成 2 轮问答(问题不可与教程重复,作业截图需包括 gradio 界面问题和茴香豆回答)。知识库可根据根据自己工作、学习或感兴趣的内容调…

pytorch学习笔记一:作用、安装和基本使用方法、自动求导机制、自制线性回归模型、常见tensor格式、hub模块介绍

文章目录 一、安装二、基本使用方法①创建一个矩阵②获得随机值③初始化全零矩阵④直接传入数据⑤构建矩阵,然后随机元素值⑥展示矩阵大小⑦矩阵计算8、取索引9、view操作:改变矩阵维度10、与numpy的协同操作 三、自动求导机制1)定义tensor成…

【error】The minimum required version for Powerlevel10k is 5.1

文章目录 一、背景二、原因三、解决1、安装 ZSH 最新版本2、效果3、下载了还是显示 ZSH 版本为 5.0.2 怎么办 一、背景 安装 ZSH 主题 Powerlevel10k 时报错: You are using ZSH version 5.0.2. The minimum required version for Powerlevel10k is 5.1. Type ‘ec…

ppt一键生成免费版软件有哪些?如何高效生成论文答辩?

答辩经验丰富的人都知道,制作论文答辩ppt是一项既繁琐又耗时的工作。 我们需要从数万字的论文中提炼关键点,梳理内容的逻辑关系,然后进行细致的排版和美化,最后还要进行反复的检查和试讲。整个过程不仅耗费时间,而且需…

MVP 最简可行产品

MVP(最小可行产品)是一种产品开发策略,其主要目的是用最少的时间和资源,开发一个包含最基本必要功能的产品。这样做的目的是能够以最小的成本进入市场,获取用户反馈,再根据反馈逐步优化产品。 MVP是什么 …

1网络安全的基本概念

文章目录 网络安全的基本概念可以总结为以下几个方面: 网络安全的需求: 信息安全的重要性:信息安全是计算机、通信、物理、数学等领域的交叉学科,对于社会的发展至关重要。信息安全的目标:主要包括保密性、完整性、可用…

C/S架构与B/S架构的适用场景分析

C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。 一、C/S架构的适用场景 1、高性能与交互性要求高的应用&…

闯关leetcode——58. Length of Last Word

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/length-of-last-word/description/ 内容 Given a string s consisting of words and spaces, return the length of the last word in the string. A word is a maximal substring consisting of…

docker从容器提取镜像并上传至dockerhub

一、使用commit从容器中提取镜像 例如 //docker commit 容器名 想要创建的镜像名:版本号 docker commit epsilon_planner epsilon_planner:latest导出完成后镜像如图所示 二、登陆dockerhub并创建仓库 登陆dockerhub,点击Create repository创建仓库&#xff0c…

小程序体验版无法正常请求接口,开启 调试可以正常请求

在本地开发工具可以正常访问小程序,上传代码后打开体验版,界面无法请求接口,手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码&#xf…

北斗盒子TD20——水上作业的安全防线,落水报警守护生命

在广阔的水域上,水上作业人员面临着多变的环境和潜在的风险。近年来,随着海洋经济的快速发展,海上作业活动日益频繁,人员安全问题也日益凸显。传统的海上救援手段存在诸多不足,如救援响应时间长、定位不准确等。 水上…

SpringBoot教程(三十) | SpringBoot集成Shiro(权限框架)

SpringBoot教程(三十) | SpringBoot集成Shiro(权限框架) 一、 什么是Shiro二、Shiro 组件核心组件其他组件 三、流程说明shiro的运行流程 四、SpringBoot 集成 Shiro1. 添加 Shiro 相关 maven2. 添加 其他 maven3. 设计数据库表4.…

JSONC:为JSON注入注释的力量

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web开发、配置文件和数据存储等领域。 其简洁的语法和易于解析的特点,使得JSON成为了现代编程中不可或缺的一部分。然而,JSON的一个显著缺点是…