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

展锐公司有自己的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年这样的周期,才能走完从预研评估到稳定量产这样的过程。这是一项非常耗人耗时的高技术高成本投入,非常考验研发公司整体的智慧决策和执行能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kafka 基于SASL/SCRAM动态认证部署,kafka加账号密码登录部署

文章目录 前言下载 kafka安装启动zookeeper添加账号密码 启动kafka修改kafka配置文件增加jaas授权文件修改启动文件,启动kafka检查是否部署成功 offset explore 连接 前言 其实挺简单的几个配置文件,问大模型一直没说到点上,绕晕了。SASL/SC…

【linux】4张卡,坏了1张,怎么办?

先禁用这张卡 grub 禁用,防止加载驱动 禁用这张卡的 PCI # 禁用 PCI 设备 0000:b1:00.0 (NVIDIA GPU) ACTION"add", SUBSYSTEM"pci", ATTR{vendor}"0x10de", KERNELS"0000:b1:00.0", RUN"/bin/sh -c echo 0000:b1:00…

数据技术进化史:从数据仓库到数据中台再到数据飞轮的旅程

随着大数据时代的到来,数据已经成为企业的核心资产之一。在过去几十年间,数据技术也随之不断演进,从早期的数据仓库到近年来热门的数据中台,再到正在快速发展的数据飞轮概念,每一步都是技术革新的体现。 一、数据仓库&…

股价预测,非线性注意力更佳?

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 本文探讨了在 transformer 模型中使用非线性注意力来预测股票价格的概念。我们讨论了黎曼空间和希尔伯特空间等非线性空间的数学基础,解释了为什么非线性建模可能是有利的,并提供了在代码中实现这种…

【二十】【QT开发应用】listwidget右键菜单和删除item

创建项目,添加资源文件 在项目文件夹中创建resources资源文件夹。 在vs中打开qrc文件,选择添加资源文件。 选择我们resources资源文件中的所有文件作为资源文件。 最后不要忘记点击保存。 向ListWidget控件添加item 右键菜单 在.h文件中添加QMenu头…

java项目之编程训练系统源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的编程训练系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 编程训练系统的主要使用者管…

结合人工智能,大数据,物联网等主流技术实现业务流程的闭环整合的名厨亮灶开源了

明厨亮灶视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。AI技术可以24小时…

1.5 计算机网络的分层结构

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 分层设计2 网络体系结构2.1 基本概述2.2 常见的三种网络体系结构 3 各层之间的关系3.1 水平关系3.2 垂直关系 4 数据传输过程4.1 水平视角4.2 垂直视角 前言 在当今数字…

uniapp H5 打开地图 并选中标记点

uniapp H5 打开地图 并选中标记点 先上代码 //打开地图 显示景区位置openMap() {// 支付宝// #ifdef MP-ALIPAYmy.openLocation({longitude: Number(this.detailObj.longitude), // 经度latitude: Number(this.detailObj.latitude), // 纬度name: this.detailObj.scenicName, …

CertiK因发现Apple Vision Pro眼动追踪技术漏洞,第6次获苹果认可

​2024年9月20日,头部Web3.0安全机构CertiK自豪地宣布,CertiK的工程师因发现Apple Vision Pro MR(混合现实)头显设备中的关键漏洞而获得Apple公司认可,这已经是Apple公司第六次公开发布对CertiK的致谢,Cert…

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下: 由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码&a…

IDEA配置全局的maven环境

1、关闭掉所有打开的项目,然后点击All settings 2、配置maven home path、user setting file、local repository。 3、配置JRE的版本 4、配置字节码版本

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章:Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章:Sentosa_DSML社…

聊天组件 Vue3-beautiful-chat 插槽

前言 Vue3-beautiful-chat 组件有四个插槽可以定制 一、user-avatar(头像) 首先是头像插槽,我们可以直接在 <beautiful-chat></beautiful-chat> 中间使用; 作用: 我们可以在用户头像上添加自定义样式,比如添加节日边框、可以使用首字母作为头像。。。 …

由于安全风险,安全领导者考虑禁止人工智能编码

安全团队与开发团队之间的紧张关系 83% 的安全领导者表示&#xff0c;他们的开发人员目前使用人工智能来生成代码&#xff0c;57% 的人表示这已成为一种常见做法。 然而&#xff0c;72% 的人认为他们别无选择&#xff0c;只能允许开发人员使用人工智能来保持竞争力&#xff0…

优优嗨聚集团:引领互联网服务新篇章

在当今这个日新月异的互联网时代&#xff0c;企业之间的竞争愈发激烈&#xff0c;如何高效地运营线上业务成为了众多商家关注的焦点。在这一背景下&#xff0c;四川优优嗨聚集团凭借其卓越的服务质量、创新的技术解决方案和强大的品牌影响力&#xff0c;逐渐成为了众多商家信赖…

vscode 配置rust格式化的正确方法

vscode 配置rust格式化的正确方法&#xff1a; 在settings.json里输入&#xff1a; "[rust]": {"editor.defaultFormatter": "rust-lang.rust-analyzer","editor.formatOnSave": true}

CUDA并行架构

一、CUDA简介 CUDA(Compute Unified Device Architecture)是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU(Graphics Processing Unit)能够对复杂的计算问题做性能速度优化。 二、串并行模式 高性能计算的关键是利用多核处理器进行并行计算。 串行模式&#…

Python 中的 typing 模块常见用法

typing 模块是 Python 提供的一个标准库&#xff0c;主要用于为函数、变量和类定义类型提示&#xff08;Type Hints&#xff09;&#xff0c;从而提高代码的可读性和类型安全性。虽然 Python 是动态类型语言&#xff0c;但通过 typing 模块&#xff0c;开发者可以明确指定变量和…

【2024研赛】【华为杯E题】2024 年研究生数学建模比赛思路、代码、论文助攻

思路将在名片下群聊分享 高速公路应急车道紧急启用模型 高速公路拥堵现象的原因众多&#xff0c;除了交通事故外&#xff0c;最典型的就是部分路段出现瓶颈现象&#xff0c;主要原因是车辆汇聚&#xff0c;而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点&#xff0…