Jetson 定制摄像头启动
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/jetson-customize-camera。
技能介绍
问题背景
在 Tegra264(Thor)和 Tegra234(Orin)上,摄像头由 NVCSI 前端和固定 CSI 端口驱动的 tegra-capture-vi 控制器负责采集。定制载波板常见现象是:系统能烧录,但 v4l2-ctl --list-devices 里看不到 tegra-capture-vi 通道,或新子卡上的传感器无法枚举。多路传感器并存时,设备树片段若合并不当,还会出现「通道初始化失败」或摄像头静默不工作。
技能如何工作
本技能走代理驱动路径:运行时通过通配符匹配树内各传感器的 .dtbo 构建支持列表,不维护静态传感器字典或表格问卷。核心产出是一个提交——把摄像头 fragment@N(及复合根上缺失的 jetson-header-name)按 BSP 内核-DT 覆盖层规范追加到复合自定义覆盖层 .dts,再提交到 bsp_sources/ 硬件仓库;/jetson-build-source 负责编译 .dtbo 与 OVERLAY_DTB_FILE 注册。
典型流程包括:
- 传感器选择:只从活跃平台上 NVIDIA 树内
.dtsi引用中选取,不发明型号。 - 载波板与模块校验:对照摄像头开发指南、适配指南 §摄像头、原理图、TRM 与引脚映射;DTSI 是接线的事实来源。
- 覆盖层生成与验证:对树内 DTSI 做
cpp展开,或按定制路径拼接接线答案与模式表;用dtc、fdtoverlay做预编译与深层树唯一性门控。 - 引脚 SFIO 校验:通过
pin_verifier.py检查 CAM I²C、MCLK、复位等;不匹配时路由到/jetson-customize-pinmux。
摄像头不消耗 UPHY 通道,技能不编辑 ODMDATA,也不直接改载波板烧录配置中的 overlay 注册行(由构建技能拥有)。
适用与边界
适合在用户要求「启用摄像头」「配置 CSI」「连接 Hawk/Owl/IMX」「MIPI/GMSL 摄像头」,或在已有传感器基础上追加第二路时调用。前置需已完成 /jetson-init-source、/jetson-derive-carrier,且 bsp_sources 中已有树内传感器 .dtsi 与 dt-bindings 头文件。须避免双摄像头 fragment、同时注册树内 per-sensor dtbo 与自定义覆盖层、以及只有 tegra-capture-vi { status = "okay"; } 的存根覆盖层——这些都会导致枚举失败或重复子树被丢弃。
使用场景
- 定制载波板烧录后 `v4l2-ctl --list-devices` 无 tegra-capture-vi,需按树内 DTSI 生成并验证复合摄像头 overlay。
- 同板已启一路传感器,要在不破坏深层 DT 唯一性的前提下追加 Hawk、Owl 或 IMX 等第二路 CSI。
- 新子卡接 GMSL 串行器摄像头,需对照开发指南、原理图与引脚映射拼接 fragment 并提交 bsp_sources。
- 口头要求「配置 CSI / 启用 MIPI 摄像头」,且活跃配置含 custom_carrier,需走完整接线表确认与 cpp 展开流程。
适合人员
- 维护 Linux_for_Tegra 与 bsp_sources 的 Jetson 平台工程师,要把 NVCSI 传感器枚举落到自家载波板 overlay 仓库。
- 负责 Orin/Thor 摄像头子系统 bring-up 的硬件工程师,需用 pin_verifier 核对 CAM I²C、MCLK 与复位 GPIO 的 SFIO 路由。
- 已跑完 jetson-derive-carrier、下一步要追加摄像头 fragment 并交给 jetson-build-source 编译 dtbo 的 BSP 集成开发者。
- 排查「all channel init failed」或 regulator null 的嵌入式调试人员,需区分存根 overlay、双 fragment 与模式表未从 DTSI 逐字复制等问题。