camera驱动开发所需要具备基础知识,如果你还没有了解过camera模块,那么这些基础必备的知识,将会对你比较有用,俗话说“磨刀不误砍柴工”,基本功配置好了,相信你在做camera驱动开发过程中肯定得心应手。

1. 硬件相关

首先,要学会看datasheet,datasheet文档包含了IC芯片的工作原理。在porting驱动之前,你总得了解IC芯片的时序图,传输数据的一些协议接口和时序图,大概有几路电压,GPIO管脚和clk时钟控制之类的吧。

其次,driver工程师不需要去专研很深的硬件知识,驱动工程师最重要的是要懂得简单的数字电路,毕竟硬件工程师画好的原理图,你能根据电路找到相应Camera硬件连接的GPIO,并根据芯片手册配置GPIO为相应的模式;比如GPIO模式,输入IO或输出IO;或配置成PWM模式;不同的模式这个GPIO的工作方式是不同的;还有Camera DVDD AVDD IOVDD上电控制,和I2C配置这些。

2. Camera驱动

现在市面上,大厂商,像三星,sony,ov一般都会提供对应的驱动文件。但是对应特定项目,我们根据产品的定义,会做专门的定制,所以你得去理解和修改驱动,你要能够修改驱动的能力,那么你就得了解linux驱动最基本的知识。比如ov5640;你要找本Linux驱动相关的书看看,比如《linux设备驱动程序》知道简单的linux设备驱动写法;当然工作中Camera驱动不需要你写的,有参考的可以使用,但是参考驱动一般支持实现录像、拍照功能,别的白平衡、对焦等都需要你去自己调试;camera setting需要你经常根据效果去配置和修改,当发生问题的时候,你得熟悉驱动流程,去debug,这样子你才能够成为一名合格的驱动工程师。

3.V4L2架构

V4L2英文缩写video for linux version 2.

目前高通和三星、MTK和全志这些平台,camera驱动架构都是V4L2架构,但是MTK平台除外,MTK camera驱动架构采用的是自己一套字符设备驱动架构的方式。

从通用性来讲,你要学习V4L2协议,因为驱动导出/dev/video0接口是通过V4L2协议的;上层C的应用也是通过V4L2协议访问/dev/video0的;实际V4L2协议就是通过一些标志linux ioctl()函数和底层驱动通信的;V4L2协议是为了屏蔽各种Camera驱动的不同(比如usb摄像头,mipi接口摄像头)而提供的统一和摄像头驱动通信的规范;

如果,有机会你接触到mtk方案,其实看他们字符设备驱动也比较简单。

4. C++语言

你要知道C++的class的相关知识,最好能看到C++的代码,既然你有C的知识,那把C++的面向对象看懂,知道C++的class就可以了;为什么要懂C++呢?因为Android Camera HAL访问/dev/video0都是用C++写的,二十几个个xxxx.cpp不同的类相互继承实现的;而且你要懂Android HAL层的写法,至少查查资料知道用哪里看;一般都是CameraModule.cpp或CameraHal.cpp;

5. Framework JNI调用

JNI的写法最好知道一些,至少可以抄就可以,因为这些写法都是固定的,因为调试的过程中有时候你一个人要从java层跟踪代码到HAL层再到驱动;

6. Linux系统

你要会用Linux,因为所有的Android源码都是在Linux下编译的;你要知道ARM架构,交叉编译器;比如arm-linux-gcc;知道怎么编译Android和kernel源码;怎么刷机;怎么调试;最好买块带Camera的Android开发板;

Android Camera驱动开发入门必备知识相关推荐

  1. android相机开发书籍,Android Camera 驱动开发入门必备知识有哪些?

    1:硬件相关:简单的数字电路要懂,看的懂电路图(这个很简单),能根据电路找到相应Camera硬件连接的GPIO,并根据芯片手册配置GPIO为相应的模式:比如GPIO模式,输入IO或输出IO:或配置成P ...

  2. 实现Android底层驱动开发并裁剪定制Android操作系统

    毕业论文 题   目实现Android底层驱动开发并裁剪定制Android操作系统 学   院电子信息与电气工程学院 姓   名牛xxx民 专   业电子信息科学与技术 学   号2012xxxxxx ...

  3. 一牛网:Android camera驱动培训班,不可错过的学习机会

    Android camera驱动培训: 学员要求: 1.要有C语言基础 2.有android.linux.或其他嵌入式系统基础 3.对这块有强烈兴趣者. 师资团队: 主讲:一牛网_Jacky 老师(驱 ...

  4. 全站最全面的Python 基础入门必备知识大全,学完即就业!【建议收藏仔细学习】

    前言: Python作为21世纪最火的编程语言,市面上各种学习视频层出不穷,关于Python的学习氛围也逐渐浓厚!!最近一段时间越来越多的知友们在私信我,希望我出一期python基础入门的内容,肝了N ...

  5. PHP入门必备知识-wampserver的安装以及配置

    PHP入门必备知识-wampserver的安装以及配置 一.wampserever的安装 学习任何一门语言,工具是必不可少的,所谓"工欲善其事,必先利其器".对于php初学者来说, ...

  6. Android应用基础开发入门

    本文写给Android小白,起步入门参考,不过还是喜欢从原理上尽量多讲一点东西. 本文从以下四个方面展开,重点介绍前3节: 第一节:什么是apk? 第二节:android开发 工具介绍 第三节:我们开 ...

  7. Android百度地图开发入门教程

    Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...

  8. 音视频开发入门基础知识(视频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...

  9. NT内核和驱动开发的基础知识-笔记

    这是我在学习NT内核和驱动开发的基础知识时记录的一些笔记,不是连续的教程,欢迎指正错误的地方 ----------------------------------------------------- ...

最新文章

  1. 构建linux下的web服务器
  2. 相对熵/KL散度(Kullback–Leibler divergence,KLD)
  3. 【转】从底层了解ASP.Net体系结构
  4. share extension 不显示_高亮显示系统日志应该用什么命令
  5. Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件
  6. Xstudio+Bugzilla
  7. 利物浦大学的vlog网站
  8. 300. 最长上升子序列
  9. 服务器配置 | 3306端口被占用,phpStudy无法启动Apache
  10. python解析dom,关于Python解析xml dom的简单应用
  11. VC中CListCtrl设置滚动条在最下边的方法(MSDN中的例子)
  12. 中科大博士写外挂被抓:涉案总牟利 300 多万,每月分得 4~6k
  13. Silverlight/WPF/WP7一周学习导读(12月6-12月12)
  14. 周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈
  15. 深度学习 游戏关卡_强化学习的游戏关卡设计
  16. 关于IPad忘记密码恢复出厂设置的办法
  17. 2022管理类联考真题试卷不含答案-文都管联院
  18. 论文笔记:SIFT(Scale-invariant feature transform 尺度不变特征变换)
  19. python 计数器每次加1_python 简单计数器的实现
  20. 用计算机乘法怎么累加,乘法指令之: MLA乘-累加指令

热门文章

  1. 30万条弹幕大军都推荐你去看的《山海情》,是怎样一部最搞笑最土味的扶贫剧
  2. 不是华为手机可以装鸿蒙,不是华为手机,也能用上鸿蒙系统
  3. 十次方专属社交平台前端系统开发 网站前台-活动与招聘
  4. Oracle应用之merge合并更新函数
  5. JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码
  6. 2019年“华为杯”研究生数学建模竞赛--E题(全球变暖)思路感想
  7. 智能枕头方案/案列/APP
  8. 浅谈 缀点成线 问题
  9. 数分笔记整理7 - Pandas Pandas - DataFrame类型的对象 - 创建方式
  10. 初中数学503个必考知识点_干货丨初中数学必考的21个知识点