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

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

我是一直在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日 登陆服务器提交代码

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

  1. Android高通平台调试Camera驱动全纪录

    项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...

  2. android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...

    鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...

  3. 高通平台调试Nxp Smart PA-TFA9897

    前言 新项目对speaker的输出响度和声音质量有一定的要求,所有选择了Nxp smart PA-TFA9897,其实高通平台有WSA系列的smart PA,由于后期tuning的复杂性,选择了Nxp ...

  4. android otp接口,Android-高通平台调试camera的OTP参数

    来源:http://blog.csdn.net/m0_37256698/article/details/70139272 需要修改的文件如下(以hi546为例): ./kernel/arch/arm/ ...

  5. android+高通平台缩写汇聚

    1.音频部分 Low Power Audio Subsystem (LPASS)低功耗音频子系统 Audio Calibration Database (ACDB)音频校准数据库 Audio Fron ...

  6. 高通平台添加屏幕驱动

    添加LK显示屏代码 修改/bootable/bootloader/lk/target/msm8952/oem_panel.c 添加屏幕厂家提供的驱动头文件,例: 将头文件添加到bootable/boo ...

  7. android camera(1)--- 高通平camera基本架构

    1  camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略:在kernel中实现se ...

  8. 高通平台添加或者移植一个完整的camera

    OV8865 1.kernel部分: A.kernel_driver: 把驱动文件ov8865_qtech_f8865ac.c 放到kernel/drivers/media/platform/msm/ ...

  9. android 4.4.2 去除漫游r,Android 4.4.3应用,高通平台 去掉应用

    android 4.4.3 高通平台那些apk android 一 .packages/apps BasicMmsReceiver Bluetooth Browser Calculator Calen ...

最新文章

  1. 2014腾讯WE大会:开启未来的五大科技发展趋势
  2. 计算机组成原理实验load,计算机组成原理实验报告五
  3. 第五届新疆ACM H-虚无的后缀
  4. linux dns及时添加,在ARM Linux上成功实现添加DNS库
  5. 某一天,忽然发现自己坚持不下去了。(无关计算机,只是一些自己的困惑和感想)
  6. 逼死强迫症?聊聊应用推送角标的那些事儿
  7. 论开心网和人人网的衰落
  8. 支持向量机---SVM 最小二乘支持向量机---LSSVM
  9. 【源码部署】Linux环境下编译snort
  10. 驾考科目三考试经验谈
  11. java短信发送接口代码示例demo分享
  12. html表单自动编号,Q&A|如何实现会员自动编号?
  13. linux systemctl命令详解
  14. 常微分方程初值问题数值解法[完整公式](Python)
  15. 全国翻译资格考试 介绍
  16. JavaScript判断对象中每一项属性都不为空
  17. 计算机安全沙箱,360安全浏览器沙箱使用说明
  18. 三门问题(Monty Hall problem)背后的贝叶斯理论
  19. NOIP模拟 跳格子(Nikola)(DP)
  20. 运维小白和网站安全扫描的那点事儿

热门文章

  1. 超超王子和薇薇公主的婚礼
  2. 泰森多边形 java_如何用Java写出泰森多边形算法代码???我找了好多资源表示无解呀?...
  3. unsigned char与signed char详解
  4. 阿里云ack如何查看绑定的nas存储
  5. 如何帮助孩子成为更负责任的数字公民
  6. 可以久戴不痛的耳机推荐、不入耳听歌骨传导耳机排名
  7. qss 更改图标_qss 界面大全
  8. ttttttttttttttttt
  9. Dapr简单入门(一)
  10. 塔防小游戏的开发设计经历