• Camera学习(1)


    1、Android Camera 驱动开发入门必备知识

    camera的方向:
    1.camera 驱动调试(kernel层)——c语言
    2.camera hal层调试开发——c++(涉及到JNI)
    3.camera应用层开发——java

    1:硬件相关

            简单的数字电路要懂,看的懂电路图(这个很简单),能根据电路找到相应Camera硬件连接的GPIO,并根据芯片手册配置GPIO为相应的模式;比如GPIO模式,输入IO或输出IO;或配置成PWM模式;不同的模式这个GPIO的工作方式是不同的;还有Camera DVDD AVDD IOVDD上电控制,和I2C配置这些。

    2:Camera驱动

            比如ov5640;你要找本Linux驱动相关的书看看,比如《linux设备驱动程序》知道简单的linux设备驱动写法;当然工作中Camera驱动不需要你写的,有参考的可以使用,但是参考驱动一般支持实现录像、拍照功能,别的白平衡、对焦等都需要你去自己调试;

    3:V4L2协议

            V4L2英文缩写video for linux version 2.

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

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

    4:语言

            你要知道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开发板。

    参考链接:https://www.zhihu.com/question/21573611/answer/65120008

  • 相关阅读:
    《网络安全笔记》第三章:NTFS权限
    自然语言处理(NLP)技术
    Spring、MyBatis框架和Redis数据库介绍 第1关:Spring 框架简介
    相机SD卡数据丢失如何恢复?
    关于【软件测试-自动化测试之面试技巧和注意事项】——侃侃而谈
    buuctf re刷题1
    Android USB电源管理
    设计模式之装饰器模式
    Android 11.0 禁用导航栏Recent键(任务键)
    centos7安装mysql5.7步骤(图解版)
  • 原文地址:https://blog.csdn.net/qq_44933149/article/details/127574919