kukucaicndy/embedded_ai_skills/nrf-connect-project-init
Claude Code and agent skill by kukucaicndy/embedded_ai_skills
- community
Checking that the SKILL.md file is still in the repository.
Initialize a new nRF528xx development project. 自动侦测芯片型号,与用户交互确认硬件资源(GPIO/SPI/I2C/UART),选择编程语言,搭建 CMake 项目框架,完成编译烧录验证。Call after nrf-connect-sdk-setup is complete and the user wants to start a new project.
Install
npx vskill@latest install kukucaicndy/embedded_ai_skills/nrf-connect-project-initSKILL.md
nRF528xx 项目初始化
引导用户通过人机交互方式完成新项目的创建、配置、编译和烧录。
Step 1: 确保开发环境到位
⚠️ 不能仅用 `which` 检查。west/JLinkExe 可能已安装但不在 PATH 中。必须复用nrf-connect-sdk-setup的检测脚本。
1.1 检查交叉编译器
若缺失 → 提示用户先运行 nrf-connect-sdk-setup skill。
1.2 检查 JLinkExe(含非标准路径检测)
若缺失 → 提示用户先安装 J-Link 驱动。若找到但不在 PATH,记录路径供烧录使用。
1.3 检查 west(含非标准路径检测)
若缺失 → 提示先运行 nrf-connect-sdk-setup。记录 WEST_BIN 路径,后续所有 west 命令需确保 PATH 包含其目录。
1.4 检查 NCS workspace
1.5 记录环境变量
后续所有 west build / west flash 命令前必须设置:
Step 2: 侦测芯片型号
通过 AskUserQuestion 工具与用户交互:
2.1 自动侦测芯片型号
引导用户将 J-Link 连接芯片并供电(VTref > 3.0V),然后运行:
如果连接成功,从 CPUID register 读取芯片信息:
0x410FC241→ nRF52840 (Cortex-M4)0x412FC231→ nRF52832 (Cortex-M4)0x411FC231→ nRF52810 (Cortex-M4)
Zephyr board 名称对应:nrf52840dk_nrf52840,nrf52832dk_nrf52832,nrf52810dk_nrf52810等
2.2 手动指定(自动侦测失败时)
通过 AskUserQuestion 让用户选择芯片型号:
- "nRF52840 (Recommended)"
- "nRF52832"
- "nRF52810"
- "nRF52833"
- "nRF52820"
- "nRF52811"
- "nRF52805"
- "Other (请在 Other 中填写完整型号)"
Step 3: 确认开发内容与硬件资源
通过 AskUserQuestion 与用户逐项确认:
3.1 编程语言
- "C (Recommended)"
- "C++"
3.2 需要的功能模块(多选)
- "GPIO (LED/按键)"
- "UART/串口 (调试输出)"
- "SPI (显示屏/传感器)"
- "I2C (传感器)"
- "PWM"
- "ADC"
- "BLE (蓝牙低功耗)"
- "USB"
- "其他(请在 Other 中补充)"
3.3 硬件资源详情
引导用户填写每个模块的具体引脚和配置。例如:
- GPIO: "LED 连接到 P0.15,低电平点亮"
- UART: "TX=P0.06, RX=P0.08, 波特率 115200"
- SPI: "SCK=P0.27, MOSI=P0.26, MISO=P0.29, CS=P0.28"
- I2C: "SDA=P0.17, SCL=P0.20"
通过多次 AskUserQuestion 收集完整硬件配置。
Step 4: 确认项目基本信息
- 项目名称: 用户输入(默认:
nrf52_project) - 项目路径: 用户指定(默认:
$HOME/projects/<项目名>) - 目标板: 从 Step 2 确定的 Zephyr board 名称
Step 5: 确认 bootloader 布局
通过 AskUserQuestion 询问用户:
- "开发板有无 bootloader?"
- "无 bootloader,APP 从 0x0 开始 (Recommend)"
- "有 UF2 bootloader(如 Nice!Nano),APP 从 0x26000 开始"
- "自定义偏移(请填写 0x 地址)"
⚠️ 烧录偏移的影响:-CONFIG_FLASH_LOAD_OFFSET=0x26000只影响 hex/bin 文件的加载地址- 使用west flash或JLinkExe loadfile烧录merged.hex时,hex 文件内含地址信息,会自动烧录到正确偏移- 无需手动erase或loadbin指定偏移地址
Step 6: 检查目标板卡的设备树定义(⚠️ 必须执行)
⚠️ 在生成 overlay 前,必须先读取目标板卡的 DTS 文件,了解已有引脚定义,避免:1. 创建冗余的 LED/按键节点(板卡已有)2. 使用已废弃的 devicetree 语法(如tx-pin,Zephyr 3.5+ 需用 pinctrl)
检查要点:
- LED 节点:板卡已定义哪些 LED?引脚号?active-high/low?
- 按键节点:板卡已定义哪些按键?
- UART 引脚:是否已通过 pinctrl 配置?引脚是否匹配用户需求?
- SPI/I2C 引脚:同上
overlay 生成原则:
- 如果板卡已有匹配的 LED/按键节点 → 仅修改
aliases指向,不新建节点 - 如果引脚不匹配 → 在 overlay 中用 pinctrl 方式覆盖(参考板卡的
-pinctrl.dtsi语法) - 绝对不要使用 `tx-pin`/`rx-pin` 等旧语法,必须用
pinctrl-0/pinctrl-names
Step 7: 生成项目框架
在确认的目标路径创建 CMake 项目:
项目目录结构
CMakeLists.txt 模板
prj.conf 模板
src/main.c 模板 (C,含 UART 输出)
boards/<board>.overlay 生成规则(⚠️ 根据 Step 6 检查结果选择)
情况 A:板卡已有匹配的 LED 节点(推荐,如 nrf52840dk)
仅修改 alias 指向已有节点,不新建节点:
情况 B:板卡没有用户所需的 LED 引脚
新建 LED 节点:
情况 C:需要修改 UART 引脚(⚠️ 必须用 pinctrl,不能用 tx-pin)
Zephyr 3.5+ 已废弃 `tx-pin`/`rx-pin` 属性,必须使用 pinctrl 方式。
参考板卡的 `-pinctrl.dtsi` 文件了解正确的 pinctrl 语法。
Step 8: 编译项目
⚠️ 编译前必须设置环境变量:
编译失败常见问题
| 错误 | 原因 | 解决方案 | |
|---|---|---|---|
'tx-pin' appears in ... but is not declared in 'properties:' | Zephyr 3.5+ 废弃旧 UART 语法 | 改用 pinctrl 方式(见 Step 7 情况 C) | |
DT_ALIAS(led0) 找不到节点 | overlay alias 未正确指向 | 检查 overlay 中 led0 = &xxx 是否对应已有节点 | |
undefined reference to gpio_pin_configure_dt | prj.conf 未启用 GPIO | 确认 CONFIG_GPIO=y | |
Deprecated BOARD=xxx specified | 旧板卡名称格式 | 警告不影响编译,可忽略 | |
FATAL ERROR: Python dependencies missing | Python 依赖不完整 | 运行 pip3 install --user -r $NCS_DIR/zephyr/scripts/requirements-base.txt |
Step 9: 烧录验证
9.1 烧录方式选择
通过 AskUserQuestion 询问:
- "JLink 烧录(west flash)(Recommended)"
- "JLink 手动烧录(JLinkExe + CommandFile)"
- "生成 UF2 文件拖拽烧录"
9.2 方式 A:west flash(推荐)
⚠️ 若 west flash 报 `FATAL ERROR: Python dependencies missing`:```bashpip3 install --user -r "$HOME/ncs/zephyr/scripts/requirements-base.txt"```若 west flash 执行后无输出或静默退出:可能是 JLinkExe 需要 USB 权限但被 sandbox 限制。改用方式 B。
9.3 方式 B:JLinkExe 手动烧录(west flash 失败时使用)
芯片型号映射:- nRF52840 →nRF52840_xxAA- nRF52832 →nRF52832_xxAA- nRF52810 →nRF52810_xxAA
9.4 烧录后验证
观察 LED 是否按预期闪烁,或通过串口查看 printf 输出:
按Ctrl+A然后K然后Y退出 screen。
完成标志
- [x] 项目目录创建完成
- [x]
west build编译成功 - [x] 固件烧录到芯片并运行(LED 闪烁 / 串口输出正常)
- [x] 用户确认开发环境可以开始调试
完成后提示用户:后续开发中遇到问题可使用 nrf-528xx-debug skill 协助排错。
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingnrf-528xx/nrf-connect-project-init/SKILL.md
Popularity
- Repository stars
- 60
- Repository forks
- 12
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kukucaicndy/embedded_ai_skills/nrf-connect-project-init)