全部博文(478)
分类: Android平台
2018-05-11 17:56:57
1:硬件相关:简单的数字电路要懂,看的懂电路图(这个很简单),能根据电路找到相应Camera硬件连接的GPIO,并根据芯片手册配置GPIO为相应的模式;比如GPIO模式,输入IO或输出IO;或配置成PWM模式;不同的模式这个GPIO的工作方式是不同的;
2:Camera驱动:比如ov5640;你要找本Linux驱动相关的书看看,比如《linux设备驱动程序》知道简单的linux设备驱动写法;当然工作中Camera驱动不需要你写的,有参考的可以使用,但是参考驱动一般支持实现录像、拍照功能,别的白平衡、对焦等都需要你去自己调试;
3:你要学习V4L2协议,因为驱动导出/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:JNI的写法最好以知道一些,至少可以抄就可以,因为这些写法都是固定的,因为调试的过程中有时候你一个人要从java层跟踪代码到HAL层再到驱动;
5:你要会用Linux,因为所有的Android源码都是在Linux下编译的;你要知道ARM架构,交叉编译器;比如arm-linux-gcc;知道怎么编译Android和kernel源码;怎么刷机;怎么调试;最好买块带Camera的Android开发板;
总结: