我自己目前主要从事的是android camera hal 的工作,工作上接触到的芯片平台要么是高通的,要么是mtk的。
其实之前一直接触的是高通平台,这2年才开始陆陆续续的接触到mtk平台。一开始接触,也没给太多时间熟悉,就要直接上手解决问题。然后也基本是边看问题,边去学习了解。
今天想聊聊的是,接触一个新的平台,我们怎样才能快速的入门?(这里仅仅针对camera hal而言,而且仅仅代表个人看法)
hal层的工作,需要对camera有个整体的熟悉了解。平时的工作中,app、framework层的问题需要协助分析,有些tuning问题也需要协助分析。有些公司也会把驱动camera bring up的工作也归纳为hal层的工作。所以,对平台框架有个整体的了解,就很重要。
接触一个新平台,我个人比较推荐的方式也是,先对这个平台有个大体的了解,然后再细分模块去了学习了解。
比如mtk平台的学习,我首先是在网上以及MTK官网上找了一些mtk 平台camera hal层框架介绍的文章。先看下平台有哪些模块,以及具体模块对应的功能。
接下来,就是熟悉下平台的日志打印规则。比如高通的camx框架,就有一套自己的日志打印规则,mtk的当然也有自己的一套。
camera问题的分析,经常离不开dump 数据。这个时候就需要了解下各个阶段的数据该如何dump。比较常见的会有预览yuv,拍照yuv,拍照jpeg这些。
上面几步了解了后,其实就可以上手看问题了。不同的芯片平台hal的实现虽然会有很大的区别。不过camera基础的处理流程逻辑大体是相同的。大体的流程都是从sensor端拿raw流,然后经过isp一系列的处理成yuv,最后给上层返帧。
在熟悉了一个平台后,其实再去学习一个新的平台,难度相对也会降低一些。很多东西是相通的,而且比较好的模式,可能是要学会去平台化,要学习的是平台的设计模式,而不是具体的平台。
接触一个新的东西,大家有什么学习经验,欢迎交流分享~
今天的文章是从知识星球搬运过来的,目前知识星球“小驰私房菜”系列已经更新了近40篇文章。
最近还新加了“开发案例分析”系列,欢迎感兴趣的同学扫描加入知识星球。
《Android Camera开发入门》视频课程,目前是更新了14节课程,也是对星球成员免费。