当前位置: 首页 > article >正文

【高通SDM660平台】Camera 驱动 Bringup 实战:从 DTS 配置到 Vendor 模块集成

1. 高通SDM660平台Camera驱动Bringup概述当你拿到一块基于高通SDM660平台的新硬件时Camera驱动的Bringup工作可能会让你感到有些头疼。作为一个在这个领域摸爬滚打多年的工程师我想分享一些实战经验帮助你快速点亮Camera功能并完成基础调试。Camera驱动的Bringup主要分为三个关键步骤DTS配置、Vendor模块集成和功能验证。DTSDevice Tree Source是描述硬件配置的重要文件它定义了Camera相关的传感器、供电、时钟、GPIO和I2C等关键信息。Vendor模块则包含了Sensor库、Chromatix效果参数、马达与闪光灯驱动等专有实现。最后通过编译和初步调试来验证Camera功能是否正常工作。2. DTS配置详解2.1 DTS文件结构与作用在高通SDM660平台中Camera相关的DTS文件主要分布在kernel/msm-4.4/arch/arm64/boot/dts/qcom目录下。这里需要注意arm64目录实际上是arm目录的软链接所以无论你使用哪种架构修改的都是同一套文件。关键的DTS文件包括sdm660.dtsi基础平台配置引入其他Camera相关DTS文件sdm660-camera.dtsi平台Camera硬件配置sdm660-pinctrl.dtsiGPIO引脚控制配置sdm660-camera-sensor-mtp.dtsi具体传感器配置2.2 Sensor节点配置在sdm660-camera-sensor-mtp.dtsi文件中我们需要为每个Camera传感器配置独立的节点。以下是一个典型的后置摄像头配置示例cci { qcom,camera0 { cell-index 0; // 摄像头索引号必须唯一 compatible qcom,camera; reg 0x0; // 寄存器地址通常与索引号一致 qcom,csiphy-sd-index 0; // 使用的CSI PHY接口 qcom,csid-sd-index 0; // 使用的CSI接口 qcom,mount-angle 90; // 传感器安装角度 // 外设引用 qcom,led-flash-src led_flash0; // 闪光灯 qcom,actuator-src actuator0; // 马达 qcom,eeprom-src eeprom0; // EEPROM // 供电配置 cam_vio-supply pm660_l11; // I/O电压 cam_vana-supply cam_avdd_gpio_regulator; // 模拟电压 cam_vdig-supply cam_rear_dvdd_gpio_regulator; // 数字电压 cam_vaf-supply cam_vaf_gpio_regulator; // 自动对焦电压 // GPIO配置 gpios tlmm 32 0, // MCLK tlmm 46 0; // RESET qcom,gpio-reset 1; // 第二个GPIO是RESET引脚 // 其他参数 qcom,sensor-position 0; // 0后置1前置 qcom,sensor-mode 0; // 0后置2D1前置2D qcom,cci-master 0; // 使用的I2C主控制器 status ok; // 启用该设备 }; };2.3 供电配置详解Camera模块通常需要多种电压供电包括AVDD模拟电压为感光区和ADC供电DVDD数字电压为ISP供电VDDIOI/O电压为I2C接口供电VAF自动对焦马达供电供电可以通过PMIC电源管理IC或GPIO控制。以下是GPIO供电的配置示例soc { cam_avdd_gpio_regulator: cam_avdd_fixed_regulator { compatible regulator-fixed; regulator-name cam_avdd_gpio_regulator; regulator-min-microvolt 2800000; // 2.8V regulator-max-microvolt 2800000; enable-active-high; // 高电平使能 gpio tlmm 51 0; // 使用GPIO51控制 vin-supply pm660l_bob; // 输入电源 }; };2.4 闪光灯与马达配置闪光灯和马达是Camera的重要外设它们的配置也包含在DTS中// 闪光灯配置 soc { led_flash0: qcom,camera-flash0 { cell-index 0; compatible qcom,camera-flash; qcom,flash-source pm660l_flash0 pm660l_flash1; qcom,torch-source pm660l_torch0 pm660l_torch1; qcom,switch-source pm660l_switch0; status ok; }; }; // 马达配置 cci { actuator0: qcom,actuator0 { cell-index 0; reg 0x0; compatible qcom,actuator; qcom,cci-master 0; // 使用的I2C主控制器 cam_vaf-supply cam_vaf_gpio_regulator; // 马达供电 qcom,cam-vreg-name cam_vaf; qcom,cam-vreg-min-voltage 2800000; qcom,cam-vreg-max-voltage 3000000; qcom,cam-vreg-op-mode 100000; }; };3. Vendor模块集成3.1 Sensor库文件移植Sensor库文件通常由传感器厂商提供需要放置在vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/libs目录下。以IMX350传感器为例将库文件放入imx350目录确保Android.mk中定义了正确的模块名LOCAL_MODULE : libmmcamera_imx350在device-vendor.mk中添加模块MM_CAMERA libmmcamera_imx3503.2 Chromatix效果参数Chromatix包含了Camera的3AAE/AF/AWB和ISP效果参数这些参数对图像质量至关重要。Chromatix文件需要放在vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/chromatix目录下按照版本号如0310和传感器型号组织。每个Chromatix模块都会编译成独立的库例如libchromatix_imx350_sunny_preview.so预览模式参数libchromatix_imx350_sunny_video.so视频模式参数libchromatix_imx350_sunny_hfr_60.so60fps高速模式参数同样需要在device-vendor.mk中添加所有这些模块。3.3 XML配置文件修改Camera的配置主要通过XML文件实现最重要的两个文件是imx350_sunny.xml定义Chromatix模块与使用场景的映射关系sdm660_camera.xml定义Camera模块的硬件配置以sdm660_camera.xml为例关键配置包括CameraModuleConfig CameraId0/CameraId !-- 与DTS中的cell-index对应 -- SensorNameimx350/SensorName !-- 传感器型号 -- ActuatorNamedw9800/ActuatorName !-- 马达型号 -- EepromNamesony_imx350/EepromName !-- EEPROM型号 -- ChromatixNameimx350_chromatix/ChromatixName !-- Chromatix配置 -- PositionBACK/Position !-- 摄像头位置 -- MountAngle90/MountAngle !-- 安装角度 -- CSIInfo CSIDCore0/CSIDCore !-- CSI接口 -- LaneMask0x1F/LaneMask !-- 使用的数据通道 -- /CSIInfo /CameraModuleConfig3.4 马达与闪光灯驱动马达和闪光灯驱动也需要作为独立模块集成马达驱动通常位于vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/actuator/libs闪光灯驱动位于vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/flash/libs以DW9800马达为例需要在device-vendor.mk中添加MM_CAMERA libactuator_dw98004. 编译与调试4.1 编译检查清单完成所有配置后在编译前建议检查以下内容DTS配置所有传感器的cell-index是否唯一供电配置是否正确电压值、GPIO引脚I2C主控制器分配是否冲突GPIO引脚定义是否正确Vendor配置所有必需的库文件是否已添加XML文件中的传感器名称与实际是否一致Chromatix版本号是否正确0310 for SDM6604.2 常见问题排查在实际调试中你可能会遇到以下问题Camera无法打开检查DTS中的status是否为ok确认供电是否正常测量各电压点检查I2C通信是否正常使用i2c-tools调试图像异常确认Chromatix参数是否正确加载检查MIPI时钟和数据线配置验证传感器初始化序列是否正确自动对焦失效确认马达驱动是否正确加载检查VAF供电是否正常验证I2C通信是否正常4.3 调试技巧使用以下命令查看Camera模块加载情况adb shell cat /proc/kmsg | grep -i camera检查I2C通信adb shell i2cdetect -y 0 # 探测I2C总线0上的设备获取Camera HAL日志adb logcat -s mm-camera在实际项目中我遇到过因为GPIO配置错误导致Camera无法启动的情况。通过仔细检查DTS中的GPIO编号和pinctrl配置最终发现问题是一个GPIO被其他模块占用。这种问题通常会在内核日志中留下线索所以养成查看内核日志的习惯非常重要。

相关文章:

【高通SDM660平台】Camera 驱动 Bringup 实战:从 DTS 配置到 Vendor 模块集成

1. 高通SDM660平台Camera驱动Bringup概述 当你拿到一块基于高通SDM660平台的新硬件时,Camera驱动的Bringup工作可能会让你感到有些头疼。作为一个在这个领域摸爬滚打多年的工程师,我想分享一些实战经验,帮助你快速点亮Camera功能并完成基础调…...

CTFd平台集成MCP协议:AI助手赋能CTF赛事智能运维实践

1. 项目概述:CTFd与MCP的融合实践最近在安全圈和CTF(Capture The Flag,夺旗赛)赛事运维圈子里,一个名为AaryaBhusal/ctfd-mcp的项目引起了我的注意。乍一看,这像是一个针对CTFd平台的插件或扩展&#xff0c…...

国光黑苹果教程:OpenCore完整安装指南,快速打造完美macOS系统

国光黑苹果教程:OpenCore完整安装指南,快速打造完美macOS系统 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 国光黑苹果教程是一个专为新手设…...

SteamAutoCrack:终极指南!如何3步实现游戏免Steam启动?

SteamAutoCrack:终极指南!如何3步实现游戏免Steam启动? 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack SteamAutoCrack是一款专业的游戏自动破解工具…...

从.py到.exe:用PyQt5把你的“Hello World”小程序打包成独立可执行文件(Windows版教程)

从.py到.exe:用PyQt5打造可独立分发的桌面应用全指南 当你用PyQt5完成了一个精美的"Hello World"界面程序,想要分享给朋友或客户时,却发现对方电脑上没有安装Python环境——这种挫败感每个开发者都经历过。本文将带你跨越从开发到分…...

Real-ESRGAN-GUI完整指南:3个技巧让模糊图片变高清的免费AI工具

Real-ESRGAN-GUI完整指南:3个技巧让模糊图片变高清的免费AI工具 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 你是否曾为模糊的老照片感到惋惜?…...

从仿真到实践:三相SPWM并网逆变器的电流环PI参数整定心得(附PSIM波形分析)

从仿真到实践:三相SPWM并网逆变器的电流环PI参数整定实战解析 当你在PSIM中完成开环逆变器仿真后,看着屏幕上完美的SPWM波形,可能会产生一种错觉——并网控制的核心难题已经解决。直到你第一次尝试加入电流环控制,才发现真正的挑战…...

别再折腾路由器了!用Go语言给阿里云/腾讯云域名写个DDNS服务(附完整代码)

用Go语言打造高可靠DDNS服务:从阿里云到腾讯云的完整实践 每次重启光猫后,公网IP地址就像捉迷藏一样消失不见——这种烦恼对于需要远程访问家庭NAS或自建服务器的技术爱好者来说再熟悉不过了。市面上的第三方DDNS工具要么功能臃肿,要么存在隐…...

sed文本处理实战:从基础语法到高阶场景解析

1. 为什么你需要掌握sed? 第一次接触sed时,我也觉得这个命令行工具看起来晦涩难懂。直到有次需要处理一个500MB的日志文件,用文本编辑器直接打开卡死,用Excel根本加载不了,这时候sed只用一行命令就搞定了数据清洗&…...

Webots 机器人仿真平台(一) 从零到一:跨平台安装全攻略

1. Webots机器人仿真平台初探 第一次接触机器人仿真时,我和大多数新手一样茫然。市面上有Gazebo这样知名的仿真工具,但配置复杂得让人望而生畏。直到发现了Webots,这个开源的3D机器人仿真平台,才真正找到了适合初学者的入门利器。…...

别再乱配了!SpringBoot配置文件加载顺序的实战避坑指南(附优先级图解)

SpringBoot配置加载优先级深度解析:从原理到实战避坑 SpringBoot的配置加载机制看似简单,实则暗藏玄机。许多开发者在使用过程中都曾遇到过配置不生效、覆盖关系混乱的问题,尤其是在多环境部署或使用外部配置时。本文将深入剖析SpringBoot配置…...

ROS Melodic下,用Gazebo+ros_control搞定移动底盘+三轴机械臂的联合仿真(附避坑记录)

ROS Melodic下移动底盘与三轴机械臂的Gazebo联合仿真实战指南 当移动底盘遇上机械臂,问题总是比想象中多。上周深夜调试时,我的机械臂突然在Gazebo里表演起了"陀螺旋转",而底盘却纹丝不动——这恰恰是ros_control配置中一个PID参数…...

如何利用本地自动化工具提升英雄联盟游戏体验:3个核心功能详解

如何利用本地自动化工具提升英雄联盟游戏体验:3个核心功能详解 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在英雄联盟的激烈对…...

基于Athena-Public框架的LLM全栈应用开发实践与架构解析

1. 项目概述与核心价值 最近在梳理一些开源项目时,发现了一个名为“Athena-Public”的仓库,作者是winstonkoh87。这个项目名听起来就很有意思,Athena(雅典娜)是智慧女神,一个公开的“智慧”项目&#xff0c…...

联想IdeaPad 310S老本升级记:手把手教你加内存、换固态、装Win10+Ubuntu双系统

联想IdeaPad 310S性能重生指南:从硬件升级到双系统实战 每次打开这台2016年购入的联想IdeaPad 310S,风扇的嘶吼和系统卡顿都让人抓狂。作为一款定位入门级的笔记本,它搭载的i3-6006U处理器和4GB内存早已跟不上现代应用的需求。但直接换新机又…...

程序员裸辞转行网络安全,我只用了 90 天

程序员如何90天成功转行黑客(网络安全)? 有人说:”黑客到底比程序员高在哪,为什么很多人开始转行了“其实黑客都是程序员,但是并不是所有的程序员都是黑客. 从企业和社会需求来看,现在真不缺程…...

告别手动开关!用ESP8266+Arduino实现高精度定时(误差<1秒)的智能插座方案

告别手动开关&#xff01;用ESP8266Arduino实现高精度定时&#xff08;误差<1秒&#xff09;的智能插座方案 在智能家居和物联网项目中&#xff0c;定时控制是最基础却最常被忽视的功能之一。许多开发者都遇到过这样的尴尬&#xff1a;用手机App远程控制电器很方便&#xff…...

Cursor编辑器集成Claude 3:AI双模型编程实战与成本优化指南

1. 项目概述&#xff1a;当AI代码助手遇上你的IDE 最近在开发者圈子里&#xff0c;一个名为“Cursor-Claude-Extension”的开源项目热度持续攀升。简单来说&#xff0c;它是一款为Cursor编辑器设计的扩展插件&#xff0c;核心功能是将Anthropic公司强大的Claude系列模型&#x…...

用STM32F103C8点亮你的第一块LED点阵屏:HUB08接口F3.75单元板保姆级驱动教程

从零玩转STM32驱动LED点阵屏&#xff1a;HUB08接口实战指南 第一次拿到LED点阵屏时&#xff0c;看着密密麻麻的引脚和陌生的HUB08接口&#xff0c;确实容易让人望而生畏。但别担心&#xff0c;本文将带你用最常见的STM32F103C8T6开发板&#xff0c;一步步点亮这块32x64双色点阵…...

别再只会用save了!Matlab fwrite函数实战:手把手教你高效读写二进制文件(附完整代码)

Matlab二进制文件高效读写指南&#xff1a;fwrite函数深度解析与实战 在数据处理领域&#xff0c;二进制文件因其紧凑性和高效性而备受青睐。对于Matlab用户而言&#xff0c;虽然save函数简单易用&#xff0c;但在处理大规模数据或需要跨平台交换时&#xff0c;fwrite函数才是…...

别再乱调了!AUTOSAR DEM中Debounce参数(步长、阈值)的实战配置指南与避坑

AUTOSAR DEM中Debounce参数实战&#xff1a;从电压过压到通讯超时的精准调优 在汽车电子系统的故障诊断中&#xff0c;误报和漏报就像一对难以调和的矛盾体。我曾见过一个项目因为电压过压检测过于敏感&#xff0c;导致车辆在颠簸路面频繁误报故障&#xff1b;也遇到过通讯超时…...

ElevenLabs企业客户成功路径图:从POC验证到年度千万级合同签署的5个不可跳过的合规锚点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs企业客户成功路径图&#xff1a;从POC验证到年度千万级合同签署的5个不可跳过的合规锚点 企业在采用ElevenLabs语音合成平台构建AI客服、无障碍内容生成或本地化语音交付系统时&#xff0c;技…...

AI模型产权保护进入倒计时(仅剩11个月):2026奇点大会强制TEE接入新规解读,3类企业必须在Q3前完成可信推理栈升级

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生可信执行环境&#xff1a;2026奇点智能技术大会TEE for AI 在2026奇点智能技术大会上&#xff0c;TEE for AI&#xff08;AI-Native Trusted Execution Environment&#xff09;正式成为下一代A…...

为什么你的KFServing比别人慢3.8倍?:SITS 2026现场调试实录——AI原生编排中被忽略的4个cgroup v2陷阱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么你的KFServing比别人慢3.8倍&#xff1f;&#xff1a;SITS 2026现场调试实录——AI原生编排中被忽略的4个cgroup v2陷阱 在 SITS 2026 现场压测中&#xff0c;同一 KFServing v0.11.2 集群部署相…...

终极低光照图像数据集ExDark:从实战应用到最新研究进展

终极低光照图像数据集ExDark&#xff1a;从实战应用到最新研究进展 【免费下载链接】Exclusively-Dark-Image-Dataset Exclusively Dark (ExDARK) dataset which to the best of our knowledge, is the largest collection of low-light images taken in very low-light enviro…...

Inter字体性能优化终极指南:如何让你的网页加载速度提升70% [特殊字符]

Inter字体性能优化终极指南&#xff1a;如何让你的网页加载速度提升70% &#x1f680; 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter 你知道吗&#xff1f;一个未优化的字体文件可能让你的网页加载时间增加30%以上&…...

如何在5分钟内完成BepInEx安装:游戏插件框架终极指南

如何在5分钟内完成BepInEx安装&#xff1a;游戏插件框架终极指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款功能强大的游戏插件框架&#xff0c;专为Unity Mono…...

Speechless:你的微博时光机,一键备份珍贵回忆

Speechless&#xff1a;你的微博时光机&#xff0c;一键备份珍贵回忆 【免费下载链接】Speechless 把新浪微博的内容&#xff0c;导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 在数字时代&#xff0c;我们的社…...

46页可编辑PPT | 企业数字化转型总体规划与实践汇报方案

很多企业在数字化转型过程中会遇到一些共同的痛点。比如&#xff0c;数据孤岛问题&#xff0c;不同部门的数据互不相通&#xff0c;导致信息共享困难&#xff1b;业务流程繁琐&#xff0c;效率低下&#xff0c;难以快速响应市场变化&#xff1b;技术更新换代快&#xff0c;现有…...

别再到处找靶场了!一个OWASP BWA虚拟机搞定30+个Web漏洞环境(附SSH连接与MySQL密码修改指南)

OWASP BWA&#xff1a;一站式Web安全实战环境的终极解决方案 对于Web安全初学者和爱好者来说&#xff0c;寻找合适的漏洞靶场往往比学习技术本身更令人头疼。你是否也曾在不同平台间反复切换&#xff0c;下载各种零散的虚拟机镜像&#xff0c;只为练习一个简单的SQL注入或XSS漏…...