【AI】基于cursor创建高通 SA522 平台 Yocto 开发SKILL

张开发
2026/4/8 8:10:46 15 分钟阅读

分享文章

【AI】基于cursor创建高通 SA522 平台 Yocto 开发SKILL
创建一个针对高通 SA522 平台 Yocto 开发的专用 SKILL.md 模板优化 token 使用并覆盖内核驱动移植、Bug 调试和应用层开发。文件结构# 创建项目级 skillmkdir-pyour-project/.cursor/skills/yocto-sa522/touchyour-project/.cursor/skills/yocto-sa522/SKILL.mdSKILL.md 完整模板--- name: yocto-sa522-dev description: 高通 SA522 平台 Yocto 开发专家 - 内核驱动移植、Bug 调试、应用层开发 version: 1.0.0 author: your-team tags: [yocto, qcom, sa522, kernel, android, embedded] --- # 高通 SA522 Yocto 开发助手 ## 平台信息 ### 硬件规格 - **SoC**: Qualcomm SA522 (QCM6490) - **CPU**: Kryo 670, 8核 (1x2.7GHz 3x2.4GHz 4x1.9GHz) - **GPU**: Adreno 643 - **NPU**: 13 TOPS - **内存**: 8GB/12GB LPDDR5 - **存储**: 128GB/256GB UFS 3.1 - **OS**: Android 13/14 (Yocto 构建) ### Yocto 层结构poky/├── meta-qcom/ # 高通 BSP 层│ ├── recipes-bsp/ # 固件、驱动│ ├── recipes-kernel/ # 内核配置│ └── recipes-core/ # 核心组件├── meta-sa522/ # 产品特定层自定义│ ├── recipes-kernel/ # 内核补丁、驱动│ ├── recipes-bsp/ # 设备树、固件│ └── recipes-apps/ # 应用层代码└── build/ # 构建输出## 工作流规则 ### 1. 内核驱动移植流程 当用户修改内核相关代码时 **步骤 1: 代码变更检测** - 文件路径包含 recipes-kernel/ 或 linux-qcom/ - 扩展名: .c, .h, .dts, .dtsi, .bbappend, .patch **步骤 2: 自动验证** bash # 检查语法 bitbake linux-qcom -c do_kernel_checksyms # 检查设备树 dtc -I dts -O dtb arch/arm64/boot/dts/qcom/sa522-*.dts步骤 3: 增量编译# 只编译内核不重新构建整个镜像bitbake linux-qcom-ccompile-fbitbake linux-qcom-cdeploy步骤 4: 快速刷机测试# 仅更新 boot 镜像adbrebootbootloader fastboot flash boot tmp/deploy/images/sa522/boot.img fastbootreboot2. Bug 调试流程当用户报告问题或分析日志时步骤 1: 日志收集# 自动抓取关键日志adb shelldmesg|grep-iE(error|fail|warn|sa522|qcom)kernel_err.log adb logcat-d-ball|grep-iE(exception|crash|ANR|sa522)system_err.log步骤 2: 日志分析要点内核崩溃: 检查PC is atLR is at定位函数设备树错误: 查找OF: ERROR或failed to get驱动加载失败: 搜索probe defer或-EPROBE_DEFER内存问题: 关注oom-killer,lowmemorykiller步骤 3: 常见修复模式错误类型典型原因修复方向probe defer依赖资源未就绪检查depends-on属性clk not found时钟配置缺失更新设备树clocks节点regulator failed电源域配置错误检查regulator-boot-ongpio request fail引脚复用冲突核对pinctrl配置3. 应用层代码修改流程当用户修改应用层代码时步骤 1: 变更类型判断.cpp,.c,.h→ 原生应用Native.java,.kt→ Android 应用需 APK 构建.bb,.bbappend→ 配方修改步骤 2: 快速编译# 原生应用bitbakerecipe-name-ccompile# Android 应用bitbakerecipe-name-cdo_compile步骤 3: 热更新测试# 推送到设备测试不重新烧录整个系统adb push tmp/deploy/images/sa522/app/data/local/tmp/ adb shellchmodx /data/local/tmp/appadb shell /data/local/tmp/app专用命令速查Yocto 构建命令# 初始化环境sourcepoky/oe-init-build-env build-sa522# 完整构建bitbake sa522-image-core# 仅内核bitbake virtual/kernel-ccompile# 仅模块bitbake virtual/kernel-cdo_compile_kernelmodules# 清理bitbakerecipe-ccleanall设备调试命令# 进入 ADB shelladb shell# 查看内核日志实时adb shelldmesg-w# 查看设备树节点adb shellls/sys/firmware/devicetree/base/# 查看 regulator 状态adb shellcat/sys/kernel/debug/regulator/regulator_summary# 查看 clk 树adb shellcat/sys/kernel/debug/clk/clk_summary# 查看 gpio 状态adb shellcat/sys/kernel/debug/gpio高通特有调试# QCOM 子系统日志adb shell logcat-sQCOM*:V# 查看 RPM 状态adb shellcat/sys/class/rpm/rpm_stats/reset_stats# 查看 SMD 通道adb shellcat/sys/class/smd/*/state代码审查清单内核驱动代码设备树节点与驱动of_match_table匹配probe函数检查返回值使用-EPROBE_DEFERremove函数正确释放资源clk_put, regulator_put使用devm_*系列函数简化资源管理避免硬编码使用设备树配置应用层代码检查 SELinux 权限avc denied 日志使用 Android 标准 HAL 接口避免直接访问/dev/节点使用 SDK API处理电源管理wake_lock 使用自动触发规则当检测到以下操作时自动建议修改.dts或.dtsi→ 建议执行设备树编译检查修改*.c驱动代码→ 建议增量编译并刷机测试修改*.bb或*.bbappend→ 建议配方语法检查 (bitbake -e)用户输入 “crash” 或 “panic”→ 自动抓取日志并分析输出格式所有响应遵循以下结构## 分析结果 [问题描述/变更影响] ## 执行命令 bash [具体的 bitbake/adb 命令]预期结果[执行后的验证方法]下一步[可选的后续操作]## 限制说明 - 不执行 bitbake cleanall 等破坏性操作除非用户明确确认 - 自动编译前检查磁盘空间df -h tmp/ - 大型构建30分钟建议先执行 bitbake -c fetchall 预下载源码安装步骤# 1. 创建 skill 目录mkdir-p.cursor/skills/yocto-sa522/# 2. 保存上述内容到 SKILL.mdcat.cursor/skills/yocto-sa522/SKILL.mdEOF [paste the content above] EOF# 3. 重启 Cursor 或刷新窗口Cmd/Ctrl Shift P →Developer: Reload Window# 4. 验证加载# 在 Composer 中输入 检查 SA522 内核配置# 应该能看到 skill 被激活上下文中有 yocto-sa522-dev 标识Token 优化说明优化点说明分层结构使用---分隔元数据和内容便于 Cursor 快速解析规则明确每个工作流有清晰的触发条件避免无关场景加载命令具体提供可直接执行的命令减少 AI 生成错误命令的概率格式规范使用标准 Markdown避免特殊字符导致 token 膨胀预估 Token 消耗: ~800-1000 tokens单个 skill远低于多 skill 同时加载的场景。使用示例在 Cursor Composer 中输入“我修改了sa522-display.dtsi的 DSI 配置帮我检查并编译”Cursor 会自动识别设备树修改触发规则 1执行dtc语法检查运行bitbake linux-qcom -c compile -f提示刷机命令

更多文章