Android Camera驱动开发入门必备知识
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驱动开发入门必备知识相关推荐
- android相机开发书籍,Android Camera 驱动开发入门必备知识有哪些?
1:硬件相关:简单的数字电路要懂,看的懂电路图(这个很简单),能根据电路找到相应Camera硬件连接的GPIO,并根据芯片手册配置GPIO为相应的模式:比如GPIO模式,输入IO或输出IO:或配置成P ...
- 实现Android底层驱动开发并裁剪定制Android操作系统
毕业论文 题 目实现Android底层驱动开发并裁剪定制Android操作系统 学 院电子信息与电气工程学院 姓 名牛xxx民 专 业电子信息科学与技术 学 号2012xxxxxx ...
- 一牛网:Android camera驱动培训班,不可错过的学习机会
Android camera驱动培训: 学员要求: 1.要有C语言基础 2.有android.linux.或其他嵌入式系统基础 3.对这块有强烈兴趣者. 师资团队: 主讲:一牛网_Jacky 老师(驱 ...
- 全站最全面的Python 基础入门必备知识大全,学完即就业!【建议收藏仔细学习】
前言: Python作为21世纪最火的编程语言,市面上各种学习视频层出不穷,关于Python的学习氛围也逐渐浓厚!!最近一段时间越来越多的知友们在私信我,希望我出一期python基础入门的内容,肝了N ...
- PHP入门必备知识-wampserver的安装以及配置
PHP入门必备知识-wampserver的安装以及配置 一.wampserever的安装 学习任何一门语言,工具是必不可少的,所谓"工欲善其事,必先利其器".对于php初学者来说, ...
- Android应用基础开发入门
本文写给Android小白,起步入门参考,不过还是喜欢从原理上尽量多讲一点东西. 本文从以下四个方面展开,重点介绍前3节: 第一节:什么是apk? 第二节:android开发 工具介绍 第三节:我们开 ...
- Android百度地图开发入门教程
Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...
- 音视频开发入门基础知识(视频入门篇)
RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...
- NT内核和驱动开发的基础知识-笔记
这是我在学习NT内核和驱动开发的基础知识时记录的一些笔记,不是连续的教程,欢迎指正错误的地方 ----------------------------------------------------- ...
最新文章
- 构建linux下的web服务器
- 相对熵/KL散度(Kullback–Leibler divergence,KLD)
- 【转】从底层了解ASP.Net体系结构
- share extension 不显示_高亮显示系统日志应该用什么命令
- Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件
- Xstudio+Bugzilla
- 利物浦大学的vlog网站
- 300. 最长上升子序列
- 服务器配置 | 3306端口被占用,phpStudy无法启动Apache
- python解析dom,关于Python解析xml dom的简单应用
- VC中CListCtrl设置滚动条在最下边的方法(MSDN中的例子)
- 中科大博士写外挂被抓:涉案总牟利 300 多万,每月分得 4~6k
- Silverlight/WPF/WP7一周学习导读(12月6-12月12)
- 周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈
- 深度学习 游戏关卡_强化学习的游戏关卡设计
- 关于IPad忘记密码恢复出厂设置的办法
- 2022管理类联考真题试卷不含答案-文都管联院
- 论文笔记:SIFT(Scale-invariant feature transform 尺度不变特征变换)
- python 计数器每次加1_python 简单计数器的实现
- 用计算机乘法怎么累加,乘法指令之: MLA乘-累加指令
热门文章
- 30万条弹幕大军都推荐你去看的《山海情》,是怎样一部最搞笑最土味的扶贫剧
- 不是华为手机可以装鸿蒙,不是华为手机,也能用上鸿蒙系统
- 十次方专属社交平台前端系统开发 网站前台-活动与招聘
- Oracle应用之merge合并更新函数
- JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码
- 2019年“华为杯”研究生数学建模竞赛--E题(全球变暖)思路感想
- 智能枕头方案/案列/APP
- 浅谈 缀点成线 问题
- 数分笔记整理7 - Pandas Pandas - DataFrame类型的对象 - 创建方式
- 初中数学503个必考知识点_干货丨初中数学必考的21个知识点