# 烧录问题排查

## 问题：`west flash` 报错 `ModuleNotFoundError: No module named 'nrf_common'`

## 原因

NCS 的 Python 依赖没有正确安装。`west flash` 需要 NCS 特定的 Python 模块。

## 解决方案

### 方案 1：使用 nrfjprog 直接烧录（推荐，最简单）

1. **确保已编译**：
   ```powershell
   cd firmware-ncs
   west build -b nrf52dk_nrf52832
   ```

2. **擦除设备**：
   ```powershell
   nrfjprog --eraseall
   ```

3. **烧录固件**：
   ```powershell
   nrfjprog --program build\zephyr\zephyr.hex --chiperase --verify --reset
   ```

### 方案 2：使用 nRF Connect Programmer（图形界面）

1. 打开 **nRF Connect for Desktop** → **Programmer**
2. 连接设备
3. 点击 **Erase all**
4. 点击 **Add file**，选择 `firmware-ncs/build/zephyr/zephyr.hex`
5. 点击 **Write**

### 方案 3：修复 west flash（需要安装 NCS Python 依赖）

如果您想使用 `west flash`，需要：

1. **激活 NCS 环境**（如果使用虚拟环境）：
   ```powershell
   # 如果 NCS 安装在 C:\nrf
   cd C:\nrf
   .\zephyr\scripts\activate.bat
   ```

2. **或者安装 NCS Python 依赖**：
   ```powershell
   cd C:\nrf
   pip install -r requirements.txt
   ```

3. **然后使用 west flash**：
   ```powershell
   cd firmware-ncs
   west flash
   ```

## 推荐方法

**推荐使用方案 1（nrfjprog）**，因为：
- 不需要额外的 Python 依赖
- 更直接、可靠
- 适合开发和调试

## 完整烧录脚本

创建一个 PowerShell 脚本 `flash.ps1`：

```powershell
# flash.ps1
Write-Host "正在擦除设备..."
nrfjprog --eraseall

Write-Host "正在烧录固件..."
nrfjprog --program build\zephyr\zephyr.hex --chiperase --verify --reset

Write-Host "烧录完成！"
```

使用方法：
```powershell
cd firmware-ncs
.\flash.ps1
```

## 验证烧录

烧录后，检查设备：
```powershell
nrfjprog --readregs
```

如果看到正常的寄存器值，说明烧录成功。

## 常见问题

### Q: 为什么 west flash 需要额外的模块？
A: `west flash` 使用 NCS 特定的 Python 脚本来处理烧录，这些脚本需要额外的依赖。

### Q: 使用 nrfjprog 有什么限制？
A: 没有限制，`nrfjprog` 是 Nordic 官方的烧录工具，功能完整。

### Q: 如何自动烧录？
A: 可以在 VSCode 的 `tasks.json` 中配置任务，或者使用上面的 PowerShell 脚本。

