jetson-customize-cameraSkill jetson-customize-camera

用于在Jetson Thor或Orin定制载板上定制摄像头CSI/MIPI/GMSL传感器,通过内核设备树叠加层启用传感器枚举。支持传感器选择、载板/模块支持检查、布线验证、叠加层生成与验证,并触发引脚验证及后续流程。关键词:Jetson、CSI、MIPI、GMSL、摄像头、传感器、内核设备树叠加层、BSP硬件定制。

硬件定制 0 次安装 0 次浏览 更新于 9/6/2026
名称 jetson-customize-camera
描述 >- 在Jetson Thor或Orin定制载板上,通过从树内传感器DTSI呈现内核设备树叠加层来启用MIPI/GMSL摄像头传感器。不要用于UPHY通道分配或ODMDATA编辑。
版本 0.0.1
开源协议 “Apache-2.0” metadata: data-classification: public
作者 “Jetson Team” tags: - bsp - phase-2 - io - camera - csi domain: meta

定制摄像头(CSI / MIPI / GMSL 传感器引入)

概述

Tegra264(Thor)和Tegra234(Orin)暴露一个由NVCSI和一组固定CSI端口前端驱动的tegra-capture-vi控制器。摄像头引入流程为:

  1. 传感器选择 — 从当前活动平台自带的传感器.dtsi引用集合中选取。
  2. 载板 + 模块支持检查 — 对照摄像头开发指南、适配指南 §Camera、载板原理图、模块TRM和载板引脚映射进行验证。
  3. 布线 — 当存在tegra<soc>-camera-<sensor>*.dtsi时,从该树内文件中导出(DTSI是布线的唯一事实来源);对于定制传感器,则由用户按传感器捕获。
  4. 内核DT叠加层 — 用cpp展开树内DTSI,提取其fragment@N主体,追加到活动目标的自定义叠加层复合.dts中(参见../../references/bsp-customization-kernel-dtb.md),然后用fdtoverlay验证复合叠加层。/jetson-build-source编译复合叠加层并负责载板配置中OVERLAY_DTB_FILE+=的注册。

自主式而非表格驱动 — 传感器列表通过运行时通配匹配树内按传感器的dtbo构建。没有_THOR_CAMERAS字典,没有questions.json,也没有Python渲染器参与提问。

不进行ODMDATA编辑 — 摄像头不消耗UPHY通道(CSI使用独立的PHY池)。本技能仅生成内核DT叠加层;载板配置中的ODMDATA行不受本技能影响。

输出为一次提交

  • 摄像头fragment@N代码块(若尚未存在,则在复合叠加层根上加上jetson-header-name)追加到符合../../references/bsp-customization-kernel-dtb.md的复合自定义叠加层.dts → 提交到bsp_sources/硬件仓库。/jetson-build-source将复合叠加层编译为.dtbo并拥有其Makefile和烧写配置注册。

何时调用

  • 用户说“开启摄像头”、“配置CSI”、“连接Hawk / Owl / IMX传感器”、“MIPI摄像头”、“GMSL摄像头”,或要求在定制载板上引入tegra-capture-vi / NVCSI。
  • 已烧写但系统启动后v4l2-ctl --list-devices没有显示tegra-capture-vi通道,或需要确认新子卡上的传感器枚举。
  • 传感器已启用过,用户希望添加另一个(多传感器引入)。

前置条件:

  • 活动配置文件包含reference_devkit:custom_carrier:块。
  • <source.root_path>/Linux_for_Tegra/.git存在(由/jetson-init-source创建)。
  • /jetson-derive-carrier已运行 —— 载板烧写配置分支已存在于叠加层跟踪器中。
  • <source.root_path>/bsp_sources/hardware/nvidia/<chip-dir>/nv-public/overlay/存在,并包含树内的按传感器.dtsi文件(由/jetson-init-source的分支A归档提取)。
  • <source.root_path>/bsp_sources/kernel/kernel-noble/include/dt-bindings/包含cpp所需的宏头文件(如果用了分支B可能需要先运行source_sync.sh —— 见下文步骤5a.i)。
  • 已在提示中注册或提供了事实来源文档:摄像头开发指南(在bsp_developer_guide镜像中或独立路径)、适配指南 §Camera、载板原理图、SoC TRM、模块设计指南。
  • dtccppfdtoverlay在PATH中。

流程

详细的分步流程(第1~7步,含所有表格、代码块和关卡)位于references/procedure.md。摘要如下:

  1. 步骤1 — 解析活动目标 + 打开事实来源文档。
  2. 步骤2 — 通过通配树内按平台摄像头dtbo枚举支持的传感器;分为DPHY直连 / GMSL / 定制三类。绝不自创传感器。
  3. 步骤3 / 3a — 对照DTSI、摄像头开发指南、适配指南 §Camera、SoC TRM、模块设计指南、原理图和载板引脚映射交叉检查载板和模块支持。先呈现布线表,然后发出确认或定制关卡。
  4. 步骤4(仅定制路径) — 按批次向用户提问传感器布线,问题由载板引脚映射自动预填。
  5. 步骤5 — 向复合自定义叠加层.dts中追加恰好一个/* custom-bsp: camera:<sensor> */代码块(见../../references/bsp-customization-kernel-dtb.md)。克隆路径用cpp展开树内DTSI;定制路径内联步骤4答案 + 模式表。将jetson-header-name幂等地设置到复合叠加层根上。用dtc + fdtoverlay验证(预编译单代码块关卡;编译后深层树唯一性关卡)。通过工作流的提交消息预览关卡提交。
  6. 步骤6 — 用pin_verifier.py验证附带的CAM引脚SFIO(cam_i2c_*extperiph<m>_clk、复位/PWDN/PWR_EN GPIO);将不匹配项路由到/jetson-customize-pinmux
  7. 步骤7 — 原子写入运行状态JSON伴生文件到<workspace>/target-platform/<profile-stem>.jetson-customize-camera.json,并输出标题;然后按照references/procedure.md步骤7通过连续的AskUserQuestion提示驱动下游下一步链。**该链是文档化的工作流关卡,不是澄清性问题 —— 自动模式也不豁免。**绝不要用打印的“下一步:…”行代替这些提示。

注意事项

  • 双代码块陷阱。 只向复合叠加层贡献一个带摄像头标记的fragment@N。第二个携带状态覆盖的代码块会触发dtc深层合并 → 重复的兄弟子树(例如两个tca9546@70)→ 运行时首匹配会丢弃dtsi提供的深层树,导致摄像头无法枚举。仅以本技能的标记(步骤5c)为关卡。
  • 复合叠加层根compatible是全局拥有的,不由本技能负责。 不要根据任何树内按传感器dtbo的compatible(由开发套件SKU门控)来扩展它。若需要则修复复合叠加层根。
  • jetson-header-name取自任何树内按传感器dtbo。 固定载板无关;读取一次,粘贴到元数据根。
  • 不要同时将树内按传感器dtbo追加到OVERLAY_DTB_FILE 同时注册自己渲染的叠加层和树内tegra<soc>-p3971-camera-<sensor>-overlay.dtbo会创建幽灵子设备绑定,破坏摄像头枚举。
  • 存根叠加层是一个已知陷阱。 提交只有tegra-capture-vi { status="okay"; num-channels=<N>; }而没有端口 / 传感器 / nvcsi主体的叠加层会破坏摄像头(“所有通道初始化失败”)。必须通过cpp + dtc拼接入完整的传感器主体。
  • 传感器模式表必须拼接,绝不能手写。mode<N>sensor_modespixel_phase —— 从最接近的树内DTSI逐字复制。
  • camera_common_regulator_get (null) ERR: -EINVAL = 缺少avdd-reg / iovdd-reg / dvdd-reg字符串 —— 拼接完整传感器主体;常开电源轨回退到虚拟稳压器。
  • 外部&label引用必须存在于基础DTB的__symbols__中。 当标签缺失时使用target-path = "/tegra-capture-vi";否则fdtoverlay将以FDT_ERR_NOTFOUND退出。
  • cpp找不到dt-bindings/gpio/gpio.h: No such file = L4T源码树未就绪。重新运行/jetson-init-source(分支B的source_sync.sh获取头文件)。绝不要伪造宏展开结果。
  • 不做ODMDATA编辑,不编辑烧写配置。 摄像头不消耗UPHY通道。载板配置中的ODMDATA="..."不受影响。OVERLAY_DTB_FILE+=/jetson-build-source步骤5.0a负责——本技能绝不触碰载板烧写配置。
  • 不改动<bsp_image.root_path>的上游BSP。 所有修改都落在<source.root_path>/Linux_for_Tegra/(叠加层跟踪器)和<source.root_path>/bsp_sources/(叠加层.dts)下,遵循“原始+定制提交”模式。

参考资料