[Linux Camera Driver] 开机之后获取camera型号方法

清理Log与解析相机分辨率
本文介绍如何使用adb命令清理Android设备的日志(log),并详细展示了如何通过特定命令抓取和解析摄像头传感器的分辨率信息。

1. 清一下log

adb logcat -c //开机之后,先清一下log,

adb shell

logcat |grep ‘res:’

2. logcat |grep ‘res:’

之后打开骁龙,切换前后摄,就会有如下类似log:

130|sdm660_64:/ # logcat |grep 'res:'
01-01 13:08:14.715   709  3954 I mm-camera: 
<think>好的,我现在需要回答用户的问题:“高通camera驱动 开机后会注册驱动几次”。首先,我需要回忆高通相机驱动的注册流程,特别是在Android或Linux系统中的驱动加载机制。 首先,高通的相机驱动通常分为几个部分:传感器驱动(camsensor)、ISP驱动(如qcom_cpp、qcom_isp)、以及可能的子模块(如EIS、PD对焦等)。用户的问题主要关注的是“驱动注册次数”,所以需要明确“注册”在这里指的是驱动模块的初始化和向内核或HAL的注册过程。 在Linux内核中,驱动的注册通常由模块的初始化函数(如`module_init`)触发,一般情况下,每个驱动模块只会注册一次,除非有特殊的设计(如热插拔)。但高通的相机驱动可能涉及多个设备节点或多个传感器,这可能影响注册次数。 接下来,考虑传感器驱动的注册。高通的传感器驱动通常以平台驱动(platform driver)的形式存在,通过设备树(Device Tree)中的节点匹配。如果设备树中定义了多个传感器节点(例如主摄、超广角、长焦等),每个传感器对应的驱动会分别注册一次。例如,如果设备树中有三个传感器节点(sensor0, sensor1, sensor2),那么传感器驱动可能会为每个节点注册一次,导致多次注册。 另外,ISP驱动(如图像信号处理器驱动)通常作为单一驱动注册,因为硬件中可能只有一个ISP单元。但如果有多个ISP实例(如某些高端芯片),可能会有多次注册,但这种情况较少。 还需要考虑驱动的热插拔机制。如果相机支持热插拔(如外接USB相机),驱动可能在检测到设备插入时再次注册,但高通的内置相机传感器通常是固定的,开机时只注册一次。 此外,驱动的注册可能涉及多个阶段:比如先注册基础框架(如qcom_camera2),然后注册具体的传感器和子模块。但每个具体的驱动模块(如传感器驱动)的`probe`函数通常只会被调用一次 per device。 总结可能的情况:如果设备有N个相机传感器(由设备树定义),则传感器驱动会注册N次;ISP等其他驱动通常注册一次。因此,开机后驱动注册的次数取决于硬件中相机设备的数量(传感器数量)以及驱动的设计。 需要验证这一点,可能需要参考高通的相机驱动代码,例如`camsensor`驱动的`probe`函数是否会被多次调用,对应设备树中的每个传感器节点。通常,平台驱动通过`of_match_table`匹配设备树节点,每个匹配的节点会触发一次`probe`,即注册一次。 因此,用户的问题答案可能是:高通相机驱动(主要指传感器驱动)的注册次数取决于设备树中定义的相机传感器数量,每个传感器节点会触发一次驱动注册;ISP等其他驱动通常注册一次。 </think>在高通(Qualcomm)平台的Linux/Android系统中,相机驱动的注册次数主要取决于**硬件架构设计**和**设备树(Device Tree)中的相机设备节点数量**。通常,开机后驱动的注册次数与**物理相机传感器的数量**直接相关,以下是具体分析: ### 一、驱动注册的核心机制 高通相机驱动采用**Linux平台驱动模型**(Platform Driver Model),驱动通过`platform_driver`结构体注册,并通过设备树(`.dts`/`.dtsi`)中的设备节点(`device node`)匹配触发注册。 - **驱动注册入口**:驱动的`probe`函数(探测函数)会在设备树节点与驱动的`of_match_table`(设备匹配表)匹配时被调用,完成驱动初始化和硬件注册。 - **关键结论**:**每匹配一个设备树中的相机设备节点,驱动的`probe`函数就会执行一次,即完成一次驱动注册**。 ### 二、注册次数的决定因素:设备树中的相机节点数量 高通平台的设备树通常会为每个物理相机传感器(如主摄、超广角、长焦、ToF等)定义独立的设备节点。例如,一个包含3个传感器的手机,设备树中可能有以下节点: ```dts /* 设备树示例(简化) */ camera@0 { /* 主摄,ID=0 */ compatible = "qcom,camera-sensor"; reg = <0>; /* 传感器I2C地址或ID */ ... }; camera@1 { /* 超广角,ID=1 */ compatible = "qcom,camera-sensor"; reg = <1>; ... }; camera@2 { /* 长焦,ID=2 */ compatible = "qcom,camera-sensor"; reg = <2>; ... }; ``` 每个`camera@X`节点会触发一次传感器驱动的`probe`函数调用,因此**注册次数等于设备树中定义的相机传感器节点数量**。 ### 三、典型场景下的注册次数 #### 1. 单摄像头设备 若设备仅包含1个物理传感器(如入门级手机的单摄),设备树中仅有1个`camera`节点,驱动的`probe`函数执行1次,**注册1次**。 #### 2. 多摄像头设备(主流手机) 当前主流手机通常配备2~4个物理传感器(主摄+超广角+长焦+微距/ToF),设备树中对应2~4个`camera`节点,驱动的`probe`函数会**依次触发2~4次注册**(顺序由设备树节点顺序或内核枚举顺序决定)。 #### 3. ISP等辅助驱动的注册 除传感器驱动外,高通相机系统还包含ISP(图像信号处理器)、CPP(摄像头预处理)等辅助驱动。这些驱动通常对应硬件中的单一模块(如芯片级ISP),因此设备树中仅定义1个节点,**仅注册1次**。 ### 四、特殊情况:重复注册或异常 #### 1. 驱动兼容性问题 若设备树中的多个节点错误地使用了相同的`compatible`属性(如均为`qcom,camera-sensor`),且驱动未正确区分设备ID(如`reg`值),可能导致驱动对同一传感器重复注册(如`probe`函数被多次调用)。 #### 2. 热插拔场景 部分特殊设备(如支持外接相机的平板)可能通过USB或其他接口支持热插拔相机。此时,当外接相机插入时,内核会检测到新的设备节点,触发驱动的`probe`函数再次执行,**额外注册**。但高通内置相机(如手机主摄)通常不涉及热插拔,开机仅注册一次。 ### 五、验证方法 通过内核日志(`dmesg`)可直接观察驱动注册次数。例如,传感器驱动的`probe`函数通常会打印调试日志(如`camsensor_probe: sensor 0 probed`): ```bash dmesg | grep -i "camsensor.*probed" # 查看传感器驱动probe日志 ``` 日志中每条记录对应一次驱动注册,数量即为设备树中的相机节点数。 ### 总结 高通相机驱动(主要指传感器驱动)的注册次数由设备树中定义的相机传感器节点数量决定,每匹配一个节点触发一次注册。主流多摄设备通常注册2~4次,单摄设备注册1次;ISP等辅助驱动仅注册1次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值