高通msm8926 camera调试笔记

http://blog.csdn.net/fantasyhujian/article/details/38943639?utm_source=tuicool

前些天在调试一组高通msm8926上的摄像头,之前ov5648+imx135已正常的点亮了,但是后续需要一个mini配置版本的方案,需要兼容ov2685+ov8865,于是先做好调试的前期准备,跟摄像头模组厂要模组spec和芯片的datasheet,先仔细阅读一下ic的datasheet,并仔细查看模组的打样图纸和模组spec,首先要确认的是ic的各路电压是可以正常的供出,一般需要注意的就是DVDD,IOVDD,AVDD,还有STANDBY和RESET,这些管脚的连接要和主板上兼容,确保在硬件上主板可以正常的兼容摄像头模组,我就开始被模组厂忽悠了,有一组DVDD电压说是可以不用去供电,ic也可以正常工作,我阅读ic的datasheet就发现不对,但是既然是模组厂已确认是可以兼容的,我开始居然天真的被相信了!冋阿,善良程序猿的悲哀,太容易相信别人了,!

      模组厂提供了基本的ic驱动代码之后,首先需要在kernel中兼容这组摄像头,展讯去配置Camera的Kconfig和Makefile,以及sensorcfg就可以基本完成对新Camera senssor的兼容,高通上处理就有些不一样,由于目前高通平台引入了设备树dts来配置内核信息,关于设备树,各位童鞋可以查看我的相关博客-点击打开链接去了解更多相关知识,首先是在设备树中配置Camera ic的i2c从地址芯片和各个控制管脚的gpio和e2prom的配置信息,这个地方需要注意的是,模组手册对这个从设备地址没有统一的写法,有的给出8位地址,有的给出7位地址,一开始容易混淆。如果给出的是8位地址,那第8位是指Write-0或者Read-1,实际的I2C芯片地址是7位的,内核中配置的地址是真实地址,这个需要格外的注意,不然就会造成i2c不通,导致摄像头驱动加载失败。

   配置完相关信息,开机进入摄像头测试,发现摄像头已停止,无法连接到设备,抓取相关的内核log,发现是match id失败,导致驱动加载不成功,这个我最开始怀疑的就是相关的电压没能正常起来,用电压表,测起,发现电压貌似正常,然后我再次怀疑是设备的从地址有问题,跟模组厂再三确认,他们依旧说这个从地址是没问题的,唉,这货简直是睁着眼睛说瞎话,众所周知,ov的FAE非常难请来现场调试,所以只能抄示波器自己先看看,果然示波器抓取驱动加载时的各路电压貌似出了问题,虽然驱动上电这个过程非常的短暂,但是还是在数次的抓取中,终于成功抓到了这个开机加载驱动转瞬即逝的上电时序波形,我再次分析一下这个加载驱动的log,log如下:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <6>[    4.582687] synaptics_rmi4_i2c 5-0020: fwu_read_f34_queries perm:1, bl:1, display:0  
  2. <3>[    4.594144] msm_camera_power_up type 2  
  3. <3>[    4.599995] msm_camera_power_up index 1  
  4. <3>[    4.602787] msm_camera_power_up type 2  
  5. <3>[    4.608830] msm_camera_power_up index 2  
  6. <3>[    4.611622] msm_camera_power_up type 2  
  7. <3>[    4.617866] msm_camera_power_up index 3  
  8. <3>[    4.620658] msm_camera_power_up type 2  
  9. <3>[    4.630691] msm_camera_power_up index 4  
  10. <3>[    4.633482] msm_camera_power_up type 1  
  11. <3>[    4.637215] msm_camera_power_up index 5  
  12. <3>[    4.641060] msm_camera_power_up type 1  
  13. <3>[    4.644768] msm_camera_power_up:1023 gpio set val 37  
  14. <3>[    4.655759] msm_camera_power_up index 6  
  15. <3>[    4.658573] msm_camera_power_up type 1  
  16. <3>[    4.662282] msm_camera_power_up index 7  
  17. <3>[    4.666102] msm_camera_power_up type 1  
  18. <3>[    4.669857] msm_camera_power_up index 8  
  19. <3>[    4.673654] msm_camera_power_up type 1  
  20. <3>[    4.677408] msm_camera_power_up:1023 gpio set val 37  
  21. <3>[    4.693360] msm_camera_power_up index 9  
  22. <3>[    4.696151] msm_camera_power_up type 1  
  23. <3>[    4.699907] msm_camera_power_up index 10  
  24. <3>[    4.703790] msm_camera_power_up type 0  
  25. <3>[    4.718602] msm_camera_power_up index 11  
  26. <3>[    4.721480] msm_camera_power_up type 3  
  27. <3>[    4.725312] msm_camera_power_up exit  
  28. <3>[    4.728945] msm_cci_irq:852 MASTER_0 error 10000000  
  29. <3>[    4.733666] msm_cci_i2c_read:426 read_words = 0, exp words = 1  
  30. <3>[    4.739474] msm_cci_i2c_read_bytes:504 failed rc -22  
  31. <3>[    4.744398] msm_camera_cci_i2c_read: line 53 rc = -22  
  32. <3>[    4.749454] msm_sensor_match_id: ov8865_q8v18a: read id failed  
  33. <3>[    4.755249] msm_sensor_check_id:1055 match id failed rc -22  
  34. <3>[    4.760824] msm_camera_power_down:1154  
  35. <3>[    4.764581] msm_camera_power_down index 0  
  36. <3>[    4.768552] msm_camera_power_down type 3  
  37. <3>[    4.772434] msm_camera_power_down index 1  
  38. <3>[    4.776427] msm_camera_power_down type 0  
  39. <3>[    4.791392] msm_camera_power_down index 2  
  40. <3>[    4.794358] msm_camera_power_down type 1  
  41. <3>[    4.798288] msm_camera_power_down index 3  
  42. <3>[    4.802256] msm_camera_power_down type 1  
  43. <3>[    4.817189] msm_camera_power_down index 4  
  44. <3>[    4.820213] msm_camera_power_down type 1  
  45. <3>[    4.824060] msm_camera_power_down index 5  
  46. <3>[    4.828076] msm_camera_power_down type 1  
  47. <3>[    4.831959] msm_camera_power_down index 6  
  48. <3>[    4.835951] msm_camera_power_down type 1  
  49. <3>[    4.845902] msm_camera_power_down index 7  
  50. <3>[    4.848890] msm_camera_power_down type 1  
  51. <3>[    4.852773] msm_camera_power_down index 8  
  52. <3>[    4.856766] msm_camera_power_down type 2  
  53. <3>[    4.866952] msm_camera_power_down index 9  
  54. <3>[    4.869942] msm_camera_power_down type 2  
  55. <3>[    4.876452] msm_camera_power_down index 10  
  56. <3>[    4.879527] msm_camera_power_down type 2  
  57. <3>[    4.885664] msm_camera_power_down index 11  
  58. <3>[    4.888740] msm_camera_power_down type 2  
  59. <3>[    4.894707] msm_camera_power_down exit  
  60. <3>[    4.897436] msm_sensor_platform_probe ov8865_q8v18a power up failed  
  61. <4>[    4.903675] ovti,ov8865: probe of 20.qcom,camera failed with error -22  
  62. <3>[    4.910245] ov8865_init_module:158 rc -19  
  63. <3>[    4.915152] msm_sensor_platform_probe called data c0e98778  
  64. <3>[    4.919663] msm_sensor_platform_probe pdev name (null)  
  65. <3>[    4.924760] msm_sensor_get_dt_data qcom,sensor-name ov2685, rc 0  
  66. <3>[    4.930771] msm_sensor_get_dt_data qcom,cci-master 0, rc 0  
  67. <3>[    4.936217] msm_sensor_get_sub_module_index:125 src_node NULL  
  68. <3>[    4.941968] msm_sensor_get_sub_module_index:141 eeprom src_node NULL  
  69. <3>[    4.948305] msm_sensor_get_sub_module_index:169 src_node NULL  
  70. <3>[    4.954014] msm_sensor_get_sub_module_index csiphy_core[0] = 1  
  71. <3>[    4.959851] msm_sensor_get_sub_module_index csid_core[0] = 1  
  72. <3>[    4.965469] msm_sensor_get_dt_data qcom,mount-angle 90, rc 0  
  73. <3>[    4.971135] msm_sensor_get_dt_data qcom,sensor-position 1, rc 0  
  74. <3>[    4.977014] msm_sensor_get_dt_data qcom,sensor-mode 1, rc 0  
  75. <3>[    4.982594] msm_sensor_get_dt_csi_data qcom,csi-lane-assign 4320, rc 0  
  76. <3>[    4.989102] msm_sensor_get_dt_csi_data qcom,csi-lane-mask 3, rc 0  
  77. <3>[    4.995157] msm_camera_get_dt_vreg_data qcom,cam-vreg-name count 3  
  78. <3>[    5.001343] msm_camera_get_dt_vreg_data reg_name[0] = cam_vdig  
  79. <3>[    5.007136] msm_camera_get_dt_vreg_data reg_name[1] = cam_vio  
  80. <3>[    5.012892] msm_camera_get_dt_vreg_data reg_name[2] = cam_vana  
  81. <3>[    5.018704] msm_camera_get_dt_vreg_data cam_vreg[0].type = 0  
  82. <3>[    5.024322] msm_camera_get_dt_vreg_data cam_vreg[1].type = 1  
  83. <3>[    5.029987] msm_camera_get_dt_vreg_data cam_vreg[2].type = 0  
  84. <3>[    5.035608] msm_camera_get_dt_vreg_data cam_vreg[0].min_voltage = 2050000  
  85. <3>[    5.042399] msm_camera_get_dt_vreg_data cam_vreg[1].min_voltage = 2800000  
  86. <3>[    5.049196] msm_camera_get_dt_vreg_data cam_vreg[2].min_voltage = 2850000  
  87. <3>[    5.055921] msm_camera_get_dt_vreg_data cam_vreg[0].max_voltage = 2050000  
  88. <3>[    5.062713] msm_camera_get_dt_vreg_data cam_vreg[1].max_voltage = 2800000  
  89. <3>[    5.069519] msm_camera_get_dt_vreg_data cam_vreg[2].max_voltage = 2850000  
  90. <3>[    5.076233] msm_camera_get_dt_vreg_data cam_vreg[0].op_mode = 200000  
  91. <3>[    5.082592] msm_camera_get_dt_vreg_data cam_vreg[1].op_mode = 0  
  92. <3>[    5.088493] msm_camera_get_dt_vreg_data cam_vreg[2].op_mode = 80000  
  93. <3>[    5.094724] msm_camera_get_dt_power_setting_data qcom,cam-power-seq-type count -22  
  94. <3>[    5.102345] msm_sensor_get_dt_data gpio count 2  
  95. <3>[    5.106795] msm_sensor_get_dt_data gpio_array[0] = 26  
  96. <3>[    5.111860] msm_sensor_get_dt_data gpio_array[1] = 35  
  97. <3>[    5.116863] msm_camera_get_dt_gpio_req_tbl cam_gpio_req_tbl[0].gpio = 26  
  98. <3>[    5.123565] msm_camera_get_dt_gpio_req_tbl cam_gpio_req_tbl[1].gpio = 35  
  99. <3>[    5.130249] msm_camera_get_dt_gpio_req_tbl cam_gpio_req_tbl[0].flags = 1  
  100. <3>[    5.136909] msm_camera_get_dt_gpio_req_tbl cam_gpio_req_tbl[1].flags = 0  
  101. <3>[    5.143617] msm_camera_get_dt_gpio_req_tbl cam_gpio_req_tbl[0].label = CAMIF_MCLK  
  102. <3>[    5.151082] msm_camera_get_dt_gpio_req_tbl cam_gpio_req_tbl[1].label = CAM_STANDBY  
  103. <3>[    5.158640] msm_camera_get_dt_gpio_set_tbl cam_gpio_set_tbl[0].gpio = 35  
  104. <3>[    5.165295] msm_camera_get_dt_gpio_set_tbl cam_gpio_set_tbl[1].gpio = 35  
  105. <3>[    5.172003] msm_camera_get_dt_gpio_set_tbl cam_gpio_set_tbl[0].flags = 0  
  106. <3>[    5.178684] msm_camera_get_dt_gpio_set_tbl cam_gpio_set_tbl[1].flags = 2  
  107. <3>[    5.185349] msm_camera_get_dt_gpio_set_tbl cam_gpio_set_tbl[0].delay = 1000  
  108. <3>[    5.192312] msm_camera_get_dt_gpio_set_tbl cam_gpio_set_tbl[1].delay = 4000  
  109. <3>[    5.199265] msm_camera_init_gpio_pin_tbl qcom,gpio-reset 35  
  110. <3>[    5.204797] msm_sensor_get_dt_actuator_data qcom,actuator-cam-name 0, rc -22  
  111. <3>[    5.211848] msm_sensor_get_dt_data:291 slave addr 78 sensor reg 300a id 2685  
  112. <3>[    5.218878] msm_sensor_get_dt_data qcom,misc_regulator (null), rc -22  
  113. <3>[    5.225280] msm_camera_power_up:959  
  114. <3>[    5.228782] msm_camera_power_up index 0  
  115. <3>[    5.232568] msm_camera_power_up type 2  
  116. <3>[    5.240940] msm_camera_power_up index 1  
  117. <3>[    5.243731] msm_camera_power_up type 2  
  118. <3>[    5.250775] msm_camera_power_up index 2  
  119. <3>[    5.253566] msm_camera_power_up type 2  
  120. <3>[    5.263427] msm_camera_power_up index 3  
  121. <3>[    5.266218] msm_camera_power_up type 1  
  122. <3>[    5.269976] msm_camera_power_up:1023 gpio set val 35  
  123. <3>[    5.280925] msm_camera_power_up index 4  
  124. <3>[    5.283716] msm_camera_power_up type 1  
  125. <3>[    5.287473] msm_camera_power_up:1023 gpio set val 35  
  126. <3>[    5.298422] msm_camera_power_up index 5  
  127. <3>[    5.301212] msm_camera_power_up type 0  
  128. <3>[    5.325996] msm_camera_power_up index 6  
  129. <3>[    5.328812] msm_camera_power_up type 3  
  130. <3>[    5.332624] msm_camera_power_up exit  
  131. <3>[    5.427310] msm_cci_i2c_read: wait_for_completion_interruptible_timeout 410  
  132. <3>[    5.527309] msm_cci_flush_queue:106 wait timeout  
  133. <3>[    5.530899] msm_cci_i2c_read_bytes:504 failed rc -110  
  134. <3>[    5.535916] msm_camera_cci_i2c_read: line 53 rc = -110  
  135. <3>[    5.541063] msm_sensor_match_id: ov2685: read id failed  
  136. <3>[    5.546247] msm_sensor_check_id:1055 match id failed rc -110  
  137. <3>[    5.551911] msm_camera_power_down:1154  
  138. <3>[    5.555665] msm_camera_power_down index 0  
  139. <3>[    5.559638] msm_camera_power_down type 3  
  140. <3>[    5.563521] msm_camera_power_down index 1  
  141. <3>[    5.567571] msm_camera_power_down type 0  
  142. <3>[    5.592458] msm_camera_power_down index 2  
  143. <3>[    5.595424] msm_camera_power_down type 1  
  144. <5>[    5.599370] fwu_start_reflash: Start of reflash process  
  仔细分析log,发现i2c地址应该是有问题,报着试试的态度,对地址进行了移位,转换成认为的真实地址,编译代码发现,还是无法打开设备,仔细检查原理图和打样图纸,让硬件把dvdd将上拉电阻接到一个PMIC的控制脚上,我想按照datasheet的上电时序再来一遍,编译烧写文件,怀着忐忑的心情打开摄像头,居然亮了,着实激动了一把,我擦,坑爹的模组厂,差点害我放弃点亮这颗摄像头了!

    后摄还是无法打开摄像头,参考上电时序和电路原理图,将STANDBYf飞线到主板上一个不用gpio,我按照上电时序修改poweron代码,也正常点亮了--至此,已基本完成了在高通msm8926上对ov2685+ov8865的兼容!

得出的调试经验给大家分享一下:

1 Camera驱动加载失败的原因大部分就是i2c和电压不对,请确保这些是正常配置的。

2.仔细分析内核的调试log,在关键的地方加调试信息,善用示波器和电压表等辅助调试设备,分析失败的根本原因

3 严格按照spec和datasheet,当然要确保你的资料是正确的,不要轻易的相信别人的信息,特别是调试出现问题的时候,你需要逐步去排除各种可能的错误

  希望这些能帮到那些正在痛苦调试的程序猿,大家共勉!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 高通 8155是一款移动平台处理器,用于手机等移动设备。在调试 camera 功能时,通常需要以下软件来完成: 1. 移动设备厂商提供的 Android 调试工具包(Android Debug Bridge,简称 ADB):ADB 是一种通信工具,用于在计算机和移动设备之间进行调试和功能测试。通过 ADB,可以连接到移动设备并执行各种命令,如安装应用程序、查看设备信息、获取日志等。 2. 高通专用的调试工具:高通提供了一些专门用于调试和测试移动设备摄像头功能的工具,如 Qualcomm Snapdragon Profiler(QSP)和 Qualcomm Camera Tools(QCT)。这些工具可以帮助开发人员分析和优化摄像头性能,调整图像参数,甚至运行一些自定义测试。 3. 第三方相机调试工具:此外,还可以借助一些第三方相机调试工具,如 Google 的 Camera2 API 或 CameraX API。这些 API 提供了一系列功能和接口,开发者可利用它们来调试、测试和优化相机功能,包括设置曝光、对焦、白平衡等参数,拍摄照片和录制视频等。 需要注意的是,具体的调试软件和工具可能因不同的开发需求和设备特性而有所不同。因此,在调试高通 8155 处理器的 camera 功能时,建议参考高通官方文档和相关开发资源,以获取最新的建议和推荐工具。同时,根据具体的开发环境和需求,也可以选择合适的辅助工具来完成调试任务。 ### 回答2: 高通8155调试camera通常需要使用高通提供的软件工具集,其中包括以下几个主要的软件: 1. Snapdragon Profiler(骁龙分析器):这是一款专门用于骁龙处理器的性能分析工具,可以帮助开发人员监测应用程序的性能,并提供调试信息。对于调试camera,Snapdragon Profiler可以帮助开发人员分析和优化camera的性能,包括帧率、延迟、能耗等方面。 2. Qualcomm Camera HAL Interface(Q-Cam HAL接口):这是一组高通相机硬件抽象层接口,为开发者提供相机功能的访问和控制。通过使用Q-Cam HAL接口,开发人员可以编写相机应用程序,实现对相机硬件的控制和调试。 3. Qualcomm Camera Tuning Tools(Q-Cam调试工具):这是一套高通相机调试工具,提供对相机各个参数的调整和优化。开发人员可以使用这些工具对相机硬件进行调试,包括曝光、白平衡、对焦等参数的优化和配置。 总结来说,高通8155调试camera需要使用的软件主要包括Snapdragon Profiler、Q-Cam HAL接口和Q-Cam调试工具。这些工具可以帮助开发人员分析相机性能,控制相机硬件,并对相机参数进行调整和优化,以提升相机的拍摄质量和性能。 ### 回答3: 高通8155处理器集成了一个强大的图像信号处理器(ISP),用于调试相机功能。为了调试高通8155相机,需要以下软件: 1. Android操作系统:高通8155处理器主要用于运行基于Android操作系统的设备,因此需要一个支持该处理器的Android系统。 2. 高通QCamera应用程序:高通提供了QCamera应用程序,用于调试和控制高通处理器上的相机功能。该应用程序允许调整相机的各种设置,例如白平衡、曝光、对焦等。 3. 调试工具链:为了对高通8155相机进行调试,还需要安装适当的调试工具链,例如ADB(Android Debug Bridge),用于与设备进行通信和调试。 4. 相机测试应用程序:除了使用高通提供的QCamera应用程序进行调试外,还可以使用其他相机测试应用程序,用于测试相机的性能和功能。这些应用程序可以帮助识别潜在的问题,并优化相机的性能。 5. 开发者选项:在Android设备的设置中,需要将开发者选项打开,并启用USB调试模式。这样可以将设备连接到计算机上,并使用相应的调试工具进行调试。 请注意,以上列出的软件只是基本的调试工具,实际上还可能需要其他软件和工具,具体取决于开发人员的要求和开发环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值