
简介这份驱动资源面向瑞芯微RK3288平台的嵌入式开发与摄像头调试人员针对XC6130搭配OV2710双摄模组在Android或Linux系统下的驱动适配问题提供可直接参考的源码与配置方案。压缩包共5个文件以2个C源文件与1个头文件构成驱动核心逻辑另含1个Android.mk编译脚本和1个cam_board_rk3288.xml板级配置文件整体仅26KB结构精简、便于快速移植与二次修改。内容覆盖XC6130的寄存器初始化、OV2710传感器对接以及RK3288摄像头板级参数定义适合需要打通底层采集链路、排查I2C通信与上电时序的开发者。已有140人学习下载可作为RK3288平台多摄驱动调试的入门与排错参考帮助读者理解驱动编译集成与板级配置的对应关系缩短从源码到实际出图的验证周期。1. xc6130 与 ov2710 在 RK3288 Android 上的驱动适配从 tar.gz 到出图手头拿到一个xc6130_ov2710_driver.tar.gz要在 RK3288 的 Android BSP 上把 xc6130 这颗摄像头传感器点亮输出 ov2710 规格的图像——这个场景在平板、广告机、人脸识别终端、工业视觉盒子上非常常见。RK3288 是瑞芯微早年出货量极大的四核 Cortex-A17 平台Android 5.1/7.1 的 BSP 至今仍在大量存量设备上跑而 ov2710 是一颗 200 万像素、MIPI 接口的经典 sensorxc6130 则是配套的 ISP 或桥接芯片方案。标题里这几个词连在一起本质就是一件事在旧平台上把一颗非原厂默认支持的 sensor 驱动编进内核、配对 DTS、打通 V4L2 链路、让 Android 相机 HAL 能出图。适合正在维护 RK3288 存量设备、需要替换或新增摄像头的嵌入式工程师也适合刚接手一份来路不明的驱动包、不知道从哪下手的同学。下面按我实际调通的顺序讲。2. 先搞清楚驱动包里到底有什么解包、目录结构与 RK3288 内核的对接点拿到 tar.gz 第一件事不是急着编译而是看清楚里面装了什么。这类驱动包通常包含 sensor 驱动源码、DTS 配置片段、可能的 ISP 固件、以及一份语焉不详的说明。RK3288 的 camera 驱动走的是标准 V4L2 Rockchip 自己的 cif/isp 框架所以驱动文件最终要落到内核源码树的drivers/media/i2c/下面。2.1 解包与目录结构判读# 解包到独立目录避免污染内核树 mkdir -p ~/xc6130_work tar -zxvf xc6130_ov2710_driver.tar.gz -C ~/xc6130_work cd ~/xc6130_work find . -maxdepth 3 -type f | head -50解出来常见是这么几类文件xc6130.c/ov2710.c这样的 sensor 驱动*.dtsi或*.dts的配置片段可能还有Makefile、Kconfig补丁以及README。先find一遍看全貌再file一下确认没有二进制固件混在里面。如果包里带.bin固件那多半是 xc6130 这颗桥接/ISP 芯片要加载的初始化数据后面 DTS 里要配 firmware 节点。判读要点驱动源码里找#include media/v4l2-subdev.h和struct v4l2_subdev_ops有这两个基本确认是标准 V4L2 subdev 驱动找of_match_table看它期望的 compatible 字符串这个字符串必须和 DTS 里写的一致否则 probe 根本不进。2.2 把驱动挂进 RK3288 内核树RK3288 的 Android 内核一般是 3.10 或 4.4路径在kernel/drivers/media/i2c/。把驱动文件拷进去然后改 Makefile 和 Kconfig。# 假设内核树在 ~/rk3288/kernel cp ~/xc6130_work/*.c ~/rk3288/kernel/drivers/media/i2c/ # 编辑 Makefile追加编译项 echo obj-$(CONFIG_VIDEO_XC6130) xc6130.o ~/rk3288/kernel/drivers/media/i2c/MakefileKconfig 里加一段config VIDEO_XC6130 tristate xc6130/ov2710 sensor support depends on I2C VIDEO_V4L2 help Support for xc6130 bridge with ov2710 sensor on Rockchip platforms.逻辑说明obj-$(CONFIG_...)这种写法让驱动受内核配置开关控制方便在 defconfig 里一键开关。参数上tristate允许编成模块或内置摄像头驱动一般直接y编进内核避免 Android 启动阶段模块加载时序问题。改完记得在arch/arm/configs/rockchip_defconfig里加CONFIG_VIDEO_XC6130y否则编译时这段代码根本不参与。提示RK3288 的 3.10 内核和 4.4 内核在 media 框架上差异不小3.10 用的是老的soc_camera风格残留 rockchip 私有 cif4.4 更接近标准 media controller。先确认你的 BSP 版本再决定驱动要不要做适配别拿 4.4 的驱动直接往 3.10 上怼。3. DTS 配置与 I2C 地址让内核 probe 到 xc6130 这颗芯片驱动编进去只是第一步内核能不能找到这颗芯片、能不能正确上电、时钟给多少、MIPI 几 lane全在 DTS 里。RK3288 的 camera 相关节点分布在arch/arm/boot/dts/rk3288.dtsi和板级rk3288-xxx.dts里。3.1 I2C 节点与地址确认xc6130 通常挂在一路 I2C 上做寄存器配置ov2710 可能直接由 xc6130 桥接也可能自己再挂一路 I2C。先确认硬件原理图上的 I2C 总线和 7 位地址。i2c2 { status okay; clock-frequency 400000; xc6130: xc613030 { compatible rockchip,xc6130; reg 0x30; clocks cru SCLK_CIF_OUT; clock-names xvclk; power-domains power RK3288_PD_VI; pinctrl-names default; pinctrl-0 cif_clk; reset-gpios gpio7 12 GPIO_ACTIVE_LOW; port { xc6130_out: endpoint { remote-endpoint mipi_in; >mipi_csi { status okay; port { mipi_in: endpoint { remote-endpoint xc6130_out; >cd ~/rk3288/kernel make ARCHarm rockchip_defconfig make ARCHarm rk3288-xxx.img -j8 # 板级目标按实际改逻辑说明rockchip_defconfig会带上你加的CONFIG_VIDEO_XC6130y。编译产物里kernel.img、resource.img含 dtb要一起烧。如果编译报undefined reference to xxx多半是驱动里用了某个内核没开的 API回去查 Kconfig 依赖。4.2 上电后看 dmesg 确认 probeadb shell dmesg | grep -iE xc6130|ov2710|mipi|cif正常应该看到类似xc6130 2-0030: Detected ov2710 sensor和xc6130: probe success。如果只有 I2C 通信失败先量 I2C 波形、确认上拉电阻和地址如果 probe 进了但读 chip id 失败多半是上电时序或 reset 脚问题。4.3 用 v4l2-ctl 抓帧验证adb shell v4l2-ctl --list-devices adb shell v4l2-ctl -d /dev/video0 --list-formats-ext adb shell v4l2-ctl -d /dev/video0 --set-fmt-videowidth1920,height1080,pixelformatNV12 \ --stream-mmap --stream-count1 --stream-to/data/test.yuv参数说明--list-formats-ext看驱动上报支持的分辨率和格式如果这里空的说明驱动没正确注册 format回去查enum_fmt实现。--stream-count1抓一帧存成 yuv拉回来看能不能正常解码出画面。这一步能出图说明 V4L2 链路通了剩下就是 Android HAL 层的事。5. 避坑与排查xc6130/ov2710 适配里最容易翻车的 5 个点这一章全是血泪经验每条按现象、原因、解决写遇到问题对号入座。现象一dmesg 里完全没有 xc6130 相关日志。原因驱动没编进内核或者 DTS 节点 status 不是 okay或者 compatible 字符串不匹配。解决先grep CONFIG_VIDEO_XC6130 .config确认配置生效再确认 DTS 里节点名和of_match_table里的字符串逐字符一致最后确认 dtb 真的更新了。现象二probe 报 I2C 读写失败。原因I2C 地址错、上拉电阻没焊、或者 sensor 没上电。解决用示波器量 SCL/SDA确认地址和原理图一致检查供电和 reset 时序很多模块 reset 脚要拉低再拉高才有响应。现象三probe 成功但/dev/video节点不出现。原因media 链路没建起来或者 cif/isp 节点没开。解决检查mipi_csi和cif的 status确认 endpoint 双向引用正确必要时用media-ctl -p打印拓扑看链路。现象四能抓帧但画面花屏、颜色错乱。原因MIPI lane 映射错、data-lanes 数量不对、或者像素格式配错。解决对照原理图确认 lane 顺序DTS 两边 style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;" />