news 2026/9/29 16:00:34

RV1103B平台SC132GS全局快门Sensor设备树配置避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RV1103B平台SC132GS全局快门Sensor设备树配置避坑指南

1. 为什么SC132GS在RV1103B上值得单独写一篇避坑指南

SC132GS这颗Sensor在RV1103B平台上属于典型的"看起来简单、配起来要命"的器件。它是一颗132万像素的全局快门CMOS图像传感器,MIPI CSI-2接口输出,常见于智能车视觉、工业扫码、机器视觉这类对运动模糊敏感的场景。RV1103B则是瑞芯微面向低功耗IPC和AI视觉终端推出的SoC,内置NPU、ISP和MIPI CSI接收控制器,主打的就是"小体积+低功耗+能跑轻量AI模型"。

把这两者凑到一起,理论上是很自然的组合:Sensor出图,SoC接收、处理、编码。但实际动手你会发现,设备树(Device Tree)这一关就能卡住不少人。原因不复杂——RV1103B的DTS文件结构、I2C挂载方式、MIPI CSI端口映射、时钟与复位GPIO的写法,跟RK3568、RK3588那套有相似之处但细节差异不小,网上能直接抄的完整示例又少。很多人第一次配的时候,要么I2C探测不到设备,要么Media Controller里看不到entity,要么出图花屏、绿屏、只有一半画面。

这篇内容就是把我自己在RV1103B上给SC132GS加设备树节点的完整过程拆开讲。适合两类人看:一类是刚拿到RV1103B开发板、想把SC132GS点亮的嵌入式新手;另一类是从RK3568/RK3588平台转过来、被"看起来差不多"的DTS坑过的老手。我会把每个节点为什么这么写、参数怎么算、哪些地方最容易翻车都讲清楚,尽量让你少走我走过的弯路。

需要提前说明的是,不同厂家的RV1103B核心板/开发板在GPIO编号、I2C总线号、MIPI CSI lane分配上可能有差异,下面给出的具体数值以我手头这块板子的原理图为准,你移植时一定要对照自己的原理图改。这是嵌入式调试的铁律,没有之一。

2. 动手前必须搞清楚的硬件与软件前提

2.1 硬件连接关系先理一遍

在写任何一行DTS之前,我习惯先把硬件关系画在纸上。SC132GS和RV1103B之间的连接无非这么几组:

  • 供电:Sensor通常需要几路电源,SC132GS常见的是AVDD(模拟,约2.8V)、DVDD(数字核心,约1.2V)、DOVDD(IO,1.8V或2.8V)。这些一般由板载LDO或PMIC提供,DTS里通常不需要你直接管,但要知道它们存在,因为供电不对一切免谈。
  • I2C:用于读写Sensor寄存器,SC132GS的7位从地址常见为0x30(写0x60/读0x61)。它挂在RV1103B的某一路I2C上,具体哪一路看原理图。
  • MIPI CSI-2:图像数据通道,包含1对或2对差分数据lane加1对时钟lane。SC132GS常见配置是2 lane。
  • MCLK:主时钟输入,通常由SoC的某个时钟输出引脚提供,频率常见24MHz。
  • 复位(RESET)和电源使能(PWDN):两个GPIO,用于上电时序控制。
  • 中断(可选):有些设计会接,但SC132GS在很多应用里用轮询或直接流式采集,不一定用中断。

这几组里,I2C、MIPI、MCLK、GPIO是DTS里必须体现的,缺一个都点不亮。

2.2 软件环境与内核版本确认

RV1103B的SDK一般基于Linux 5.10或相近版本的内核,瑞芯微的BSP里已经带了完整的V4L2 + Media Controller框架和Rockchip ISP驱动(rkisp)。你需要确认几件事:

  • 内核版本:uname -r,或者直接看SDK里的Makefile。
  • 设备树目录:通常在arch/arm/boot/dts/(RV1103B是ARM Cortex-A7,32位)或者arch/arm64/boot/dts/rockchip/,具体看SDK组织方式。RV1103B是32位核,所以大概率在arch/arm/boot/dts/下。
  • 是否已有类似Sensor的DTS示例:SDK里一般会带sc3336、gc2053之类的参考,这些是你最好的模板。

我强烈建议先grep一下SDK里现成的Sensor节点,比如:

grep -rn "sc3336" arch/arm/boot/dts/

找到参考文件后,整个移植过程就变成了"照着改",而不是"从零编"。这一步能省你至少半天时间。

2.3 确认I2C地址和MIPI lane数

这两个参数如果搞错,后面所有调试都是白费。确认方法:

  • I2C地址:查SC132GS数据手册,或者用i2cdetect在总线上扫。前提是Sensor已经上电且MCLK有输出,否则扫不到。
  • MIPI lane数:看原理图,SC132GS的MIPI输出lane数由寄存器配置决定,但硬件上走几对差分线是固定的。DTS里的>&i2c3 { status = "okay"; clock-frequency = <400000>; sc132gs: sc132gs@30 { compatible = "smartsens,sc132gs"; reg = <0x30>; clocks = <&cru CLK_MIPI_CAMARAOUT_M2>; clock-names = "xvclk"; power-domains = <&power RV1103B_PD_VI>; pinctrl-names = "default"; pinctrl-0 = <&mipim0_camera2_clk>; reset-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; pwdn-gpios = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>; rockchip,grf = <&grf>; rockchip,camera-module-index = <0>; rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "SC132GS"; rockchip,camera-module-lens-name = "default"; port { sc132gs_out: endpoint { remote-endpoint = <&mipi_in_sc132gs>; >reset-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; pwdn-gpios = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;

    这两行的关键是极性。GPIO_ACTIVE_LOW表示低电平有效,也就是驱动拉低这个GPIO时执行复位。GPIO_ACTIVE_HIGH表示高电平有效。极性搞反,Sensor要么一直复位,要么一直掉电。

    确认极性的方法:查原理图,看复位引脚是接上拉还是下拉,以及Sensor手册里复位是低有效还是高有效。SC132GS一般是复位低有效、PWDN高有效,但不同模组设计可能不同。

    3.6 port/endpoint:MIPI链路描述

    port { sc132gs_out: endpoint { remote-endpoint = <&mipi_in_sc132gs>; >&mipi_csi2 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; mipi_in_sc132gs: endpoint@0 { reg = <0>; remote-endpoint = <&sc132gs_out>; >&rkisp { status = "okay"; ports { port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; isp_in: endpoint@0 { reg = <0>; remote-endpoint = <&mipi_csi2_out>; }; }; }; };

    这样整条链路就是:SC132GS -> MIPI CSI2 -> ISP -> 视频节点(/dev/videoX)。任何一环断了,media-ctl -p都能看出来。

    4.4 用media-ctl验证链路

    DTS编译烧录后,第一件事不是急着出图,而是验证Media Controller链路:

    media-ctl -p

    正常的话,你应该能看到类似这样的拓扑:

    - entity 1: sc132gs 0-0030 (1 pad, 1 link) pad0: Source -> "rockchip-mipi-csi2":0 [ENABLED] - entity 2: rockchip-mipi-csi2 (2 pads, 2 links) pad0: Sink <- "sc132gs 0-0030":0 [ENABLED] pad1: Source -> "rkisp-isp-subdev":0 [ENABLED]

    如果某个link显示[IMMUTABLE]或者根本没出现,说明DTS里的remote-endpoint没对上。如果entity出现了但link是disabled,可能是status没设成okay。

    5. 实操全流程:从改DTS到出图

    5.1 第一步:找到并修改板级DTS

    假设你的板级DTS是rv1103b-myboard.dts,先确认它include了SoC级的dtsi:

    #include "rv1103b.dtsi"

    然后在文件末尾添加或修改I2C、MIPI CSI、ISP相关节点。我习惯把Sensor节点放在I2C节点内部,MIPI和ISP的修改放在文件靠后的位置,保持结构清晰。

    5.2 第二步:编译设备树

    RV1103B SDK一般用make加dtb目标:

    make ARCH=arm rv1103b-myboard.dtb

    或者直接编译整个内核:

    make ARCH=arm -j$(nproc)

    编译报错最常见的是语法问题,比如少了大括号、#address-cells写错、引用了不存在的label。DTC的报错信息一般比较明确,照着改就行。

    5.3 第三步:烧录并检查probe

    烧录dtb后重启,看内核日志:

    dmesg | grep -iE "sc132gs|mipi|csi|rkisp"

    正常应该看到:

    sc132gs 3-0030: probing... sc132gs 3-0030: Detected SC132GS sensor, id(0x1326) rockchip-mipi-csi2: probe success rkisp: probe success

    如果看到probe failed或者根本没有sc132gs的日志,说明compatible没匹配上,或者I2C没通。

    5.4 第四步:I2C手动验证

    在probe之前,可以先手动确认I2C:

    i2cdetect -y 3

    如果0x30位置显示30,说明I2C通了。显示--说明没通,回去查MCLK、复位、供电。

    5.5 第五步:配置Media Controller并出图

    链路验证通过后,用v4l2-ctl配置格式并抓帧:

    media-ctl -d /dev/media0 --set-v4l2 '"sc132gs 3-0030":0[fmt:SBGGR10_1X10/1280x720]' media-ctl -d /dev/media0 --set-v4l2 '"rockchip-mipi-csi2":0[fmt:SBGGR10_1X10/1280x720]' v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=BG10 v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=10 --stream-to=frame.raw

    抓到的raw帧可以用工具转成图片查看。如果图正常,恭喜你,DTS配置成功。

    5.6 参数选择记录表

    下面是我这次配置的关键参数记录,供对照:

    参数值说明
    I2C总线i2c3对照原理图
    I2C地址0x307位地址
    MCLK源CLK_MIPI_CAMARAOUT_M2对应物理引脚
    MCLK频率24MHzSensor手册要求
    复位GPIOgpio1 PB0低有效
    PWDN GPIOgpio1 PB1高有效
    >
    版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
    网站建设 2026/9/29 15:59:23

    2026辽宁铝木窗选购指南:从保温原理到源头工厂避坑要点

    2026年辽宁铝木窗选购&#xff0c;听起来像是个装修小决定&#xff0c;但我在沈阳和大连跑了十几家门窗厂之后&#xff0c;可以负责任地说一句&#xff1a;这件事的坑&#xff0c;远比大多数人想象得多。就拿去年冬天来说&#xff0c;我一位朋友家新装的断桥铝窗&#xff0c;窗…

    作者头像 李华
    网站建设 2026/9/29 15:58:53

    基于STM32的智能鸽舍系统:抗干扰电路与嵌入式驯养实践

    1. 项目概述&#xff1a;这不是玩具&#xff0c;是鸽舍里的“智能管家”你见过给鸽子装智能手环的吗&#xff1f;不是那种贴在腿上、三天就掉的装饰品&#xff0c;而是真正嵌入鸽舍结构、能实时感知鸽群状态、自动调节环境、记录个体行为、甚至干预异常活动的一整套硬件系统。这…

    作者头像 李华
    网站建设 2026/9/29 15:58:50

    OpenCV分水岭算法与形态学后处理:粘连目标分割优化实战

    简介&#xff1a;这份316页的PDF文档面向具备一定OpenCV基础的图像处理学习者与算法工程师&#xff0c;聚焦分水岭算法与形态学后处理相结合的图像分割优化方案&#xff0c;帮助解决传统分水岭算法过分割严重、区域边界不精确等实际痛点。文档共50个大章节&#xff0c;从图像分…

    作者头像 李华
    网站建设 2026/9/29 15:57:07

    制造业供应链成熟度评估模型与集成计划流程框架落地指南

    简介&#xff1a;这份PPT资料面向制造业集团供应链管理者、计划与运营岗位从业者&#xff0c;聚焦供应链管理成熟度评估与集成计划流程框架搭建。内容围绕多种订单组织方式并存、计划模式规则不清、集成计划以职能为中心、采购执行多部门多窗口等痛点&#xff0c;给出顶层设计、…

    作者头像 李华
    网站建设 2026/9/29 15:56:50

    PHP+uniapp高校社团管理小程序开发全流程详解

    我在接到这个高校社团管理小程序的需求时&#xff0c;第一反应不是列技术清单&#xff0c;而是先想清楚一件事&#xff1a;这个系统到底是给谁用的&#xff0c;大学里一个社团从招新到日常运营&#xff0c;到底有哪些环节是真正需要被“管理”起来的?如果只做一个“社团介绍活…

    作者头像 李华

    关于博客

    这是一个专注于编程技术分享的极简博客,旨在为开发者提供高质量的技术文章和教程。

    订阅更新

    输入您的邮箱,获取最新文章更新。

    © 2025 极简编程博客. 保留所有权利.