Jetson 时钟定制
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/jetson-customize-clocks。
技能介绍
要解决什么问题
在 Jetson 上做性能基准、功耗对比或复现「固定频率」问题时,仅靠运行时的 nvpmodel 或 sysfs 往往不够:EMC 仍会走 DVFS,CPU/GPU 的有效上限还受 BPMP 设备树 与启动脚本两层约束。若直接在 Linux_for_Tegra/bootloader/ 里改文件,又会破坏覆盖层差异跟踪,后续 jetson-promote-image 可能变成空操作。
本技能面向 映像构建阶段:在烧录前,通过规范工作流改两处输入——bootloader/ 下的 BPMP DTB(时钟 max-rate-custom、EMC DVFS 门控)以及 rootfs 里的 nvpower.sh(cpufreq/devfreq 调节器与可选的 sysfs 速率边界)。
技能如何工作
- 前置校验:解析活跃目标配置;缺少 BSP 映像、
Linux_for_Tegra/或源覆盖层时,路由到兄弟技能(如jetson-init-image、jetson-init-source、jetson-set-target)。 - 操作 1 — BPMP DTB:按 BPMP-DTB 定制协议反编译、编辑 DTS、重编译;所有写入落在 覆盖层跟踪器 内,而非直接改部署输出目录。典型编辑包括:命名时钟节点上的
max-rate-custom(仅降低硬上限,不能越过max-rate-maxn);禁用/启用 EMC DVFS(bwmgr/cactmon,T26x 还需/delete-node/ osp-controller)。 - 操作 2 —
nvpower.sh:在覆盖层中做原始导入 + 定制提交,调整set_cpufreq_governor/set_devfreq_governor及最小/最大/静态速率,避免只读上游被静默覆盖差异。 - 部署链:
jetson-promote-image→jetson-flash-image;新 DTB 与脚本在下次启动生效。另有「全 MAXN 压力测试」配方,组合 BPMP、nvpower 与兄弟技能jetson-customize-nvpmodel。
边界与注意点
- 仅构建时定制:运行中目标上的实时调频不在范围内。
- 有效上限是双层:运行时约为
min(BPMP cap, 当前 nvpmodel 模式 cap);只改 BPMP 而 nvpmodel 仍钳制时,改模式后频率可能「复位」。 - T23x GPU 需同时处理
nafll_gpusys与各nafll_gpcX;T26x EMC 禁用 不能只关bwmgr,须完整三件套编辑。 nvpower.sh随nvidia-l4t-init升级可能被覆盖;长期配置宜考虑 systemd drop-in 或辅助脚本。- ODMDATA 令牌 在烧录时可能覆盖部分 BPMP 属性;勿触碰
max-rate-maxn与lateinit。
使用场景
- 在烧录前改覆盖层里的 BPMP DTB,把 CPU 或 GPU 的 max-rate-custom 设到目标值,避免跑分后频率漂移
- 为内存带宽压测在 DTS 里关闭 EMC DVFS(含 T26x 的 osp-controller 删除),再 promote 并烧录验证
- 需要在启动脚本里固定 cpufreq/devfreq 为 performance,在 rootfs 覆盖层编辑 nvpower.sh 后走完整部署链
- 做 MAXN 全开压力测试时,一次组合 BPMP 时钟编辑、nvpower 调节器与默认 nvpmodel 模式写进映像
适合人员
- 维护 Linux_for_Tegra 覆盖层、每次 DTB/nvpower 改动都要可 git 追踪的 Jetson 平台集成工程师
- 烧录前就要定死 CPU/GPU/EMC 行为、不接受仅靠运行时 sysfs 临时改频的嵌入式性能验证工程师
- 走 jetson-init-image → promote-image → flash-image 流水线、负责 Thor/Orin 多 SKU BPFDTB 解析的映像构建人员
- Bring-up 工程师需在 T23x 与 T26x 上分别处理 GPU 多节点上限与 EMC DVFS 门控差异并排查文档中的故障表