请把Camera hold住 - Android高通平台调试Camera驱动全纪录

项目比较紧,3周内把一个带有外置ISP,MIPI数据通讯,800万像素的camera从无驱动到实现客户所有需求。linux


1日 搭平台,建环境,编译内核,烧写代码。shell

我是一直在Window下搭个虚拟机登服务器搞开发的,对Linux系统环境实在无爱,往往一到项目刚开始要搭环境了,心里总有点排斥,过程就比较纠结,看来之后仍是要搞个linux真机玩玩。服务器


2日 编写camera驱动大体框架,配置GPIO,I2C,MIPI,电压,时钟等。
不多能碰到FAE只给硬件手册,没有Linux和Android驱动的。由于是camera sensor外接ISP芯片,杯具就发生了。整个系统是这样,高通平台的开发板,本身写驱动来控制ISP芯片,ISP芯片与camera sensor封装在一块儿,ISP控制sensor,实质就是sensor写寄存器。架构

            
  开始写驱动了,说好听的那是站在巨人的肩膀上借鉴别的驱动,说难听的就是照葫芦画瓢,反正再改下Kconfig, Makefile,这驱动框架就算是有了。
  对驱动开发而言,前期的主要工做应该就是配置GPIO口和芯片上电时序了。框架

        
每一个特定平台在操做GPIO,电压,时钟上都会有本身的一套内核API封装实现,只要能看懂会用这些API便可。配置完后,须在驱动初始化函数里,正确设置芯片的上电时序,确保芯片硬件上能正常工做起来。函数

 

3日 编写I2C通讯的封装函数,调试CPU与ISP间的I2C通讯性能

对于一些成熟方案,上面的工做完成顺利的话,驱动就差很少了。。很惋惜,这块ISP芯片在提高800万camera性能的同时,并无给我带来足够多的技术支持,只能说,成也ISP,败也ISP,解决方案全都本身来吧。万里长征第一道坎即是I2C。学习

I2C通讯自己要注意两点,调试

1) SDA第9位ACK位为低时说明从设备有响应。开发

2) Slave address

芯片手册对这个从设备地址没有统一的写法,有的给出8位地址,有的给出7位地址,一开始容易混淆。若是给出的是8位地址,那第8位是指Write- 0或者Read-1,实际的I2C芯片地址是7位的。Linux源码里struct i2c_board_info的板基信息应填写7位I2C地址,另外,I2C芯片地址能够经过开发板shell环境下$ ls /sys/bus/i2c/devices/ 查看。举个例子,

static struct i2c_board_info msm_camera_boardinfo[] __initdata = {
 {
  I2C_BOARD_INFO("ov8820", 0x78 >> 1),
 },

 

4日 FAE现场支持

FAE过来了,就确认了一件事,没有现成驱动了,我完全死心了。后来还发现一个规律,只要FAE来现场那就意味着啥都搞不出来了。。几我的汇聚思想还不如一我的静下心来研究。不过他们此行至少留下一份重要的资料-ISP芯片指令序列,camera全部功能的实现就靠它了。

 

5日 调通I2C

I2C的调通具备里程碑式的意义,它不只标志着硬件性能正常开启,更为后来璀璨绚烂的camera世界奠基了坚实的基础。。

有段时间卡在I2C 通讯上,给ISP芯片0x3c写入开启芯片命令0xf0成功,可是再发送其余命令所有失败。

分析现象,I2C总线已经能够通讯了,问题只能是在ISP芯片上,因而,查电路图,抄家伙起来把电路板上的电和时钟所有再量一遍。。

    

结果发现,有一路来自自动对焦马达的电压只有1.7V,没有达到要求,驱动里没有把它的GPIO拉高,致使芯片没法正常开启工做。

 

6日 编写预览驱动,测量MIPI数据

根据葵花宝典里的ISP指令序列,在Linux驱动里和Android高通抽象层里填写相关代码,即可实现预览功能。不过很不幸,光靠那两下子预览 仍是出不来的。开启预览程序时,用示波器量MIPI总线上的图像数据,可以获得理想的MIPI波形,说明底层驱动的预览功能OK,问题在于高通平台的 CAMIF VFE上,因而,翻阅高通的技术资料,学习添加VFE的一些配置。

 

7日 配置VFE,点亮预览

预览的成功具备划时代的意义,它不只标志着camera模块在整个Android系统架构中的成型,更为后来的拍照,录像,图像效果等功能奠基了坚 实的基础。预览的出现,意味着我不用再回答那些相似像“camera亮没”之类的只注重表面现象的问题,从那一刻起,我仿佛站上了另外一个高度,有种梦回汉 唐的感受。。      

     

 

8日 健壮代码,编写拍照功能,对焦功能

至此,整个camera模块从上层应用到底层驱动已所有打通,接下来就能够见神杀神,见佛杀佛了。。

 

 

9日 编写白平衡,色彩效果,场景模式,ISO,防震,闪光灯等功能

这年头码农伤不起啊!就按葵花宝典上的ISP指令序列往里使劲填充。

 

10日 登录服务器提交代码

相关文章
相关标签/搜索