Jetson BSP 源码构建
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/jetson-build-source。
技能介绍
要解决什么问题
在 Jetson BSP 定制流水线里,你在 /bsp_sources/ 里改的是内核侧源码(设备树、OOT 驱动、内核本身),但不会也不应该手工把 .dtb、.ko、Image 拷进 /Linux_for_Tegra/。你需要一次可重复的构建步骤:根据「哪些仓库相对上次成功构建变脏了」决定重建范围,调用 NVIDIA 上游已有的 kernel_src_build_env.sh 与 Makefile 原语,把产物留在源码树内,并写一份清单给 /jetson-promote-image 做部署。
纯覆盖层文件(如 nvpmodel.conf、BPMP DTB 的 dtc 循环)不走本技能;内核-DT 定制应进入复合覆盖层插槽,本技能负责在 dt/full 模式下注册 dtbo-y 与 OVERLAY_DTB_FILE。
技能如何工作
- 前置校验:解析活跃目标配置;缺少
bsp_image:、source.toolchain:、空的/bsp_sources/或缺失kernel_src_build_env.sh时,路由到jetson-init-image/jetson-init-source等设置技能,不在此解析工具链(只读source.toolchain并校验CROSS_COMPILE末尾短横线)。 - 脏检测:用
$STATE对比各内核侧仓库 HEAD 与未提交改动;Customize 提交后可被自动链接触发。 - 四种模式:
auto(默认)映射脏集 →dt/oot/kernel/full;也可传参强制单一模式。full顺序为 kernel → oot → dt。 - 构建与清单:委托
/Linux_for_Tegra/source/的 make 目标作用于/bsp_sources/;按「追溯到脏」规则写入.build-manifest.yaml(原子mv),成功后更新.build-state.yaml。
边界与注意点
- OOT 单独构建要求此前至少跑过
kernel或full,否则应拒绝并提示先构建内核头文件环境。 - R36.x Branch-A 可能在
$KS/Makefile留下 dGPU/OpenRM 编排器,导致交叉modules出现'-mlittle-endian' unrecognized;通用设置是安全网,根因修复在jetson-init-source提取阶段。 - 复合覆盖层 Makefile 须在最后一个字面命名的
dtbo-y +=之后插入,否则.dtbo会被静默丢弃。 - 主机硬性依赖:
flex、bison、libssl-dev;构建输出不进覆盖层 git 历史,部署契约是清单而非直接写 BSP 映像树。
使用场景
- customize 技能提交内核侧仓库后,需要按脏仓库自动触发 dt/oot/kernel/full 重建并生成 promote 清单
- 从同事处 git pull 了 bsp_sources 新提交,要在不重复手工 make 的情况下对齐上次构建状态
- 只改了六个 OOT 仓库里的驱动,希望单独跑 oot 模式而不是整包 full
- 中断的自动链构建失败后,手动调用本技能并指定 kernel 或 full 以恢复可部署产物
适合人员
- 负责载板内核-DT 与复合 overlay 的 BSP 集成工程师,提交定制后需稳定进入构建与烧录配置注册
- 维护 Jetson 内核与 OOT 模块的嵌入式 Linux 开发者,依赖 source.toolchain 与脏 HEAD 标记做增量重建
- 在「设置→定制→构建→部署」工作流中值守 promote 前环节的平台工程师,需要可追溯的 build manifest
- R36/R38 多版本 BSP 环境下排查 Makefile 与 modules 交叉编译问题的现场支持工程师