【Camera Sensor Driver笔记】三、点亮指南之Sensor DTS

2024-04-20 18:04

本文主要是介绍【Camera Sensor Driver笔记】三、点亮指南之Sensor DTS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

== camera sensor 接口配置
xxsensor.cpp  -> xxxsensor.so

CalculateExposure 函数
    pCalculateExposure函数

        (平台)输入参数:
        pCalculateExposureData
            realgain :total gain,ae算法传过来的值或者手动曝光的值
            linecount:经过平台已经转换过的曝光时间
            middlerealgain
            middlelinecount
            shortrealgain
            shortlinecount
             ::作用于shdr
            sensorResolutionIndex
            ...

        输出参数:
        pExposureInfo
            analogRealGain:sensor的模拟gain
            analogRegisterGain:sensor的模拟gain对应的寄存器的值
            digitalRealGain:sensor的数字gain
            digitalRegisterGain:sensor的数字gain对应的寄存器的值
            ISPDigitalGain isp的数字gain
            ...

        
        LineCount = ExposureTime / Tline
        
        
        Tline = HTS * 1 / vt_clk , lineLengthPixelClock(一行要处理多少个pixel) * 1 / VTPixelClock(处理一个pixel的时间)
        
        
        vt_clk = VTS * HTS * FPS, frameLengthLines * lineLengthPixelClock * FPS
        
        
        Tline  = 1 / (VTS * FPS),1/ (frameLengthLines * FPS)
        

FillExposureSettings 函数
    pFillExposureSettings函数

        输入参数:
        pExposureData
            曝光寄存器信息
            analogRealGain:sensor的模拟gain
            digitalRealGain:sensor的数字gain
            ...

        输出参数:
        pRegSettingsInfo
            regSettingCount:sensor的寄存器数量
            regSetting[]:sensor的寄存器数组
            

== Camera Sensor KMD DTS 配置


什么是DTS:DTS是一种用于描述硬件信息的数据结构和语言,它是树状结构的。


bengal-camera-sensor-qrd.dtsi
    camera模组相关硬件描述(sensor,eeprom,actuator,flash,etc)
bengal-camera.dtsi
    平台相关camera硬件描述(ife,ipe,csiphy,csid,cci,etc)


soc 节点(flash,cam-res-mgr)
    &soc {
        led_flash_rear: qcom,camera-flash@0 {
            cell-index = <0>;                          //唯一标号  flash固定标号
            compatible = "qcom,camera-flash";       //和driver匹配,匹配后调驱动probe
                ::struct of_device_id cam_flash_dt_match[] = {
                ::   .compatible = "qcom,camera-flash"
                ::}
            
            flash-source  = <&pmi632_flash0 &pmi632_flash1>;     //引用flash节点,由BSP实现
            torch-source  = <&pmi632_torch0 &pmi632_torch1>;    //引用torch节点,由BSP实现
            switch-source = <&pmi632_switch0 &pmi632_switch1>;     //引用switch节点
            status = "ok"; //ok or disable
        };
        ,,,

        qcom,cam-res-mgr {    //管理GPIO资源,封装kernel API 接口
            compatible = "qcom,cam-res-mgr"; //和driver匹配,probe
            status = "ok"; //ok or disable
        };
    };

cam_cci 节点
actuator
&cam_cci0 {     //平台cci0 控制器
    actuator_rear: qcom,actuator0 {    
        cell-index = <0>;   //唯一标号
        compatible = "qcom,actuator";      //和driver匹配,匹配后调驱动probe
        cci-master = <0>;                 //cci index
        cam_vaf-supply = <&L5P>;        //电源引用节点,由BSP实现
        regulator-names = "cam_vaf";       //电源名称
        rgltr-cntrl-support;             //regulator 精确控制使能
        rgltr-min-voltage = <2800000>;     //最小电压值,单位µV
        rgltr-max-voltage = <2800000>;    //最大电压值,单位µV
        rgltr-load-current = <100000>;     //电流,单位µA
        status = "ok";
    };

    actuator_rear_aux: qcom,actuator1 {
        cell-index = <1>;
        compatible = "qcom,actuator";
        cci-master = <1>;
        cam_vaf-supply = <&L5P>;
        regulator-names = "cam_vaf";
        rgltr-cntrl-support;
        rgltr-min-voltage = <2800000>;
        rgltr-max-voltage = <2800000>;
        rgltr-load-current = <100000>;
        status = "ok";
    };

sensor
    qcom,cam-sensor0 {
        cell-index = <0>;                     //唯一标号slot id ,和 module xml id唯一匹配
        compatible = "qcom,cam-sensor";      //和driver匹配,匹配后调驱动probe
        csiphy-sd-index = <0>;                 //csiphy id, 绑定csiphy,这个sensor用的哪个phy
        sensor-position-roll = <270>;      //会被xml配置覆盖
        sensor-position-pitch = <0>;       
        sensor-position-yaw = <180>;
        actuator-src = <&actuator_rear>;    //绑定actuator节点
        led-flash-src = <&led_flash_rear>;  //绑定flash节点
        eeprom-src = <&eeprom_rear>;      //绑定eeprom节点
        cam_vio-supply = <&L7P>;         //引用IOvdd 节点,由BSP具体实现
        cam_vana-supply = <&L4P>;        //引用Avdd 节点,由BSP具体实现
        cam_vdig-supply = <&L2P>;         //引用Dvdd 节点,由BSP具体实现
        cam_vaf-supply = <&L5P>;          //引用AFvdd 节点,由BSP具体实现
        cam_clk-supply = <&gcc_camss_top_gdsc>; //引用gdsc 时钟,由BSP实现
        regulator-names = "cam_vio", "cam_vana", "cam_vdig",
            "cam_clk", "cam_vaf";            //和上面的cam_ 没有顺序关系
                                            //和下面的rgltr-  有顺序关系
        rgltr-cntrl-support;                //regulator 精确控制使能
        rgltr-min-voltage = <1800000 2800000 1050000 0 2800000>;
        rgltr-max-voltage = <1800000 2800000 1050000 0 2800000>;
        rgltr-load-current = <120000 80000 1200000 0 100000>;
        
        gpio-no-mux = <0>;  //gpio复用
        pinctrl-names = "cam_default", "cam_suspend";   //active, deactive
        pinctrl-0 = <&cam_sensor_mclk0_active
                     &cam_sensor_rear0_reset_active>;  //active  0对应 cam_default
                
        pinctrl-1 = <&cam_sensor_mclk0_suspend
                     &cam_sensor_rear0_reset_suspend>; //deactive  1对应cam_suspend
                
        gpios = <&tlmm 20 0>,  // 平台tlmm pin 20 作为mclk 默认输出低电平
                <&tlmm 18 0>;  // 平台tlmm pin 18 作为reset 默认输出低电平
            
        gpio-reset = <1>;       //指定上面哪一个作为GPIO RESET使用
        gpio-req-tbl-num = <0 1>;    // GPIO 数组index
        gpio-req-tbl-flags = <1 0>;  //GPIO direction, 0:输出,1:输入; mclk作为输入,gpio作为输出
        
        gpio-req-tbl-label = "CAMIF_MCLK0",
                            "CAM_RESET0";
        cci-master = <0>;     //cci总线
        clocks = <&gcc GCC_CAMSS_MCLK0_CLK>;  //引用MCLK节点,由BSP提供具体实现
        clock-names = "cam_clk";   //MCLK时钟名称
        clock-cntl-level = "turbo";   
        clock-rates = <19200000>;  //MCLK时钟频率,19.2M or 24M
        status = "ok";
    };

EEPROM
    eeprom_triple_rear_macro: qcom,eeprom@4 {
        cell-index = <4>;
        compatible = "qcom,eeprom";
        reg = <0x4>;
        cam_vio-supply = <&L6P>;
        cam_vana-supply = <&L4P>;
        cam_clk-supply = <&cam_cc_titan_top_gdsc>;
        regulator-names = "cam_vio", "cam_vana", "cam_clk";
        cci-device = <0>;
        cci-master = <0>;
        qcom,cam-sensor@4 {
            cell-index = <4>;
            compatible = "qcom,cam-sensor";
            reg = <0x4>;
            cam_vio-supply = <&L6P>;
            cam_vana-supply = <&L4P>;
            cam_clk-supply = <&cam_cc_titan_top_gdsc>;
            regulator-names = "cam_vio", "cam_vana", "cam_clk";
            sensor-mode = <0>;
            cci-device = <0>;
            cci-master = <0>;
        }
    }

这篇关于【Camera Sensor Driver笔记】三、点亮指南之Sensor DTS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920948

相关文章

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多