以问答的形式来理解摄像头框架流程

问:aw_camera.xml中配置的多个摄像头在哪里匹配?

答:sensor.c(vendor)通过iotcl到底层在msm_sensor_driver_probe去获取dtsi中配置的g_sctrl

kernel\msm-3.18\drivers\media\platform\msm\camera_v2\sensor\msm_sensor_init.c

msm_sensor_init_subdev_do_ioctl -> msm_sensor_init_subdev_ioctl -> msm_sensor_driver_cmd -> msm_sensor_driver_probe

问:g_sctrl里面的值什么时候赋值?

答:通过平台driver进来解析dts时复制

kernel\msm-3.18\drivers\media\platform\msm\camera_v2\sensor\msm_sensor_driver.c

msm_sensor_driver_platform_probe -> msm_sensor_driver_parse -> msm_sensor_driver_get_dt_data

问:g_sctrl里面的sensor_i2c_client内容关于i2c通讯部分哪里来的?

答:camera_v2\sensor\cci\msm_cci.c中通过platform_driver_register获取i2c相关的配置,msm_sensor_driver_platform_probe里面会对g_sctrl里面的内容都填充

msm_sensor_driver_platform_probe -> msm_sensor_driver_parse -> msm_sensor_init_default_params -> s_ctrl->sensor_i2c_client->i2c_func_tbl =

&msm_sensor_cci_func_tbl;

问:/dev/media*和/dev/video*和/dev/v4l-subdev*在哪里注册的?

答:kernel\msm-3.18\drivers\media\platform\msm\camera_v2\msm.c代码里注册的*0,匹配msm8937-camera.dtsi里面的qcom,msm-cam

驱动里面注册:msm_probe -> media_device_register(/dev/media*)

->video_register_device -> __video_register_device(里面注册了主设备号81的设备和/sys/class/video4linux/video* v4l-subdev*)

kernel\msm-3.18\drivers\media\platform\msm\camera_v2\sensor\msm_sensor_driver.c里面调用camera_init_v4l2注册了真正的摄像头:

msm_sensor_driver_probe -> msm_sensor_driver_create_v4l_subdev -> camera_init_v4l2 -> media_device_register

问:如何解决 mmm libs提示'sensor_lib.h' file not found 或者ALOGE未定义

答:1.#include <utils/Log.h>

2. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../../../../../mm-camerasdk/sensor/includes/

问:摄像头的两个相关服务代码分别在哪

答:

server:cameraserver

frameworks\av\camera\cameraserver\main_cameraserver.cpp

server:mm-qcamera-daemon

vendor\qcom\proprietary\mm-camera\mm-camera2\server-imaging\server.c

main -> server_process_module_sensor_init -> module_sensor_init(module_sensor.c)-> sensor_init_probe(sensor_init.c) -> sensor_init_xml_probe -> sensor_probe -> sensor_load_library ->

问:为什么mm-qcamera-daemon是32位的应用程序,编译取决哪里?

答:Android.mk加了下面这句所以编译出来是32位的应用程序

LOCAL_32_BIT_ONLY := true

问:vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\sensor\module\sensor.c中调用的ioctrl对应驱动程序的哪里?

答:kernel\msm-3.18\drivers\media\platform\msm\camera_v2\sensor\msm_sensor.c

msm_sensor_subdev_fops_ioctl -> msm_sensor_subdev_do_ioctl -> msm_sensor_subdev_ioctll -> msm_sensor_config32

kernel\msm-3.18\drivers\media\platform\msm\camera_v2\sensor\msm_sensor_driver.c msm_sensor_driver_create_i2c_v4l_subdev中有设置了compat_ioctl32:

问:配置的xml在哪里解析

答:

\vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\chromatix\module\chromatix_manager.c

addLib -> addLib_getSymbol -> load_chromatix (chromatix_sub_module.c)

高通msm8917 37 40(android 7.1) 摄像头框架调用流程相关推荐

  1. Unity 高通AR发布到Android发生黑屏

    这两天在做Unity 高通AR发布到Android的时候发生黑屏现象 后来发觉是不调用摄像头而不是黑屏(所谓黑屏是因为摄像头背景就是黑色的) 最后发觉是高通的文件夹出现错误 重新复制之前备份的一个高通 ...

  2. 高通、猎户机型Android典型bootloader分析

    1.bootloader是什么? 简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一 ...

  3. 使用高通QXDM工具实现Android设备网络制式更改(如仅注册LTE网络)(独家!)

    修改网络制式需要用到高通的QXDM工具,该工具包下载链接如下: 链接:https://pan.baidu.com/s/1rRNicFvlRSstUhka2JSiOg 密码:pssp 具体操作步骤如下: ...

  4. Android驱动之MTP框架与流程

    概要 本文的目的是介绍Android系统中MTP的一些相关知识.主要的内容包括: 第1部分 MTP简介             对Mtp协议进行简单的介绍. 第2部分 MTP框架           ...

  5. 高通Q+A平台 android gcore解析环境搭建

    QNX+LA平台在运行过程中可以在android发生crash的时候生成core文件,本文将会介绍如何搭建环境解析gcore文件. 获取gcore文件 在异常情况下或者LA侧手动触发kernel pa ...

  6. 高通 8917/37 SecueBoot 调试

    文章目录 前言 流程 前言 笔记 流程 cd amss/MSM8917.LA.3.0.1/common/sectools/resources/data_prov_assets/General_Asse ...

  7. (11)高通AP10.4开发者指南——WLAN(2.5 代码流程)

    2.5 代码流程(Code Flow) 这部分讲解一些主要的配置通路.收发数据的通路.下面这些颜色,用于区分不同的模块. 2.5.1配置通路(Configuration Path) WLAN驱动的配置 ...

  8. Android通过ksoap2这个框架调用webservice大讲堂

    昨天有人问我Android怎么连接mysql数据库,和对数据库的操作呀,我想把,给他说说json通信,可是他并不知道怎么弄,哎算了吧,直接叫他用ksoap吧,给他说了大半天,好多零碎的知识,看来还是有 ...

  9. Android通过ksoap2这个框架调用webservice

    WebServices简介 Web services是一种部署在Web上的对象或者组件,能够通过Internet进行调用的应用程序.Web services 建立在以XML为主的开放的web规范技术基 ...

最新文章

  1. mysql+字符串后8位_字符的一字节8位问题
  2. 世界排名前20的大学毕业生去做银行柜员,柜员工资是不是很高?
  3. C# 接受MQTT服务器推送的消息
  4. RabbitMQ服务的安装与使用
  5. 电磁波与电磁信号、生活中的电磁波
  6. [湖南集训] 谈笑风生
  7. 别因为要学的太多反而压垮自己
  8. jQuery特效:实现抽奖
  9. error: ‘VPX_IMG_FMT_RGB32’ undeclared (first use in this function); did you mean ‘VPX_IMG_FMT_NV12’?
  10. 线程池(python)
  11. python 图片(pil库)将两个图片合成一张
  12. 无需 Cookie,把 Python 微博爬虫改写成 Chrome 插件
  13. QQ群发消息怎么发?最全攻略分享
  14. php收藏影视,十个值得收藏的影视资源网站
  15. 《人性的弱点》【美】戴尔 卡耐基 读书笔记
  16. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest
  17. win10 microsoft edge 浏览器收藏夹位置
  18. css美化浏览器滚动条
  19. 【NISP一级】考前必刷九套卷(五)
  20. linux USB虚拟串口设备名的修改

热门文章

  1. 微信公众号支付(JSAPI支付)
  2. springboot 给图片加二维码
  3. 微积分 | 常用等价无穷小的整理 | 清晰
  4. 浏览器输入www.baidu.com
  5. 朗诵素材-《诵四季诗韵,咏师恩师德》
  6. html播放url音乐,什么是正确的音乐播放URL地址
  7. 英语不好能学好Python吗?Python常用英文单词汇总
  8. CSS_03_盒子模型
  9. 【C/C++题目】输入三角形ABC的三个角坐标, 输出三角形ABC的面积
  10. SAS Learning